获取Excel VBA的文件位置和名称

时间:2017-04-21 19:00:17

标签: excel vba excel-vba

我正在创建一个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

1 个答案:

答案 0 :(得分:2)

我会选择FileDialog来选择输入文件:

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

有关保存的信息,请参阅此post

编辑:

要在Workbook中使用它,请执行以下操作:

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)