
はじめまして、エクセルのマクロでお聞きしたいことがあり
質問させていただいております。
自分で考えろと言われればそれまでですが、
まったくのど素人のためやり方を教えていただけないでしょうか
よろしくお願いいたします。
下記のようなテキストファイルが多数あるときに
すべてのテキストファイルをひとつのエクセルシートに一列目にファイル名を記入されている状態で
次々に貼り付けたいと考えております。
例として
============
ファイル名:clw○○○.txt
ファイルの中身は下記
20100410 C:▽▽
20100410 C:○○
============
============
ファイル名:clw▽▽▽.txt
ファイルの中身は下記
20100410 C:▽▽
20100410 C:○○
20100410 C:■■
============
↓(下記が完成イメージ)
一列目にファイル名を記入。
ただし、ファイルの中身の行数と同じ位置まで記入する
A B C
clw○○○ 20100410 C:▽▽
clw○○○ 20100410 C:○○
clw▽▽▽ 20100410 C:▽▽
clw▽▽▽ 20100410 C:○○
clw▽▽▽ 20100410 C:■■
以上、よろしくお願いいたします。
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
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=5 …
がよろしいかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- その他(プログラミング・Web制作) エクセルVBA 3 2022/06/11 16:01
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでPowerPointからExcelにデ...
-
ある文字列を含む行の抽出
-
テキストファイルを直接置換す...
-
VBSを用いてIPアドレスを取得し...
-
VB.NETでテキストファイルからH...
-
テキストファイルの行頭に文字...
-
Excel.VBA テキストファイルを...
-
ソースコードの差分がある行番...
-
linuxのgrepコマンドに関して
-
iniファイルとの比較(iniファイ...
-
VBAで任意のフォルダ内のファイ...
-
RandomとBinaryモードの違い
-
【DOSコマンド】一致した文字列...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
バッチでテキストファイルから...
-
コマンドプロンプトのエラーに...
-
リストビューのカスタムドロー...
-
他のMDBのマクロを実行する方法
-
AccessVBAで実行時間を指定する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ある文字列を含む行の抽出
-
特定フォルダ内のテキストファ...
-
VBAでPowerPointからExcelにデ...
-
複数行の文字列を変数として使...
-
VB6側からテキストファイルをク...
-
Excel.VBA テキストファイルを...
-
access vbaでCSVファイルを文...
-
テキストファイルの行頭に文字...
-
BCPユーティリティの使用法_...
-
VBAで新しい日付順にファイルを...
-
時間短縮のために、テキストフ...
-
VB.NETでテキストファイルからH...
-
バッチでiniファイルの編集
-
テキストファイルを直接置換す...
-
ソースコードの差分がある行番...
-
RandomとBinaryモードの違い
-
fortranでのcsvファイルを出力...
-
excelにテキストファイルの指定...
-
unicode文字列(日本語)のファイ...
-
C#でのファイル編集と上書き保...
おすすめ情報