dポイントプレゼントキャンペーン実施中!

過去の質問の中から、素晴らしい結合のマクロを見つけましたが、パソコンを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

A 回答 (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ファイルが保存してあるフォルダに放り込んでマクロを実行します。
やはり既出回答でも指摘されているように、勿論マクロ有効で開いてマクロをキチンと実行する必要があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/10/16 10:49

フォルダ内のテキストファイルを全て結合するだけなのに何故そんな大層なことをするの?


そのフォルダ内に
copy *.csv output.csv
という内容のbatファイルを作って実行するだけでいいんじゃないの?
    • good
    • 7

どこでエラーが出るのでしょうか



エラーではなく、まったく動かないということでしたらリボンの下に最初に出るコンテンツの有効化ボタンを押さないと実行できません。

参照:
http://officetanaka.net/excel/excel2010/008.htm
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!