我有2个excel工作簿,并且正在将数据(A1:C5)从一个(WB1)拉到另一个,而不使用下面的宏打开源WB。我需要在将数据粘贴到目标工作簿之前过滤数据。 该过滤器是删除列“C”中的任何记录=“否” 我该怎么做? 下面是我使用的代码:在“记录集”中返回特定记录(行和列)的VBA代码
Sub TransferData___()
Dim sourceFile As Variant
sourceFile = "C:\WB1.xlsx"
GetData sourceFile, "Sheet1", "A1:C5", Sheets("Sheet1").Range("A1")
End Sub
Public Sub GetData(sourceFile As Variant, SourceSheet As String, _
SourceRange As String, TargetRange As Range)
Dim rsCon As Object
Dim rsData As Object
Dim szConnect As String
Dim szSQL As String
Dim lCount As Long
' Create the connection string.
If Val(Application.Version) < 12 Then
szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sourceFile & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"";"
Else
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & sourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No"";"
End If
szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "];"
Set rsCon = CreateObject("ADODB.Connection")
Set rsData = CreateObject("ADODB.Recordset")
rsCon.Open szConnect 'here the file is opened in the background
rsData.Open szSQL, rsCon, 0, 1, 1 'read data
TargetRange.Cells(1, 1).CopyFromRecordset rsData
' Clean up our Recordset object.
rsData.Close
Set rsData = Nothing
rsCon.Close
Set rsCon = Nothing
Exit Sub
End Sub
它是一个记录集,还是“记录集”? –
都是一样的吗? –
你为什么把它放在引号中?这表明它不是一个真正的记录集。无论如何,你将需要显示一点努力(最好是你现有的一些代码),否则你的问题可能会被关闭。你谷歌的ADO记录集的属性? 'AbsolutePosition'似乎是一个很好的候选人。 https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/absoluteposition-property-ado –