2016-07-15 21 views
0

,發現關於VBA導入一個關閉的工作簿的第一頁,我試圖通過表搜索線程數對於已使用inputbox鍵入的設置詞的已關閉工作簿。一旦發現該值拉動整行並粘貼到活動的第二工作簿中。VBA代碼搜索關閉的工作簿基於關閉的輸入框匹配和拉整行周圍搜查活動工作簿

下面是得到了香港專業教育學院的代碼上的任何幫助工作將不勝感激。

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

Kyle感謝您的快速回復!,我已對您突出顯示的更改進行了修改,但在工作簿中未產生任何結果。結果需要從「主」表單上的第5行開始複製(表1) – Smith369

+0

您應該取出「On Error Resume Next」並再試一次。該行將掩蓋任何錯誤並使調試更加困難。上面的代碼應該可以工作。 – Kyle

+0

我已刪除On Error Resume Next仍循環但不產生任何結果,以澄清我希望從中拉出結果的工作簿稱爲Quick Test.xlsm,結果複製到Test2.xlsm。兩者都駐留在相同的文件夾中。 – Smith369

相關問題