1つのファイルからシートをコピーし、確立されたフォルダ内の約6つのファイルにある確立されたタブに貼り付けようとしています。私はこのコードを持っていますが、フォルダ内の最初のファイルに対してのみ動作します。何らかの理由で空のワークブックを作成しています。助言がありますか?フォルダ内のすべてのファイルにコピーして貼り付けます
Sub LoopThroughFiles()
Dim wbk As Workbook
Dim Filename As String
Dim FirstFile As String
Dim FileDirectory As String
Dim x As Workbook
Set x = Workbooks.Open("test.xlsx")
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Please select a folder"
.AllowMultiSelect = False
.Show
If .SelectedItems.Count = 0 Then
MsgBox "You did not select a folder"
Exit Sub
Else
FileDirectory = .SelectedItems(1) & "\"
End If
End With
Set wbk = Workbooks.Add
Filename = Dir(FileDirectory)
FirstFile = Filename
Do Until Filename = ""
Dim new_wb As Workbook
Set new_wb = Workbooks.Open(FileDirectory & Filename)
If FirstFile = Filename Then
x.Sheets("report").UsedRange.Copy
new_wb.Sheets("roster").Range("a1").PasteSpecial
End If
new_wb.Close savechanges:=True
Filename = Dir
Loop
MsgBox "All store totals have been added"
End Sub
(a)はあなたのライン 'FirstFile =ファイル名Then'が、具体的にマクロを言っている場合にのみ、それは、フォルダ内の最初のファイルであればコピー/貼り付けを行います。 (b)私はなぜそれが空白のワークブックを作成するのか分からない - 何がファイル名は、空のブックに与えられている? – YowE3K
(b)あなたの行 'Set wbk = Workbooks.Add'は新しい空白のブックを作成します。次の行にはwbkへの参照がないので、おそらくこの行を削除するだけです。 –
私は昨夜このことを理解しました。私はまた、アクションが完了するのに少しシワを付けました。私は視界には新しいので、誰かが私に更新されたコードを追加する方法を知らせることができたら、私はそうするでしょう。私はここでそれをコピーしようとすると、この返信の文字を最大限に使います。 – chasedcribbet