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

解決済みの質問

Excelで外部ファイルの取り込み(データの更新)をマクロ化したい

C:\data のdataフォルダの中に「20060709.dat」「20060710.dat」「20060711.dat」・・・というようにファイル名に日付が入ったファイルがあります。

例えば、(データ)→(外部データの取り込み)で"sheet2"に「20060709.dat」を読み込んでいるとしします。

この時に"sheet1”のセルA1に「20060710」と入力してマクロボタンをクリックすると"sheet2"に「20060710.dat」を(データ)→(データの更新)で読み込むというような作業をマクロで自動化することは可能なのでしょうか?

可能であれば教えて頂きたいのですが。どうぞよろしくお願いします。

ちなみにマクロに関しては(自動記録)で作ったマクロを少しいじる程度の知識しかありません。Excel2000を使用しています。

以上、どうぞよろしくお願い致します。

投稿日時 - 2006-07-12 13:19:28

QNo.2271214

困ってます

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

人によるが
>マクロに関しては(自動記録)で作ったマクロを少しいじる程度の知識しかありません。がやる内容ではないように思う。
色々な知識が総合的に要り、私も手探り。
コードに関しては
(A)テキストファイルを開く
(B)シートの移動
のマクロの記録を組み合わせればできるようなものです。
参考に
http://www.bekkoame.ne.jp/~poetlabo/COMP/Excel/TIPS/textfile.htm
の3の問題です。
===
・・によく問題となるのは 3. でしょう。この機能は必ず、新規ブックを開いて新規シートに読み込むようになっています。そこで、レコードを特定のシートに読み込むには、新規シートに読み込んだ内容をそっくりコピーして、読み込み先シートに写すなどの処理が必要になったりします。プログラム処理としては、ムダが多すぎます。
===
と有るにもかかわらず、その方向でやってみました。
ーーーー
Sub Macro3()
Dim sh1 As Worksheet
Set sh1 = Worksheets("sheet1")
d = sh1.Range("A65536").End(xlUp).Row
For i = 2 To d
fn = sh1.Cells(i, "A")
MsgBox sh1.Cells(i, "A")
Sheets(i + 1).Select
Workbooks.OpenText Filename:= _
"C:\Documents and Settings\XXXX\My Documents\" & fn, Origin:=932, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=True _
, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
MsgBox "AAA= " & ActiveSheet.Name
MsgBox "BBB= " & Workbooks("Book1").Sheets(i + 1).Name
'--
Sheets(ActiveSheet.Name).Move Before:=Workbooks("Book1").Sheets(i + 1)
Next i

End Sub
ーー
実行の用意
●新規のBook1のSheet1のA2セル以下に、テキストファイルの名前を入れる。(拡張子つきで)
●Msgboxは確認の為に入れているもので、用済み後はコメント化してください。
●テキストファイルのあるフォルダ名を正しく変えてください。
XXXXの部分です。
●Comma:=True コンマ区切りデータでテストしました。
実行して、各行がセルごとにうまく別れなければ、データー区切り位置のマクロの記録をとって研究して、修正をしてください。
ーーー
これで方向性は間違ってないと思うが、自分のケースにあわせて、修正ができるレベルは、現状では無理かもしれない。

ーーー
このほかに、テキストデータをLine Inputで1行読んで
項目ごとに分解しセルに値をセットする方法も考えたが、どう分解したらよいか、質問にファイルの中身の実例が上げてなくて、コードを書くのが難しい。
こういうところを見ると、この質問者は回答に近いところまで考えてきている人か、どうか判るのです。

投稿日時 - 2006-07-12 15:29:59

お礼

ありがとうございます。ご回答を参考にもう少し自分で勉強してみます。

投稿日時 - 2006-07-12 21:23:47

ANo.2

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

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

回答(2)

ANo.1

おそらくできると思いますが、回答を丸投げですか?
この限られたスペースでは答えられないでしょう。
もう少し勉強してからの方がよろしいかと思います。
頑張ってチャレンジしてみてください。

投稿日時 - 2006-07-12 13:35:10

お礼

ありがとうございました。もう少し自分で勉強してみます。

投稿日時 - 2006-07-12 21:16:26

あなたにオススメの質問