【问题标题】:Importing Access query output into Excel using VBA使用 VBA 将 Access 查询输出导入 Excel
【发布时间】:2013-05-17 23:24:53
【问题描述】:

我正试图让这段代码工作,但它似乎不想从 getopenfilename 命令中提取字符串,所以我想我会看看是否有人对如何重新配置​​这段代码有任何想法,以便它不会将 getopenfilename 字符串视为文本,而是将其视为真实路径...

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

【问题讨论】:

  • “它似乎不想从 getopenfilename 命令中提取字符串”。这是什么意思?

标签: excel vba import


【解决方案1】:

将第二行改为:

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

这会将FilePath 的值插入到您的连接字符串中。

【讨论】:

  • 啊,所以你需要里面的&符号?非常感谢!
  • 不客气。是的,这通常是您从文字和变量构建字符串的方式,例如,“我的名字是” & FirstName & " " & LastName & "。"
  • 确实如此。我不知道为什么这与您提到的其他文字和变量不同。我已经循环完成了几十次!
  • 可能是因为在弄清楚如何对 QueryTables 进行编程时还有很多其他事情要做!不过,这是非常有益的。
猜你喜欢
  • 1970-01-01
  • 2016-10-11
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 2021-02-25
  • 2011-11-16
相关资源
最近更新 更多