VBAを使用してディレクトリ内のすべてのExcelファイル(この場合はc:\ temp)を開いてすべてのファイルデータシートを1つの大きなファイル。それぞれの新しいシートには、元のドキュメント上のファイル名とシート名が付けられます。私が持っているコードは、最初のファイルの最初のシートをコピーし、正しく名前を付けますが、ランタイムエラーで失敗します。1004:名前を設定しようとすると、アプリケーション定義またはオブジェクト定義エラーが2番目のシートにあります。誰でもどのように修正するかに関する提案があります。VBAを使用してフォルダ内のすべてのExcelファイルを1つのファイルにコピーするとランタイムエラーが発生する
Sub MergeAllWorkbooks()
Dim FolderPath As String
Dim FileName As String
' Create a new workbook
Set FileWorkbook = Workbooks.Add(xlWBATWorksheet)
' folder path to the files you want to use.
FolderPath = "C:\Temp\"
' Call Dir the first time, pointing it to all Excel files in the folder path.
FileName = Dir(FolderPath & "*.xl*")
' Loop until Dir returns an empty string.
Do While FileName <> ""
' Open a workbook in the folder
Set WorkBk = Workbooks.Open(FolderPath & FileName)
Dim currentSheet As Worksheet
Dim sheetIndex As Integer
sheetIndex = 1
Windows(WorkBk.Name).Activate
For Each currentSheet In WorkBk.Worksheets
currentSheet.Select
currentSheet.Copy Before:=Workbooks(FileWorkbook.Name).Sheets(sheetIndex)
FileWorkbook.Sheets(sheetIndex).Name = FileName & "-" & currentSheet.Name
sheetIndex = sheetIndex + 1
Next currentSheet
' Close the source workbook without saving changes.
WorkBk.Close savechanges:=False
' Use Dir to get the next file name.
FileName = Dir()
Loop
End Subの
エラーをデバッグし、シート名を入力する値を確認することができます。つまり、シート名にこれらの\/* []が含まれていないことを確認できますか? 31文字以下であることを確認してください。それ以外の場合は、行の各部分に時計を追加して、どちらがエラー出力しているかを確認します。お役に立てれば。 – nbayly
名前を付ける前にワークシートを作成する必要があります。ワークブックに無限のシートが含まれていないことを確認してください。 –
https://www.extendoffice.com/documents/excel/456-combine-multiple-workbooks.html – Slai