如何将工作表从Excel文件添加到另一个文件?

理查德

因此,我试图编写一个Excel宏,将Excel文件中的2个工作表添加到一个新的工作表中。

因此,我尝试这样:

Sub addfile()

Dim sheet1 As Worksheet
Dim sheet2 As Worksheet
Set sheet1 = Sheets.Add(Type:="C:\Users\Helge\AppData\Roaming\Microsoft\Templates\page1.xltx")
Set sheet2 = Sheets.Add(Type:="C:\Users\Helge\AppData\Roaming\Microsoft\Templates\page2.xltx")

End Sub

当我对其进行测试时,它会导入第一页,但是第二页会给我一个运行时错误1004。为什么会发生这种情况?还有另一种方法可以通过VBA将2张纸从一个Excel文件传送到另一个文件吗?

瓦里阿图斯

令我惊讶的是,此版本的代码实际上对我有用。

Sub addfile()

Dim Sheet1 As Worksheet
Dim Sheet2 As Worksheet
Set Sheet1 = Sheets.Add(Type:=Environ("Userprofile") & "\OneDrive\Desktop\Template1.xltx")
Set Sheet2 = Sheets.Add(Type:=Environ("Userprofile") & "\OneDrive\Desktop\Book2.xlsx")
Debug.Print Sheet1.Name, Sheet2.Name
End Sub

原因我吃惊的是,Sheet1Sheet2是默认的代号,在任何工作簿中的第一和第二的工作表。因此,有之间的命名冲突工作表Sheet1工作簿和工作表Sheet1声明应该浮出水面不迟Debug.Print Sheet1.Name实际上,可能有。我没有检查打印哪个名字。但是代码并没有崩溃。由于它在您的计算机上崩溃,因此您可能具有较旧版本的Excel。尽量不要使用Excel也使用的变量名。或路径和文件名有问题,很难用这种语法说出来,因此我也被愚弄了一段时间。

实际上,只有在发现我的桌面位于OneDrive上之后,才发现以上内容,而不是在编写下面的函数之前,避免使用Sheets.Add它还具有一些其他功能,例如能够指定要从模板中提取的图纸(您可以将一个模板包含2张或更多张图纸)。您可以指定索引号或工作表名称。如果您指定了副本,该函数也会为副本指定一个名称。

Private Function AddWorksheet(ByVal Template As String, _
                              TabId As Variant, _
                              Optional ByVal TabName As String) As Worksheet

    Dim Wb          As Workbook
    Dim Path        As String
    Dim FileName    As String
    
    Set Wb = ThisWorkbook               ' change to suit
    ' make sure the path ends on "\"
    Path = "C:\Users\Helge\AppData\Roaming\Microsoft\Templates\"
    
    With Workbooks.Open(Path & Template)
        .Sheets(TabId).Copy After:=Wb.Sheets(Wb.Sheets.Count)
        .Close
    End With
    Set AddWorksheet = ActiveSheet
    If Len(TabName) Then ActiveSheet.Name = TabName
End Function

您可以从子例程中调用该函数,如下所示:

Sub AddWorksheets()

    Dim Tab1        As Worksheet
    Dim Tab2        As Worksheet
    
    Application.ScreenUpdating = False
    Set Tab1 = AddWorksheet("Page1.xltx", 1, "New Tab")
    Set Tab2 = AddWorksheet("Page2.xltx", "Sheet1", "Another new Tab")
    Application.ScreenUpdating = True
End Sub

请观察两个函数调用之间的区别。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据唯一 ID Nr 将工作表 1 中的值添加到同一 Excel 文件中的另一个工作表?

如何将另一个文件添加到我的请求中?

如何将数据添加到另一个文件变量中的数组?

如何将混音从一个文件添加到另一个文件

如何将XIB文件中的UIView作为子视图添加到另一个Xib文件

如何将html文件添加到另一个html文件中(带有示例)

如何将字符串从名称列表文件添加到另一个文件?

如何将表中的值添加到另一个表中?

如何将另一个孩子添加到响应数据表

如何将War文件添加到另一个Java Web应用程序依赖项?

Spring Boot:如何将另一个WAR文件添加到嵌入式tomcat?

如何将字典作为另一个对象添加到文件中的原始嵌套

如何将保存在文件中的值添加到另一个变量?

如何将一个文件中的一行一行添加到另一个文件中

如何将数据从另一个红宝石文件添加到一个红宝石文件

将数据从一个文件添加到另一个文件

如何将“a.csv”文件添加到现有的Excel文件“b.xlsx”中作为一个新的工作表,csv文件名作为Python中的工作表名称?

如何将一个列表添加到另一个列表

awk / sed 如何将带有特殊字符的文件添加到另一个文件中

Excel VBA将选定的数据添加到另一个工作表上的行

动态数据透视表-如何将生成的列添加到另一个表?

如何将文件中的特定行添加到另一个文件中的特定行的末尾?(可能使用sed)

如何将另一个测试源文件夹添加到Maven并将其编译到单独的文件夹中?

将列文本文件的标题添加到另一个文件

PowerShell如何通过ID将列从另一个CSV文件添加到CSV文件?

如何将另一个表添加到具有标识的项目(EF,代码优先)

如何将另一个表中的字段添加到左连接查询 MS Access

如何将一个文件夹中的多个 Excel 工作簿中除工作表 1 和工作表 2 之外的所有工作表复制到另一个工作簿中

如何将多个图表添加到一个Excel的不同工作表中?