2013-05-17 2 views
0

Я пытаюсь заставить этот код работать, но он, похоже, не хочет вытягивать строку из команды getopenfilename, поэтому я думал, что увижу, есть ли у кого-нибудь идеи по как перенастроить этот код так, чтобы он не будет рассматривать строку GetOpenFileName как текст и вместо того, чтобы как реальный путь ...Импорт запросов доступа в Excel с помощью VBA

Sub DB_Import() 
    Dim FilePath As Variant 

    MsgBox ("Select the path and filename of the correct database") 
    FilePath = Application.GetOpenFilename 

    With ActiveSheet.ListObjects.Add(
     SourceType:=0, 
     Source:=Array(_ 
      "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin; " & _ 
      "DataSource=FilePath;Mode=Share Deny Write;Extended Properties=""""; " & _ 
      "Jet OLEDB:System database="""";Jet OLEDB:Registry Path=""""; " & _ 
      "Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=6;" & _ 
      "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 System Database=False;Jet OLEDB:Encrypt Database=False;Jet " & _ 
      "OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;" & _ 
      "Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;" & _ 
      "Jet OLEDB:Bypass UserInfo Validation=False"), 
     Destination:=Range("$A$1")).QueryTable 

     .CommandType = xlCmdTable 
     .CommandText = Array("Query1") 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .PreserveColumnInfo = True 
     .SourceDataFile = FilePath 
     .ListObject.DisplayName = "Table_ExternalData_1" 

     .Refresh BackgroundQuery:=False 
    End With 
End Sub 
+0

«Кажется, он не хочет вытягивать строку из команды getopenfilename». Что это значит ? – ApplePie

ответ

0

Изменение второй линии к этому:

"DataSource=" & FilePath & ";Mode=Share Deny Write;Extended Properties=""""; " & _ 

это будет вставить значение FilePath в строку подключения.

+0

А, вам нужны амперсанды? Спасибо огромное! – user2386878

+0

Добро пожаловать. Да, это вообще то, как вы строите строку из литералов и переменных, например, «Мое имя» и «Первое имя» и «» и «Последнее имя» и «.». –

+0

Это очень верно. Я не знаю, почему это не рассвело на меня так же, как другие литералы и переменные, как вы упоминаете. Я делал это десятки раз в циклах! – user2386878

Смежные вопросы