2016-10-10 8 views
0

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 
+0

(a)はあなたのライン 'FirstFile =ファイル名Then'が、具体的にマクロを言っている場合にのみ、それは、フォルダ内の最初のファイルであればコピー/貼り付けを行います。 (b)私はなぜそれが空白のワークブックを作成するのか分からない - 何がファイル名は、空のブックに与えられている? – YowE3K

+0

(b)あなたの行 'Set wbk = Workbooks.Add'は新しい空白のブックを作成します。次の行にはwbkへの参照がないので、おそらくこの行を削除するだけです。 –

+0

私は昨夜このことを理解しました。私はまた、アクションが完了するのに少しシワを付けました。私は視界には新しいので、誰かが私に更新されたコードを追加する方法を知らせることができたら、私はそうするでしょう。私はここでそれをコピーしようとすると、この返信の文字を最大限に使います。 – chasedcribbet

答えて

0

サブLoopThroughFiles_Paste_Roster()ワークブック「新しいブックとしてデータブック 暗いYとして文字列 暗いXと文字列 暗いFileDirectoryとして文字列 暗いFirstFileよう 暗いファイル名に付加されるWBK

薄暗いですブックとして

セットX = Workbooks.Open( "コピードク1") 集合Y = Workbooks.Open( "コピードク2")

を持つユーザが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 

をフォルダ選択ダイアログボックスを表示エンド」

監督 を使用して、フォルダ内の最初のファイルの名前を取得ファイル名= DIR(FileDirectory) FirstFile =ファイル名

'ループフォルダ 内のすべてのファイルを通じて' ファイルを開く

いますファイル名= ""

セットWBK = Workbooks.Open(FileDirectory &ファイル名、UpdateLinks:= Falseを、パスワード:= "Password123")まで

With wbk 

    x.Sheets("report").UsedRange.Copy 

    wbk.Sheets("roster").Range("a1").PasteSpecial 

    y.Sheets("Setup").UsedRange.Copy 

    wbk.Sheets("PTO Taken and Req").Range("a1").PasteSpecial 


    End With 

'ファイルを保存して閉じ 'フォルダ wbk.CloseのSaveChangesメソッドで次のファイルを取得する:= Trueの ファイル名= DIR

ループ

のMsgBox「すべてをページは

End Subの「更新されている

関連する問題