2017-04-21 12 views
1

あるファイルを別のファイルにコピーするVBAプログラムを作成しています。Excel VBAのファイルの場所と名前の取得

現在のコードは機能しますが、プロンプトが表示される場所に変更して、ファイルの場所と名前/拡張子をユーザーに尋ねます。その入力は、Workbooks.Open関数のファイルの場所としてインポートされ、そこから移動します。

ユーザーが目的のExcelファイルのファイルの場所と名前を入力し、Workbooks.Open関数で入力するように求めるプロンプトを作成するにはどうすればよいですか?

コード:

Sub Macro1() 

Dim wb1 As Workbook 
Dim wb2 As Workbook 

MsgBox "Now converting data from Incident Data to Specific Data " 

'Set it to be the file location, name, and extension of the Call Data CSV 
Set wb1 = Workbooks.Open("Z:\xxxx\Call Data - Copy.csv") 

'Set it to be the file location of the Working File 
Set wb2 = Workbooks.Open("Z:\xxxx\Working File.xlsx") 

wb1.Worksheets(1).Columns("E").Copy wb2.Worksheets(1).Columns("A") 
wb1.Worksheets(1).Columns("I").Copy wb2.Worksheets(1).Columns("Q") 
wb1.Worksheets(1).Columns("AE").Copy wb2.Worksheets(1).Columns("R") 
wb1.Worksheets(1).Columns("BD").Copy wb2.Worksheets(1).Columns("F") 

wb2.Close SaveCahnges:=True 
wb1.Close SaveChanges:=True 

End Sub 
+2

'Application.GetOpenFileName' –

答えて

2

私は、入力ファイルを選択するのFileDialogとなるだろう:

へ:あなたはこのpost

EDITを参照することができます保存するための

Dim fDialog As FileDialog, result As Integer 
Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 

fDialog.AllowMultiSelect = False 
fDialog.title = "Select a file" 
fDialog.InitialFileName = "C:\" 
fDialog.Filters.Clear 
fDialog.Filters.Add "Excel files", "*.xlsx" 

'Show the dialog. -1 means a file has been successfully selected 
If fDialog.Show = -1 Then 
    Debug.Print fDialog.SelectedItems(1) 
End If 

をWorkbooks.Openで使用すると、次のようなことができます。

Dim fname As String 
If fDialog.Show = -1 Then 
    fname=fDialog.SelectedItems(1) 
Else 
    MsgBox("Filename selection error") 
    Exit Sub 
End If 

Set wb1 = Workbooks.Open(fname) 
+0

このコードセクションからファイル名を取得し、Workbooks.Open()関数内で入力する方法はありますか? 以下のコードに記載されているコピー手順を実行するために、入力ファイルをブックとして設定する必要があります。 –

+1

上記の私の編集を参照してください。 – Amorpheuses

+0

ありがとう、それは動作します! 私が今しようとしているのは、2番目のワークブックで同じことが起こるようにすることです。 –

関連する問題