2017-10-13 18 views
0

2つのExcelワークブックがあり、以下のマクロを使用してソースWBを開かずに、データ(A1:C5)を別のもの(WB1)私はそれがターゲットブックに貼り付ける前に、レコードセット内のデータをフィルタ処理する必要があります。 フィルタは、列 "C"のレコード= "いいえ"を削除するものです どうすればいいですか?それはちょうどあなたのselect文に不要なレコードを除外するために、より一般的なのです"レコードセット"内の特定のレコード(行と列)を返す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レコードセットのプロパティをgoogleしましたか? 'AbsolutePosition'は良い候補のようです。 https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/absoluteposition-property-ado –

答えて

0

を:以下 は、私が使用していたコードであるなど

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

F1、F2、F3、もしデフォルトのフィールド名です照会されるデータにはヘッダー行がありません。

+0

ありがとう!Tim! –

+0

Tim:「いいえ」のレコードだけでなく、数字のレコードが保存されている間はすべての文字列レコードが削除されるという問題があります。これはあなたのコードを組み込む前でも起こります。どうすれば解決できますか? 注:フィールドタイプは数字と見なされ、すべての文字列レコードは考慮されていないようです。フィールドの型を文字列に変更するために追加するコードは何ですか? これを新しい質問として追加する必要がありますか? –

+0

これは別の問題であるため、私は新しい質問を開始します。コードをもう一度共有すれば、サンプルデータを含めるか、ファイルをデータと共有して、人々が問題を再現できるようにすると便利です。 –