「複数ファイルを変数に入れる。」で書いたのとは別に読み込む前にファイルをひとつに結合するという方法があります、DOSで育った人間としてまず頭に浮かんだのが「リダイレクト出力」を利用するのと「Copy」コマンドを利用する方法でした。
「リダイレクト出力」は画面に出力する変わりにファイルやプリンターに出力する機能で例えば
C:>Dir > dir.txt
とやると画面にずらずらと表示される内容がそのまんま「dir.txt」というファイルに吐き出されます。
C:Dir >> dir.txt
とやるとすでにある「dir.txt」の末尾に書き加えられます。
具体的にどのようにファイルを結合するかというとDOSに「Type」コマンドというのがあってこれは
C:>type file1.txt
とやると「file1.txt」の内容を画面にズラーッと表示してくれるので
C:>type file1.txt > file3.txt
C:>type file2.txt >> file3.txt
とやれば「file1.txt」「file2.txt」が結合されて「file3.txt」ができるのでそれを読み込めばよいのです。
Copyコマンドで上に書いたことを実現するには
C:>Copy file1.txt + file2.txt file3.txt
と割合シンプルです、だがそれをVBAで実現するためには「Windows Script」を使う必要があるらしく調べてできたのが下のやつ、でもこれはいわゆる「DOS窓」を利用するので一瞬「DOS窓」が開いてしまいます。
Sub SampleX()
Dim スクリプト, 実行, 能書, 読込 As String
Dim 都度, 在庫 As String
Set スクリプト = CreateObject("WScript.Shell")
読込 = "C:idectempreadfile.csv"
都度 = "C:idectempIDECHDATA.csv"
在庫 = "C:idectempIDECHDATAZ.csv"
能書 = "Copy" & " " & 都度 & " + " & 在庫データ & " " & 読込
Set 実行 = スクリプト.Exec("%ComSpec% /c " & 能書)
nHFile = FreeFile
Open 読込データ For Input As #nHFile
On Error GoTo Fin
dTa = 1
Do While Not EOF(nHFile)
Line Input #nHFile, tmPLine
tmPLine = Replace(tmPLine, """", "")
tmp = Split(tmPLine, ",")
Range(Cells(dTa, 1), Cells(dTa, UBound(tmp) + 1)) = tmp
dTa = dTa + 1
Loop
Fin:
Close #nHFile
End Sub
「リダイレクト出力」は画面に出力する変わりにファイルやプリンターに出力する機能で例えば
C:>Dir > dir.txt
とやると画面にずらずらと表示される内容がそのまんま「dir.txt」というファイルに吐き出されます。
C:Dir >> dir.txt
とやるとすでにある「dir.txt」の末尾に書き加えられます。
具体的にどのようにファイルを結合するかというとDOSに「Type」コマンドというのがあってこれは
C:>type file1.txt
とやると「file1.txt」の内容を画面にズラーッと表示してくれるので
C:>type file1.txt > file3.txt
C:>type file2.txt >> file3.txt
とやれば「file1.txt」「file2.txt」が結合されて「file3.txt」ができるのでそれを読み込めばよいのです。
Copyコマンドで上に書いたことを実現するには
C:>Copy file1.txt + file2.txt file3.txt
と割合シンプルです、だがそれをVBAで実現するためには「Windows Script」を使う必要があるらしく調べてできたのが下のやつ、でもこれはいわゆる「DOS窓」を利用するので一瞬「DOS窓」が開いてしまいます。
Sub SampleX()
Dim スクリプト, 実行, 能書, 読込 As String
Dim 都度, 在庫 As String
Set スクリプト = CreateObject("WScript.Shell")
読込 = "C:idectempreadfile.csv"
都度 = "C:idectempIDECHDATA.csv"
在庫 = "C:idectempIDECHDATAZ.csv"
能書 = "Copy" & " " & 都度 & " + " & 在庫データ & " " & 読込
Set 実行 = スクリプト.Exec("%ComSpec% /c " & 能書)
nHFile = FreeFile
Open 読込データ For Input As #nHFile
On Error GoTo Fin
dTa = 1
Do While Not EOF(nHFile)
Line Input #nHFile, tmPLine
tmPLine = Replace(tmPLine, """", "")
tmp = Split(tmPLine, ",")
Range(Cells(dTa, 1), Cells(dTa, UBound(tmp) + 1)) = tmp
dTa = dTa + 1
Loop
Fin:
Close #nHFile
End Sub