2016-07-15 4 views
0

VBAに関して、検索したVBAに関する最初のシートを読み込んで、入力ボックスを使用してタイプされたセット単語のクローズドブックの値が見つかったら行全体を引っ張り、アクティブな2番目のワークブックに貼り付けます。VBAコードを使用して、入力ボックスに基づいて一致するブックを検索し、行全体をアクティブなブックにプルするコード

以下は、コードiveがどんな助けになっても大変感謝しています。

Dim srcWorkbook As Workbook 
    Dim destWorkbook As Workbook 
    Dim srcWorksheet As Worksheet 
    Dim destWorksheet As Worksheet 
    Dim SearchRange As Range 
    Dim destPath As String 
    Dim destname As String 
    Dim destsheet As String 
    Set srcWorkbook = ActiveWorkbook 
    Set srcWorksheet = ActiveSheet 
    Dim vnt_Input As String 

    vnt_Input = Application.InputBox("Please Enter Client Name", "Client Name") 

    destPath = "C:\test\" 
    destname = "Test2.xlsm" 
    destsheet = "Sheet1" 

    On Error Resume Next 
    Set destWorkbook = Workbooks(destname) 
    If Err.Number <> 0 Then 
    Err.Clear 
    Set wbTarget = Workbooks.Open(destPath & destname) 
    CloseIt = True 
    End If 

    For Each c In Range("A2:W100").Cells 

    If InStr(c, "vnt_Input") > 0 Then 

    c.EntireRow.Copy 
    destWorkbook.Activate 
    destWorkbook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Offset  (1)  .EntireRow.Select 

    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,SkipBlanks:= _ 
    False, Transpose:=False 
srcWorkbook.Activate 

種類よろしく、

答えて

0

あなたが作る必要があるカップルの変更があります。下のコード全体を参照してください。あなたの迅速な応答を

Dim srcWorkbook As Workbook 
    Dim destWorkbook As Workbook 
    Dim srcWorksheet As Worksheet 
    Dim destWorksheet As Worksheet 
    Dim SearchRange As Range 
    Dim destPath As String 
    Dim destname As String 
    Dim destsheet As String 
    Set srcWorkbook = ActiveWorkbook 
    Set srcWorksheet = ActiveSheet 
    Dim vnt_Input As String 

    vnt_Input = Application.InputBox("Please Enter Client Name", "Client Name") 

    destPath = "C:\test\" 
    destname = "Quick Test.xlsm" 
    destsheet = "Sheet1" 

    On Error Resume Next 
    Set destWorkbook = ThisWorkbook 
    If Err.Number <> 0 Then 
    Err.Clear 
    Set wbTarget = Workbooks.Open(destPath & destname) 
    CloseIt = True 
    End If 

    For Each c In wbTarget.Sheets("Companies").Range("A2:W100") 'No need for the .Cells here 

     If InStr(c, vnt_Input) > 0 Then 'vnt_Input is a variable that holds a string, so you can't put quotes around it, or it will search the string for "vnt_Input" 

      c.EntireRow.Copy 
      destWorkbook.Sheets("Master").Range("A" & Rows.Count).End(xlUp).Offset(1,0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,SkipBlanks:= _ 
    False, Transpose:=False 'Please don't use Select and Activate. There is almost never a need for it. 
     End if 
    Next c 
+0

カイルのおかげ!、私はあなたが強調しているの変更、マクロが実行してきたが、ワークブック上の任意の結果を生成しません:私は、変更内容をコメントします。結果は「マスター」シート(シート1)の第5行からコピーを開始する必要があります。 – Smith369

+0

「On Error Resume Next」を取り出してもう一度やり直す必要があります。その行はエラーを隠し、デバッグをもっと難しくします。上記のコードはうまくいくはずです。 – Kyle

+0

私はOn Error Resumeを削除しましたが、次のサイクルが繰り返されますが、結果が得られないワークブックを明確にするためにQuick Test.xlsmとTest2.xlsmに結果をコピーするための結果が生成されます。両方とも同じフォルダにあります。 – Smith369

関連する問題