Excel vba 用户到 select 工作簿然后复制数据
Excel vba user to select workbook then copy data
我有一个宏,可以将数据从 csv 文件复制到我的 excel 文件,如果文件名每次都相同,效果很好。这就是问题所在:每次都不是同一个名字。
我需要允许用户 select csv 文件的脚本。然后,代码允许它复制。这是我的:
Sub importmix()
Worksheets("mixdata").Range("A1:P300").Clear
'## Open workbooks first:
Set X = Workbooks.Open("C:\test\mix.csv")
'## Set values between workbooks
Workbooks("2.xlsm").Worksheets("mixdata").Range("A1:K300").Value = _
Workbooks("mix.csv").Worksheets("mix").Range("C1:M300").Value
'##Close x:
X.Close False
End Sub
应该可以使用:
Dim intResult as integer
'Dialogue box name
Application.FileDialog(msoFileDialogFolderPicker).Title = "Select a Path"
'The dialog is displayed to the user
intResult = Application.FileDialog(msoFileDialogFolderPicker).Show
我想你正在寻找这样的东西:
Sub test()
Dim intResult As Integer
Dim fD As FileDialog
Set fD = Application.FileDialog(msoFileDialogFilePicker)
With fD
.Title = "Select a Path"
.AllowMultiSelect = False
.Show
End With
importmix fD.SelectedItems(1)
End Sub
Sub importmix(path As String)
Worksheets("mixdata").Range("A1:P300").Clear
'## Open workbooks first:
Set X = Workbooks.Open(path)
'## Set values between workbooks
Workbooks("2.xlsm").Worksheets("mixdata").Range("A1:K300").Value = _
Workbooks(Dir(path)).Worksheets(Dir(Replace(UCase(path), ".csv", ""))).Range("C1:M300").Value
'##Close x:
X.Close False
End Sub
Dir(path)
给你文件名。 csv 会自动打开一个 sheet,其中包含不带扩展名的文件名,因此删除 .csv 会解决这个问题。
我有一个宏,可以将数据从 csv 文件复制到我的 excel 文件,如果文件名每次都相同,效果很好。这就是问题所在:每次都不是同一个名字。
我需要允许用户 select csv 文件的脚本。然后,代码允许它复制。这是我的:
Sub importmix()
Worksheets("mixdata").Range("A1:P300").Clear
'## Open workbooks first:
Set X = Workbooks.Open("C:\test\mix.csv")
'## Set values between workbooks
Workbooks("2.xlsm").Worksheets("mixdata").Range("A1:K300").Value = _
Workbooks("mix.csv").Worksheets("mix").Range("C1:M300").Value
'##Close x:
X.Close False
End Sub
应该可以使用:
Dim intResult as integer
'Dialogue box name
Application.FileDialog(msoFileDialogFolderPicker).Title = "Select a Path"
'The dialog is displayed to the user
intResult = Application.FileDialog(msoFileDialogFolderPicker).Show
我想你正在寻找这样的东西:
Sub test()
Dim intResult As Integer
Dim fD As FileDialog
Set fD = Application.FileDialog(msoFileDialogFilePicker)
With fD
.Title = "Select a Path"
.AllowMultiSelect = False
.Show
End With
importmix fD.SelectedItems(1)
End Sub
Sub importmix(path As String)
Worksheets("mixdata").Range("A1:P300").Clear
'## Open workbooks first:
Set X = Workbooks.Open(path)
'## Set values between workbooks
Workbooks("2.xlsm").Worksheets("mixdata").Range("A1:K300").Value = _
Workbooks(Dir(path)).Worksheets(Dir(Replace(UCase(path), ".csv", ""))).Range("C1:M300").Value
'##Close x:
X.Close False
End Sub
Dir(path)
给你文件名。 csv 会自动打开一个 sheet,其中包含不带扩展名的文件名,因此删除 .csv 会解决这个问题。