【问题标题】:Connectionstring vba with blank space in dataname get broken数据名中带有空格的连接字符串 vba 被破坏
【发布时间】:2019-06-25 13:50:02
【问题描述】:

我的代码如下。我将尝试使用连接字符串从已关闭的工作表中复制一系列数据。如果数据名没有空字符串,则代码是可以的。 例如test.xlsx 没问题,但进一步测试。xlsx 坏了。

    'using sql
Sub ImportThisFile(FilePath As String, SourceSheet As String, Destination As Range)
    Set Conn = New ADODB.Connection
    'xls
    'Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
    '    FilePath & ";Extended Properties=Excel 8.0;"
    'xlsx
    Conn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & _
        FilePath & ";Extended Properties=Excel 12.0 Xml;"

    Sql = "SELECT * FROM [" & SourceSheet & "$]  WHERE [fieldname] <> " & [""""""]

    Set RcdSet = New ADODB.Recordset
    RcdSet.Open Sql, Conn, adOpenForwardOnly

    Destination.CopyFromRecordset RcdSet

    RcdSet.Close
    Set RcdSet = Nothing

    Conn.Close
    Set Conn = Nothing
End Sub

Sub StartDoingStuff()

    Dim Zeit As Long, Anzahl As Long

        Anzahl = 1
        Zeit = Timer
        Dim testvar As String, testvar2 As String, testvar3 As String
        testvar = "C:\Users\Admin\Desktop\Folder\"
        testvar2 = "testdata with emptystrings.xlsx.xlsx"
        testvar2 = "test.xlsx"

        testvar3 = "Tabelle1"

            ImportThisFile testvar & testvar2, "Timesheet", Range(testvar3 & "!A2")

        Debug.Print "Zeitbedarf"; Round(Timer - Zeit, 3)
End Sub

第二个问题。 如果我想复制一个范围,我必须如何编写代码? 我需要确定列中的最后一个单元格。这怎么可能?

【问题讨论】:

  • 试试"SELECT * FROM ['" &amp; SourceSheet &amp; "'$]
  • @DavidZemens 感谢输入。但问题不是 sql 查询,问题是数据名 (testvar2)
  • 第二个 testvar2 = "test.xlsx" 注释为 ' 第一个 testvar 没有两个 .xlsx。这是一个写作错误
  • 问题依然存在 :)
  • 究竟是什么问题?你有错误吗?什么错误,哪一行引发了错误?

标签: excel vba connection-string


【解决方案1】:

我发布的代码是正确的。这是工作簿中的错误(表名)

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2017-01-23
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多