如何select使用ADODB移动数据的Excel VBAmacros的dynamic工作表名称?
我正在使用macros在ADODB连接的工作簿中移动数据。 从closures的工作簿中select数据时,我需要将表格名称标记为dynamic。 但是,当使用我的stringvariables的名称,代码将不会运行。
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]"
。 工作表名称将始终与文件名相同。 代码似乎把fileName
作为一个文字string,我不想要的。 我怎样才能让表格名称是dynamic的?
您需要使用&
来连接文件名到string中,例如:
strQuery = "SELECT * FROM [" & filename & "$C2:C100]"
更改:
strQuery = "SELECT * FROM [filename$C2:C100]"
至:
strQuery = "SELECT * FROM [" & filename & "$C2:C100]"