- ベストアンサー
マクロで複数のテキストファイルをエクセルに貼り付ける方法
- マクロを使用して、複数のテキストファイルをひとつのエクセルシートに貼り付ける方法について教えてください。
- 複数のテキストファイルをエクセルに貼り付ける際、ファイル名を一列目に記入し、ファイルの中身の行数と同じ位置まで記入する方法を教えてください。
- 複数のテキストファイルを一列目にファイル名と共にエクセルに貼り付ける方法を教えてください。ファイルの中身の行数と同じ位置まで記入することが重要です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんなかんじでしょうか 実行するとファイルオープンダイアログ が出て、一列目にファイル名、二列目に ファイル中のそれぞれ一行をそのまま出力します Sub Autofileopen() Dim OpenFileName As Variant ''ファイル名(配列) Dim tmp As String ''ファイル一行読み込み時に使用 Dim i As Integer ''ループ変数 Const OUTPUT_WORKSHEETS_NUM = 1 ''ファイルをアウトプットするワークシート番号 Application.ScreenUpdating = False ''スクリーンの更新をしない '''''''''''''''''''' ファイルオープン部分 ''''''''''''''''''''''''''' ''ファイルオープンダイアログを表示してファイルのディレクトリを取得 ''複数選択可 ''OpenFileName()は1始まり OpenFileName(1), OpenFileName(2)・・・・ OpenFileName = Application.GetOpenFilename( _ FileFilter:="テキストファイル,*.txt,データファイル,*.dat,すべてのファイル,*.*", _ MultiSelect:=True) '''ファイルが選択されたときとキャンセルのときの区別 '''ファイルが選択されたときはOpenFileNameが配列として返される If IsArray(OpenFileName) Then ''なにもしない Else ''ファイルが選択されなかったときはIsArray(OpenFileName)=falseとなる MsgBox "キャンセルされました。", vbInformation End If ''''''''ワークシートに出力部分''''''''''''''''''''''''''''''''''' OutPutRow = 1 ''出力行はじめ For i = 1 To UBound(OpenFileName) n = FreeFile(0) '''''引数に0を指定すると、FreeFileは1~255の範囲のファイル番号を返す Open OpenFileName(i) For Input As #n Do While Not EOF(n) ''ファイル終わりまで繰り返す Line Input #n, tmp ''一行読み込み ''''''''''''''ワークシートに出力 Worksheets(OUTPUT_WORKSHEETS_NUM).Cells(OutPutRow, 1) = Dir(OpenFileName(i)) Worksheets(OUTPUT_WORKSHEETS_NUM).Cells(OutPutRow, 2) = tmp OutPutRow = OutPutRow + 1 ''ワークシートの出力する行数をひとつ増やす Loop Close #n Next i End Sub
その他の回答 (2)
- rndwalker7
- ベストアンサー率45% (5/11)
No.2の修正です ファイルオープンダイアログでキャンセルされたときの 挙動ですが、 Else ''ファイルが選択されなかったときはIsArray(OpenFileName)=falseとなる MsgBox "キャンセルされました。", vbInformation End ''ここでプログラムを終了(←追加箇所) End If と、End を入れてプログラムを終わらせるようにしたほうがいいです。
- osu_neko09
- ベストアンサー率48% (56/115)
カテゴリが違います。 教えて!goo > デジタルライフ > ソフトウェア > MS Office http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5819030 がよろしいかと。