2016-07-15 65 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

相关问题