【问题标题】:Copy Sheet1 in Active Workbook to Sheet 2 in Workbook named in Cell of Active Workbook Sheet 2将活动工作簿中的工作表 1 复制到活动工作簿工作表工作表 2 的单元格中命名的工作簿中的工作表 2
【发布时间】:2021-08-29 13:30:33
【问题描述】:

我有一系列工作簿,我不断需要将工作簿的 Sheet1 复制到新工作簿的 Sheet2。工作簿的名称将按序排列(name_May2011_2、name_May2011_3、name_May2011_5)。末尾的数字会变化,不一定是按顺序变化的。我有允许我在新工作表中列出活动工作簿的代码。我需要引用该工作表中的一个单元格作为工作簿的名称作为目标顶部副本。到目前为止,我的代码如下:

[代码] 子 Copy_Merge()

'Declare variables and data types
Dim Wb As Workbook
Dim Ws As Worksheet
Dim i As Single, j As Single


 
'Create a new worksheet and save to object ws
Set Ws = Sheets.Add
 
'Go through open workbooks
For j = 1 To Workbooks.Count
 
    'Save workbook name to cell A1 and downwards
    Range("A1").Cells(j, 1) = Workbooks(j).Name
     
    'Iterate through worksheets in given workbook
    For i = 1 To Workbooks(j).Sheets.Count
   
            'Save worksheet names to cell B1 and cells further right
            Range("A1").Cells(j, i + 1) = Workbooks(j).Sheets(i).Name
 
    'Continue with next worksheet
    Next i
 
'Continue with next workbook
Next j

'这是我遇到问题的部分 '我需要将活动工作簿表 2 的单元格 A2 中的变量设置为字符串 '并将该字符串用作工作簿目标名称

Dim SB As Workbook
Dim Ss As Worksheet

Set SB = ThisWorkbook
Set Ss = ThisWorkbook.Sheet("Sheet2")
Set MyToday = SB.Ss.Range("A2").Value 'name of destination workbook


Sheets("Sheet1").Select
Sheets("Sheet1").Copy Before:=Workbooks(MyToday).Sheets(3)
On Error Resume Next
ActiveSheet.Name = "Sheet2"
On Error GoTo 0

结束子 [/代码]

我已经为此工作了几天,我对编写宏还比较陌生,而且我已经走到了尽头。有人可以帮助解决此代码或建议使用更好的代码吗?

【问题讨论】:

    标签: excel


    【解决方案1】:

    为了从当前工作簿的“Sheet2”的单元格“A2”中检索目标工作簿的名称并使用它将相应的工作簿分配给一个对象,您可以使用:

    Dim SourceWorkbook As Workbook   ' Your SB
    Dim SourceWorksheet As Worksheet ' Your Ss
    
    Dim TargetWorkbook As Workbook
    Dim TargetWorksheet As Worksheet
    Dim TargetWorkbookName As String
    Dim TargetSheetName As String
    
    Set SourceWorkbook = ThisWorkbook
    Set SourceWorksheet = SourceWorkbook.Sheets("Sheet2")           ' the "s" in "Sheets" is important to access the Workbook's Sheet-Collection
    
    TargetWorkbookName = SourceWorksheet.Range("A2").Value          ' TargetWorkbookName is of type "String", thus "Set" is not allowed
    Set TargetWorkbook = Workbooks(TargetWorkbookName)
    TargetSheetName = SourceWorksheet.Range("B2").Value
    Set TargetWorksheet = TargetWorkbook.Sheets(TargetSheetName)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2018-03-22
      • 1970-01-01
      相关资源
      最近更新 更多