簡體   English   中英

在一個工作簿中查找並復制單元格

[英]Finding and Copying Cells from One Workbook to Another

我有一個可以正常工作的代碼,在這里我用工作簿1中列表中的名稱在工作簿1中創建了一個新工作表的加載。然后,它從工作簿中另一個工作表中復制單元格並將工作表名稱放在單元格D1中。 這按預期工作。

然后,我想在另一個工作簿中查找新的工作表名稱,並復制一些與其行號有關的單元格。 我的代碼打開了工作簿2(設置為wbtemps),但隨后似乎沒有轉到工作簿2中的指定工作表並找到了該單元格。 我嘗試將代碼分成幾部分,如果我事先選擇了工作表,它將找到該單元格,但是它似乎仍然沒有復制我想要的單元格...

任何幫助,將不勝感激。 我顯然在某處錯過了一些東西...

Set wb = ActiveWorkbook

InpFolder = ThisWorkbook.Path & "\Matrix_Inputs\"
MyValue1 = InputBox("WP1 Draft Matrix Filename", "Input", "Filename")

For Each cell In wsWithSheetNames.Range(Range("B5"), Range("B5").End(xlDown))
    With wb
      .Sheets.Add after:=.Sheets(.Sheets.Count)
      On Error Resume Next
      ActiveSheet.Name = RemoveSpecialCharactersAndTruncate(cell.Value)
      Sheets("Template").Cells.Copy ActiveSheet.Range("A1")
      ActiveSheet.Range("D1").Value = cell.Value

      Application.ScreenUpdating = False
      Set wbtemp = Workbooks.Open(InpFolder & MyValue1 & ".xls*", True, True) 'The code works up to here
      Set n = wbtemp.Sheets("2_Matrix Likely Pressures").Range("B1").EntireColumn.Find(cell.Value)
      wbtemp.Sheets("2_Matrix Likely Pressures").Range(.Range("E" & n.Row), .Range("E", n.Row).End(xlToRight)).Copy
      wb.ActiveSheet.Range("B21").PasteSpecial Transpose:=True
      wbtemp.Close False
      Set wbtemp = Nothing
      Application.ScreenUpdating = True
      If Err.Number = 1004 Then
         Debug.Print cell.Value & " already used as a sheet name"
      End If
      On Error GoTo 0
    End With
Next cell

因此,最后,它似乎可以正常工作並找到我要復制的范圍的唯一方法是,如果我單獨選擇了工作表,然后選擇了要復制的范圍的第一個單元格。 我知道您不必使用Select,但是似乎沒有其他方法起作用(我在互聯網上進行了大量搜索)。 我已經包含了我用於悲傷的那部分的最終代碼。

Set wbtemp = Workbooks.Open(InpFolder & MyValue1 & ".xls*", True, True)

Set n = wbtemp.Sheets("2_Matrix Likely Pressures").Range("B1").EntireColumn.Find(cell.Value)
With wbtemp
    .Sheets("2_Matrix Likely Pressures").Select
    .Sheets("2_Matrix Likely Pressures").Cells(n.Row, "E").Select
    .Sheets("2_Matrix Likely Pressures").Range(Selection, Selection.End(xlToRight)).Copy
End With
.ActiveSheet.Range("B21").PasteSpecial Transpose:=True
Application.CutCopyMode = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM