首页 > 解决方案 > 将工作表从关闭的工作簿复制到活动工作簿工作表并附上说明

问题描述

我知道这可能是非常基本的,但我找不到一个有效的一致代码。

我正在尝试将共享驱动器位置上已关闭文件中的第一个也是唯一一个工作表复制到我要从中运行宏的活动工作簿的第一个工作表中。

如果有人可以分享任何帮助,解释一下很棒的步骤代码。

谢谢

标签: excelvbaimportcopy-paste

解决方案


VBA Excel 程序员最有用的功能之一是Excel macro recorder. 我经常使用记录器来了解 Excel 如何编写代码来实现我通过鼠标单击和菜单选择执行的操作。

切入正题。假设我的源工作簿名为 katy_movies.xlsx,其中包含已查看/最喜欢的电影标题和各种单元格格式的列表。假设我打开了该电子表格并希望将其复制并粘贴(保​​留源格式)到另一个工作簿中的空白工作表中。这几乎是宏记录器根据我的鼠标点击和菜单选择“编写”的全部代码(我做了 2 次调整)。

注意: 我的原始解决方案无法打开闭源工作簿。这是执行此操作的代码,并且作为奖励,在复制/粘贴操作后关闭源代码:

Sub Macro3()
'
' Macro3 Macro  (recorded by excel macro recorder)
'
    Workbooks.Open Filename:="\path\to\katy_movies.xlsx"
End Sub

Sub Macro2()
'
' Macro2 Macro
'
    Macro3
    Windows("katy_movies.xlsx").Activate
    Cells.Select
    Selection.Copy
    Windows("Book1").Activate
    Range("A1").Select      ' I manually added this line to ensure a valid paste locn
                            ' for an entire worksheet
    Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
        , SkipBlanks:=False, Transpose:=False
    Range("A1").Select      ' Manually added this line to unselect all cells following
                            ' paste operation.

    Range("A1").Copy        ' Effectively empty clipboard to stop Excel from whining
                            ' about the next Close operation.
    Windows("katy_movies.xlsx").Close  ' close the briefly opened spreadsheet

    ' force focus back to original worksheet
    Windows("Book1").Activate
End Sub

我不能足够强调宏记录器的有用性......


推荐阅读