• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロに関して、ファイル名を一列目に記入する方法。ただし、ファイルの中身の行数だけ記入したい)

マクロで複数のテキストファイルをエクセルに貼り付ける方法

このQ&Aのポイント
  • マクロを使用して、複数のテキストファイルをひとつのエクセルシートに貼り付ける方法について教えてください。
  • 複数のテキストファイルをエクセルに貼り付ける際、ファイル名を一列目に記入し、ファイルの中身の行数と同じ位置まで記入する方法を教えてください。
  • 複数のテキストファイルを一列目にファイル名と共にエクセルに貼り付ける方法を教えてください。ファイルの中身の行数と同じ位置まで記入することが重要です。

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

  • ベストアンサー
回答No.2

こんなかんじでしょうか 実行するとファイルオープンダイアログ が出て、一列目にファイル名、二列目に ファイル中のそれぞれ一行をそのまま出力します 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)

回答No.3

No.2の修正です ファイルオープンダイアログでキャンセルされたときの 挙動ですが、 Else ''ファイルが選択されなかったときはIsArray(OpenFileName)=falseとなる MsgBox "キャンセルされました。", vbInformation End ''ここでプログラムを終了(←追加箇所) End If と、End を入れてプログラムを終わらせるようにしたほうがいいです。

回答No.1

カテゴリが違います。 教えて!goo > デジタルライフ > ソフトウェア > MS Office http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5819030 がよろしいかと。

関連するQ&A

専門家に質問してみよう