• 締切済み

複数のファイルデータを新しく作るファイルに全てコピーして張り付ける

(48行*4列)の数値が与えられた似たような31個のファイルを 一つのファイルにその行と列の形を崩さず新しくファイルを作りそこに 31個のファイルを縦に貼り付けていくVBAをかんがえているのですがわかりません。 どのような方法でプログラムを作ればよろしいでしょうか? 別にperl でもかまいません。

みんなの回答

noname#97729
noname#97729
回答No.2

' フォルダ内のファイルを全て統合する。 Dim txt Set Fs = WScript.CreateObject("Scripting.FileSystemObject") txt = "" ' 指定フォルダ内のファイルの内容を変数に追記格納 Set oTarget = Fs.GetFolder(".") For Each oFile In oTarget.Files Set ts=Fs.OpenTextFile(oFile.Name,1,0) txt= txt & ts.ReadAll ts.Close Set ts=Nothing Next ' 変数の内容を一括ファイル出力 Set oTs = Fs.CreateTextFile("result.txt") oTs.Write txt oTs.Close MsgBox "処理終了" -------------------------------------------------------------- VBScriptではこんな感じ テキストファイル(.txt)だけを処理対象にする とかすると、こちらも参照するといいです。 http://www1.u-netsurf.ne.jp/~tomo_c/tips/R23Lev03.html

simaotoko
質問者

お礼

ありがとうございました。 これを機会に勉強を始めます。

  • J2J
  • ベストアンサー率22% (2/9)
回答No.1

#1追加 Sub Test() Dim myDir As String, myName As String Application.ScreenUpdating = False With ThisWorkbook myDir = .Path & "\" myName = Dir(myDir & "*.xls", vbNormal) Do While myName <> "" If myName <> .Name Then Set wb = Workbooks.Open(myDir & myName)           '//追加部分 For i = 1 To wb.Worksheets.Count .Worksheets(1).Range("A65536").End(xlUp).Offset(1, 0).Value = _ wb.Worksheets(i).Range("A100") Next i           '//追加部分終わり wb.Close End If myName = Dir Loop End With End Sub

simaotoko
質問者

お礼

早速のご回答ありがとうございます。 対称としているファイルがCSVファイルなので、 myName = Dir(myDir & "*.xls", vbNormal) の.xlsを.CSVに変えて試してみます。