|
お世話になっています。
履歴を参考に、複数のエクセルデータの集計用マクロを作成していますが、うまくいきません。どなたか、アドバイス願います。
任意のホルダに、同一形式のエクセルシートを保存しています。
マクロにてホルダ内の任意のエクセルファイルを選択し、集計したいファイルのPathを取得。
ホルダ内のエクセルファイル全ての、"Sheet1"のデータを、1つのシート(マクロ作成してあるエクセルの"Anal"シート)にまとめる。
作成したマクロ
Sub test()
Dim FSO As Object
Dim MyPath As String, folpath As String, folmei As String, fmei As String
Dim fbasename As String, kaku As String, strPath As String
Dim vntFileName As Variant
Dim DataJ As Range
Dim i, j
' Dim 新規Sheet As Object, 既存Sheet As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
vntFileName1 = ThisWorkbook.Name
If GetWriteFile(vntFileName, strPath) Then
MyPath = vntFileName 'ファイルのフルパス
folpath = FSO.getparentfoldername(MyPath) 'フォルダのパス
folmei = FSO.getfolder(folpath).Name 'フォルダ名
fmei = FSO.getfile(MyPath).Name 'ファイル名
fbasename = FSO.getbasename(MyPath) 'ファイル名から拡張子を除いた部分
kaku = FSO.GetExtensionName(MyPath) '拡張子
xlsFile = Dir(folpath & "\*.xls")
Do While xlsFile <> ""
Workbooks.Open folpath & "\" & xlsFile
j = Workbooks(xlsFile).Worksheets("Sheet1").Range("F65536"). _
End(xlUp).Row
Set DataJ = Workbooks(xlsFile).Worksheets("Sheet1"). _
Range("A3:R" & j)
i = Workbooks(vntFileName1).Worksheets("Anal"). _
Range("F65536").End(xlUp).Row
DataJ.Copy Workbooks(vntFileName1). _
Worksheets("Anal").Range("A" & i)
Set DataJ = Nothing
Workbooks(xlsFile).Activate
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
Loop
End If
Set FSO = Nothing
End Sub
Private Function GetWriteFile(vntFileName As Variant, _
Optional strFilePath As String) As Boolean
Dim strFilter As String
Dim strInitialFile As String
strFilter = "Excel Book (*.xls),*.xls"
strInitialFile = vntFileName
If strFilePath <> "" Then
ChDrive Left(strFilePath, 1)
ChDir strFilePath
End If
vntFileName _
= Application.GetSaveAsFilename(vntFileName, strFilter, 1)
If vntFileName = False Then
Exit Function
End If
GetWriteFile = True
End Function
上記マクロでは、フォルダ内の選択したファイルだけで、無限ループに入ってしまいます。修正点を教えていただけないでしょうか?
よろしくお願い致します。
|
|