[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定したテキストファイルを指定したシートに読み込むVBAについて』(らんぷ)
初めまして。
VBAの勉強を始めたばかりです。
よろしくお願いします。
テキストファイルを読み込むVBAを作成したいです。
過去の質問を切り貼りして、テキストファイルを好きなように区切ってから取り込むプログラムを作りました。
このVBAに下記のような改良を加えたいと考えております。
・既存の指定したシートにテキストファイルを読み込む。
同じブックでも違うブックでもいいのですが、あらかじめ数式が書いてあるシートに対して、テキストの内容を貼り付けたいです。
現在のVBAはこのようになっております。
もしかしたら的外れの質問になっているかもしれませんが、なにかアドバイスを頂けると幸いです。
Sub Sample()
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename("テキストファイル,*.txt")
Workbooks.OpenText Filename:=OpenFileName, _ DataType:=xlDelimited, _ comma:=True, _ Space:=True, _ other:=True, _ otherchar:="xx" '<※好きな区切り文字を入れる>
'<列幅を内容に合わせて調節> Columns("A:G").Select Columns("A:G").EntireColumn.AutoFit Range("A1").Select
End Sub
< 使用 Excel:Excel2013、使用 OS:Windows7 >
現在のコードでは、カレント(ブックやシートを指定しない場合のデフォルト)が開いたテキストファイルに変わってしまうので、貼り付けたい先のシートをWorksheetオブジェクトの変数に覚えさせておき、ここに任意の代入を行えば良いでしょう。
(開くファイルも、別の変数にして明示するのがベストです)
Dim wk1 As Worksheet
Set wk1 = ActiveSheet
ここは現状のファイルを開く処理 … wk1.Range("A1") = Range("A1") wk1.Range("B1") = Range("D1") … ファイルをCloseする処理 (???) 2016/08/22(月) 10:44
貼り付けたい先のシートをWorksheetオブジェクトの変数に覚えさせておき、 のWorksheetオブジェクトの変数とは何を指すのでしょうか?
素人質問で申し訳ございません。
(開くファイルも、別の変数にして明示するのがベストです) 違う変数とは、OpenFileName以外ということでしょうか?
まだいらっしゃったらアドバイスをお願いいたします!
(らんぷ) 2016/08/22(月) 23:05
また、開くファイルについては、OpenTextメソッドはExcel2013から追加されたものなので、2010の私の環境では確認できませんが、予想でこんな感じです。
Dim wk2 As WorkSheet
Set wk2 = Workbooks.OpenText(Filename:=OpenFileName, _ DataType:=xlDelimited, _ comma:=True, _ Space:=True, _ other:=True, _ otherchar:="xx") '<※好きな区切り文字を入れる>
こうしておくと、以下のように書くことで、動いている最中にExcel操作して、他のシートをアクティブに変えたりしても、対象のシートが変わる事が無いので、確実に動作してくれるようになります。
wk1.Range("A1") = wk2.Range("A1") (???) 2016/08/23(火) 09:17
Dim wk2 As Workbook
Set wk2 = Workbooks.OpenText(Filename:=OpenFileName, _ DataType:=xlDelimited, _ comma:=True, _ Space:=True, _ other:=True, _ otherchar:="xx") '<※好きな区切り文字を入れる>
wk1.Range("A1") = wk2.Sheets(1).Range("A1")
(???) 2016/08/23(火) 09:24
申し訳ありません。おっしゃる通りだと思います。
切り貼りして以下のコードを作製したのですが、実行を押すと
OpenTextのところで、Function または変数が必要です。というエラーがでます。
これは2013から追加された機能のようですが、原因がお分かりでしたら再度お教え頂けると
幸いです。何度も何度も本当にありがとうございます。
Sub OpebText()
Dim OpenFileName As String Dim wk2 As Workbook
'<テキストファイルのパスを取得> ←(1) OpenFileName = Application.GetOpenFilename("テキストファイル,*.txt")
'<「OpenText」メソッドを使ってテキストファイルを開く> ←(2) Set wk2 = Workbooks.OpenText(Filename:=OpenFileName, _ DataType:=xlDelimited, _ comma:=True, _ Space:=True, _ other:=True, _ otherchar:="a")
'<列幅を内容に合わせて調節して見やすく> ←(3) Columns("A:G").Select Columns("A:G").EntireColumn.AutoFit Range("A1").Select
End Sub
(らんぷ) 2016/08/23(火) 11:00
Workbooks.OpenText Filename:=OpenFileName, _ DataType:=xlDelimited, _ comma:=True, _ Space:=True, _ other:=True, _ otherchar:="xx" '<※好きな区切り文字を入れる>
Set wk2 = Workbooks(Workbooks.Count) (???) 2016/08/23(火) 11:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.