2017-12-18 25 views
3

Excelワークブックでファイルを開くことができるコードがありますが、p00001、p00002という同じブック内で複数のファイルを開くことができるようにしたい、p00003など。誰もこの方法で指定されたすべてのファイルを選択し、同じブックの別のシートで開くためにコードを編集する方法を知っていますか?VBAコードで同じブックの別のシートに複数のファイルを開く

私のコードは次のようになります。このソリューションで

Sub Open_Workbook() 

    Dim my_FileName As Variant 

    my_FileName = Application.GetOpenFilename 

    If my_FileName <> False Then 
     Workbooks.Open Filename:=my_FileName 
    End If 

End Sub 
+0

それらのファイルのどのような種類がありますか? – Moosli

+0

あなたはフォルダ内のすべてのExcelファイルをループし、あなたが望むことをすることができます、それはうまくいくでしょうか? – Lowpar

+0

ファイルはdatファイルであり、私は何とかループできるようにしたい –

答えて

3

私は複数のファイルを選択するためのFileDialogを使用しました。 その後、すべてのファイルをループする必要があります。 Forループ内で、ファイルを開いてシートをインポートする必要があります。この例では、ワークブックに含まれるすべてのシートをインポートしました。 コードの終了後にインポートすることで、ソースブックを閉じて、残りのファイルと同じ操作を行います。

Sub Import Files() 
     Dim sheet As Worksheet 
     Dim total As Integer 
     Dim intChoice As Integer 
     Dim strPath As String 
     Dim i As Integer 
     Dim wbNew As Workbook 
     Dim wbSource As Workbook 
     Set wbNew = Workbooks.Add 


     'allow the user to select multiple files 
     Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = True 
     'make the file dialog visible to the user 
     intChoice = Application.FileDialog(msoFileDialogOpen).Show 

     Application.ScreenUpdating = False 
     Application.DisplayAlerts = False 

     'determine what choice the user made 
     If intChoice <> 0 Then 
      'get the file path selected by the user 
      For i = 1 To Application.FileDialog(msoFileDialogOpen).SelectedItems.Count 
       strPath = Application.FileDialog(msoFileDialogOpen).SelectedItems(i) 

       Set wbSource = Workbooks.Open(strPath) 

       For Each sheet In wbSource.Worksheets 
        total = wbNew.Worksheets.Count 
        wbSource.Worksheets(sheet.Name).Copy _ 
        after:=wbNew.Worksheets(total) 
       Next sheet 

       wbSource.Close 
      Next i 
     End If 

    End Sub 

あなたがループしてApplicationFileダイアログを変更することができますディレクトリからすべてのファイルを取得したい場合は、このようなループディレクトリた:

directory = "c:\test\" 
    fileName = Dir(directory & "*.xl??") 
    Do While fileName <> "" 
    'Put Code From For Loop here. 
    Loop 
関連する問題