• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロを使用してCSVファイルの結合を行いたい)

マクロを使用してCSVファイルの結合を行いたい

このQ&Aのポイント
  • 過去の質問の中から、素晴らしい結合のマクロを見つけましたが、パソコンをwindows7にエクセルをエクセル2010に変更した後、マクロが使えなくなりました。どなたか修正して頂けないでしょうか?
  • 列の項目は定形で、10~200行のデータが書かれたCSVファイルが1つのフォルダに多数あります。新しいファイルに、NO.1のファイルのデータの続きにNO.2、NO.3・・・と続けてデータが下の行に連続して並ぶようにマクロで結合させたいと思っていますので、宜しくお願いします。
  • Sub Test1() Dim files As FileSearch, FilesCnt As Integer, i As Integer Dim cBook As Workbook, pBook As Workbook  FilesCnt = mySearch(files, ThisWorkbook.Path)  If FilesCnt = 0 Then Exit Sub  Set pBook = Workbooks.Add(xlWBATWorksheet)   For i = 1 To FilesCnt    Workbooks.Open files.FoundFiles(i)    Set cBook = ActiveWorkbook    cBook.ActiveSheet.UsedRange.Copy    With pBook.ActiveSheet     If i > 1 Then      .Cells(.Range("A65536").End(xlUp).Row + 1, 1). _       PasteSpecial (xlPasteAll)     Else      .Cells(.Range("A65536").End(xlUp).Row, 1). _       PasteSpecial (xlPasteAll)     End If    End With    Application.CutCopyMode = False    cBook.Close   Next i  Set cBook = Nothing: Set pBook = Nothing End Sub '******************************************************************** Function mySearch(files As FileSearch, myDir As String) As Integer  mySearch = 0  Set files = Application.FileSearch  With files    .NewSearch    .LookIn = myDir    .SearchSubFolders = True    .Filename = "*.csv"    If .Execute() > 0 Then mySearch = .FoundFiles.Count  End With End Function

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

こちらのような質問相談掲示板でも非常に良く寄せられるご質問の一種ですが、あなたが発見したマクロでやってるようにCSVファイルをエクセルで開いて操作すると、しばしばデータが変わってしまいます。今まで全く問題が無かったのでそこは絶対心配無いという事なら、勿論構いませんが。 既出回答にあるようにエクセルとか使わずにバッチで処理してしまう方が私も簡単とは思いますが、そこはまぁご質問なので、とりあえずベタなマクロでやらせてみると… sub macro1()  dim myPath as string  dim myFile as string  dim s as string  mypath = thisworkbook.path & "\"  on error resume next  kill mypath & "out.csv"  on error goto 0  myfile = dir(mypath & "*.csv")  if myfile = "" then exit sub  open mypath & "out.csv" for output as #1  do until myfile = ""   open mypath & myfile for input as #2   do until eof(2)    line input #2, s    print #1, s   loop   close #2   myfile = dir()  loop  close #1 end sub 結果はout.csvというファイルに書き出しています。 ブックをCSVファイルが保存してあるフォルダに放り込んでマクロを実行します。 やはり既出回答でも指摘されているように、勿論マクロ有効で開いてマクロをキチンと実行する必要があります。

shika1963
質問者

お礼

ありがとうございました。 とても簡単で、以前より早く作業ができました。 初心者なので、バッチで処理とかが良くわからなくて 申し訳ありませんでした。 とても助かりました。

その他の回答 (2)

  • f272
  • ベストアンサー率46% (8534/18272)
回答No.2

フォルダ内のテキストファイルを全て結合するだけなのに何故そんな大層なことをするの? そのフォルダ内に copy *.csv output.csv という内容のbatファイルを作って実行するだけでいいんじゃないの?

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

どこでエラーが出るのでしょうか エラーではなく、まったく動かないということでしたらリボンの下に最初に出るコンテンツの有効化ボタンを押さないと実行できません。 参照: http://officetanaka.net/excel/excel2010/008.htm

関連するQ&A

専門家に質問してみよう