如何使用使用 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]"
我正在使用宏在具有 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]"