こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルのマクロでファイルからデータを取り込みたい

以下のような操作をするマクロを作りたいのですが、やり方を教えていただけるかあるいは文献やURLを紹介していただけないでしょうか?

テキストファイルに以下のように変数と数値が並んでます。
A=1.00
B=2.00
C=1.43
変数の数は数十個あります。これをエクセルのファイルに読み込んで
AA 1.00  BB 2.00
CC 1.43
などとように指定の場所に数字を記入します。テキストファイルは5個程度あり、全部について行います。読み込む先のエクセルファイルにシート別に記入したいのです。

マクロの経験は、ボタンを押してから再び押して終了するまでの間の操作をマクロ登録する方法で2,3回作ったことがある程度です。今回はファイル操作もあるのでこの方法がつかえません。

投稿日時 - 2008-08-02 00:39:43

QNo.4221422

暇なときに回答ください

質問者が選んだベストアンサー

一例です。
テキストファイル名は、シート名+.txtとする(Sheet3.txt等)
内容は、
A1=A列の1行目です
B2=B列の2行目です
C5=C列の5行目です
D6=D列の6行目です
E7=E列の7行目です
と変数にセル番号が入ってる。(入らない場合は工夫が要ります)

マクロ(モジュール)に以下の内容を登録
Sub OpenTextFileTest()
Const ForReading = 1, ForWriting = 2, ForAppending = 3
Dim fs, f, Counter1, Counter2, Filename, SheetName
Set fs = CreateObject("Scripting.FileSystemObject")
FileToOpen = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt")
If FileToOpen <> False Then
Counter1 = 0: Counter2 = 0 ' 変数を初期化します。
Do
Counter1 = Counter2 + 1
Counter2 = InStr(Counter1, FileToOpen, "\")
Loop Until Counter2 < 1
Filename = Mid(FileToOpen, Counter1, 200)
SheetName = Mid(Filename, 1, Len(Filename) - 4)
Set f = fs.OpenTextFile(FileToOpen, 1, TristateFalse)
Do While f.AtEndOfLine <> True
s = f.ReadLine
arr1 = Split(s, "=")
RanG = arr1(0)
Worksheets(SheetName).Range(RanG).FormulaR1C1 = arr1(1)
Loop
f.Close
End If
End Sub

で、どうですか?

投稿日時 - 2008-08-02 18:37:19

お礼

ありがとうございます。
結果が出てから追加質問等を含めてお礼を書こうと思いましたが、先になりそうなので一旦締め切ります。

投稿日時 - 2008-08-24 23:24:19

このQ&Aは役に立ちましたか?

15人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

>マクロ登録する方法で2,3回作ったことがある
でしたらマクロの記録
データ 外部データの取り込み
最初のファイルを指定
シート2を選択
データ 外部データの取り込み
次のファイルを指定
と5つのファイルを実行
マクロの記録の終了
で近いマクロが記述できると思います。

投稿日時 - 2008-08-02 10:54:22

お礼

ありがとうございます。
結果が出てから追加質問等を含めてお礼を書こうと思いましたが、先になりそうなので一旦締め切ります。

投稿日時 - 2008-08-24 23:23:28

ANo.2

AA 1.00とは、A列にA 1.00と入力したいのですか?
>テキストファイルは5個程度あり、全部について行います。読み込む先のエクセルファイルにシート別に記入したいのです
5Sheetに分けてと言う意味ですか?

投稿日時 - 2008-08-02 10:14:06

お礼

AAは私が勝手に作った名前です。テキストファイルのAの値をエクセルシートの指定の場所に読み込みたいのです。他のBもCも同じです。

テキストファイル1はエクセルのシート1に、
テキストファイル2はエクセルのシート2に、
というように5シート作ります。1シート分のマクロが出来ていれば5回同じ操作をするものでもOKです。

投稿日時 - 2008-08-02 10:33:05

ANo.1

FileSystemObjectによるテキストファイルの操作法です。VBA本来の、BASICから来ている入出力方法もありますが、こちらの方が馴染みやすい気がします。他にもフォルダーやファイル操作の機能が充実しております。(多量のファイルを取り扱うには遅いとの話もありますが、5個なら問題にならないでしょう)

参考URL:http://officetanaka.net/excel/vba/filesystemobject/textstream.htm

投稿日時 - 2008-08-02 00:53:23

お礼

ありがとうございます。
結果が出てから追加質問等を含めてお礼を書こうと思いましたが、先になりそうなので一旦締め切ります。

投稿日時 - 2008-08-24 23:22:07

あなたにオススメの質問