【问题标题】:Copy worksheet from another workbook where the worksheet name can change depending on input从另一个工作簿复制工作表,其中工作表名称可以根据输入而更改
【发布时间】:2020-01-17 09:02:23
【问题描述】:

对于工作,我们有 1 个包含许多不同工作表的 excel 工作簿,我的职责是一次从其中一个工作表中获取信息,然后将其放入另一个工作簿中进行工作。真的很简单,我目前正在学习 VBA,并试图自动化这个过程来开始。

这是我目前所拥有的。它从按下"Macro Test Blank Sheet For new Data.xlsm" 工作簿上的按钮开始。

Workbooks.Open "C:\Macro Test\2019-2020 Reflecto Record.xlsm"

 Workbooks("2019-2020 Reflecto Record.xlsm").Worksheets(1).Range("A1:BA10000").Copy _
    Workbooks("Macro Test Blank Sheet For new Data.xlsm").Worksheets("Data").Range("A1")

ActiveWorkbook.Close

完成后,数据已复制,"2019-2020 Reflecto Record.xlsm" 工作簿已关闭。

目前它正在使用.Worksheet(1) 使用工作簿中的第一页进行复制。这是否可以按名称选择工作表,其中名称输入到按钮旁边的单元格中以启动宏?

【问题讨论】:

  • 除了使用按钮旁边的单元格,您还可以使用输入框,或从下拉列表中选择。

标签: excel vba


【解决方案1】:

如果您在名为“Sheet1”的工作表的单元格 A1 中指定名称(只需将名称更改为您正在工作的工作表)

使用此代码:

Dim sourceSheetName as String

sourceSheetName = Thisworkbook.Worksheets("Sheet1").Range("A1").Value

Workbooks.Open "C:\Macro Test\2019-2020 Reflecto Record.xlsm"

Workbooks("2019-2020 Reflecto Record.xlsm").Worksheets(sourceSheetName).Range("A1:BA10000").Copy _
        Workbooks("Macro Test Blank Sheet For new Data.xlsm").Worksheets("Data").Range("A1")

ActiveWorkbook.Close

我还建议您查看 Power Query 以自动化此类过程

【讨论】:

    【解决方案2】:

    这应该让你开始,生成名称的两种建议方法:

    Sub sheetopener()
    Dim MySh As String 'Dim MySh as a variable to hold the name of your sheet.
    
    MySh = InputBox("Which sheet?", "Sheet picker") 'Set the name of your sheet with a popup box.
    'Mysh = Thisworkbook.Sheet1.Range("A2").value 'Alternative set the name of your sheet in reference to a cell.
    
    Workbooks("Name here").Sheets(MySh).Activate 'Activate the sheet with the just generated name.
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多