【问题标题】:How do I prompt the user to select the file, when using macro to import a data file into a new tab?使用宏将数据文件导入新选项卡时,如何提示用户选择文件?
【发布时间】:2011-07-30 08:55:39
【问题描述】:

我有一个宏正在创建一个新工作表,并将另一个 excel 文件导入到这个新工作表中。

此工作表中的数据会被拉入工作簿的其他区域。

正在导入的文件将始终具有不同的文件名。如何调整以下代码以提示用户选择文件? (目录不会改变)。

子 ImportDemand() 表格。添加

Sheets(2).Select
Sheets(2).Name = "ImportedDemand"
Range("E42").Select
With ActiveSheet.QueryTables.Add(Connection:=Array( _
    "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=\\Folder\ImportFile_2011.04.05.xls;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System d" _
    , _
    "atabase="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;" _
    , _
    "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create Sys" _
    , _
    "tem Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Repli" _
    , "ca Repair=False;Jet OLEDB:SFP=False"), Destination:=Range("A1"))
    .CommandType = xlCmdTable
    .CommandText = Array("_All_Demand$")
    .Name = "ImportFile_2011.04.05"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .BackgroundQuery = True
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .PreserveColumnInfo = True
    .SourceDataFile = _
    "\\Folder\ImportFile_2011.04.05.xls"
    .Refresh BackgroundQuery:=False
End With

结束子

【问题讨论】:

    标签: vba import excel command-prompt


    【解决方案1】:

    你可以使用GetOpenFilename:

    .SourceDataFile = Application.GetOpenFilename("Excel workbooks (*.xls), *.xls")
    

    另一个选项是 FileDialog 对象。它提供了更大的灵活性。

    Dim fdgOpen As FileDialog
    Set fdgOpen = Application.FileDialog(msoFileDialogOpen)
    fdgOpen.Title = "Please open a data file..."
    fdgOpen.InitialFileName = "C:\MyDocuments\MyDir\"
    'Other settings...
    fdgOpen.Show
    .SourceDataFile = fdgOpen.SelectedItems(1)
    

    【讨论】:

    • FileDialog 对象如何适应我当前的代码?手动进行文件导入时,我需要从将要导入的 excel 文件中选择选项卡。在这种情况下,“_All_Demand$”。需要哪些额外代码 --- 我需要包含哪些 Excel 才能对选定的数据源采取行动?
    • 好吧,在你的代码中你写.SourceDataFile = "\\Folder\ImportFile_2011.04.05.xls"。我假设这是您要提示用户的地方,对吗?只需用我上面的任何一个示例替换该行即可。并阅读 GetOpenFilename 和/或 FileDialog 上的 VBA 帮助。
    • 至于选择标签,那是另一回事了。你为什么不问一个新问题以避免拥挤这个问题。仅供参考,如果您觉得有用,请记住接受此答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 2010-10-14
    • 2013-08-03
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多