2017-10-13 40 views
0

我有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 
+0

它是一个记录集,还是“记录集”? –

+0

都是一样的吗? –

+0

你为什么把它放在引号中?这表明它不是一个真正的记录集。无论如何,你将需要显示一点努力(最好是你现有的一些代码),否则你的问题可能会被关闭。你谷歌的ADO记录集的属性? 'AbsolutePosition'似乎是一个很好的候选人。 https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/absoluteposition-property-ado –

回答

0

这是比较典型的,只是排除在你的SELECT语句中不需要的记录:

szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "] where F3<>'No'" 

F1,F2,F3等都是默认的字段名称,如果被查询的数据没有标题行。

+0

非常感谢蒂姆! –

+0

提姆:我有问题,不仅删除“否”的记录,而且保留数字记录时全部字符串记录。这甚至在合并你的代码之前就发生了我该如何解决它? 注意:似乎字段类型被视为一个数字,因此不考虑所有字符串记录。添加什么代码来将字段类型更改为字符串? 我应该添加这个作为一个新的问题? –

+0

我会开始一个新的问题,因为这是一个不同的问题。再次分享代码,包含一些示例数据或者与数据共享文件以便人们可以重现您的问题会很有用。 –