2011-04-05 19 views
1

我有一个当前创建新工作表的宏,并将另一个excel文件导入到此新工作表中。如何在使用宏将数据文件导入新选项卡时提示用户选择文件?

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

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

子ImportDemand() Sheets.Add

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 

末次

回答

3

您可以使用GetOpenFilename

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

如果你使用的是Excel 2003,然后我会使用而不是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) 
+0

FileDialog对象如何适合我当前的代码?当手动执行文件导入时,我需要选择将要导入的excel文件中的选项卡。在这种情况下,“_All_Demand $”。需要哪些额外的代码---我需要包含哪些Excel才能对选定的数据源执行操作? – Jon 2011-04-06 14:05:48

+0

那么,在你的代码中你写'.SourceDataFile =“\\ Folder \ ImportFile_2011.04.05.xls”'。我认为这是你想提示用户的地方,对吧?只需用上面的任一示例替换该行即可。并阅读[GetOpenFilename](http://msdn.microsoft.com/en-us/library/aa195878%28v=office.11​​%29.aspx)和/或[FileDialog](http:// msdn)上的VBA帮助。 microsoft.com/en-us/library/aa195744%28v=office.11​​%29.aspx)。 – 2011-04-06 19:49:21

+0

至于选择标签,这是一个完整的其他问题。你为什么不问一个新的问题,以避免拥挤这个问题。仅供参考,如果您觉得有用,请记住接受此答案。 – 2011-04-06 19:51:14

相关问题