如何使用使用 ADODB 移动数据的 Excel VBA 宏 select 动态 sheet 名称?

How to select dynamic sheet names with an Excel VBA macro that moves data with ADODB?

我正在使用宏在具有 ADODB 连接的工作簿之间移动数据。当我 select 来自已关闭工作簿的数据时,我需要将 sheet 名称标记为动态。但是,当使用我的字符串变量作为名称时,代码不会 运行.

Public Sub MoveData()

    Dim fileName As String
        fileName = Worksheets("Cover").range("B5").Value

    Dim path As String
        path = "C:\Users\(user)\Documents\(folder)\" & fileName & ".csv"

    Dim currentWB As Workbook
    Set currentWB = ThisWorkbook

    Dim openWB As Workbook
    Set openWB = Workbooks.Open(path)

    Dim openWs As Worksheet
    Set openWs = openWB.Sheets(fileName)

    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Data Source=" & path & ";" & _
                    "Extended Properties=Excel 12.0 Xml;"
        .Open
    End With

    strQuery = "SELECT * FROM [filename$C2:C100]"

    Set cmd = New ADODB.Command
    With cmd
        .ActiveConnection = cn
        .CommandText = strQuery
    End With

    Dim rst As New ADODB.Recordset
    With rst
        .ActiveConnection = cn
        .Open cmd
    End With

    currentWB.Worksheets("Bms").range("C7").CopyFromRecordset rst

    openWB.Close

End Sub

问题出现在 strQuery = "SELECT * FROM [fileName$C2:C100]"。 sheet 名称将始终与文件名相同。代码似乎将 fileName 作为文字字符串,这是我不想要的。如何允许 sheet 名称是动态的?

变化:

strQuery = "SELECT * FROM [filename$C2:C100]"

至:

strQuery = "SELECT * FROM [" & filename & "$C2:C100]"

您需要使用 & 将文件名连接到字符串中,例如:

strQuery = "SELECT * FROM [" & filename & "$C2:C100]"