使用VBA通过个人工作簿宏打开另一个Excel文件

阿莫尔

我有一个格式化报告的宏。我想将此宏包含在我的个人工作簿中,但是代码的一部分引用了第二个工作簿,并从该工作簿中复制了格式。宏使用个人工作簿只能部分工作(某些工作表未按我想要的方式格式化),并且我认为它不能完全工作,因为我正在引用其他工作簿。当我自己运行宏时,一切正常。我的代码中缺少什么吗?

Sub Format()
    Sheets(Sheets.Count).Move Before:=Sheets(1)
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp

    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        ws.Activate
        Rows("1:11").Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows("12:12").Select
        Selection.Font.Bold = True
        Selection.AutoFilter
        Cells.Select
        Cells.EntireColumn.AutoFit
        ws.Range("A4") = ws.Name
        Range("A4").Select
        Selection.Font.Bold = True
        On Error Resume Next
        Sheets(ActiveSheet.Index + 1).Activate
        If Err.Number <> 0 Then Sheets(1).Activate
    Next ws


    Range("D13:E222").Select
    Selection.ClearContents

    xlApp.Workbooks.Open FileName:="C:\Automation\Format.xlsm"
    Sheets("All_Leadsheet").Select

    Range("A1:O233").Select
    Selection.Copy
    ActiveWorkbook.Activate
    Range("A1:N471").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Range("A1").Select


    Columns("A:F").Select
    Selection.ColumnWidth = 40
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True '!!!!!!!!!!!!!!!!!!!!!
        .Orientation = 0
    End With

    Windows("Format.xlsm").Close savechanges:=False
杰森·布雷迪(Jason Brady)

我相信您遇到的主要问题是,您在引用sheets()和range()时未指定它们的位置,因此VBA在猜测。而且我猜想VBA在猜的是个人工作簿,而是工作表,而不是您要对其执行操作的工作簿。

我不得不猜测一下您在这里所做的事情,但是您应该从我的更改中删除的主要内容是,不必在更改之前先选择一个单元格。我猜这是您录制宏(顺便说一句,很好的学习方式)引起的。但这会减慢您的宏的速度,仅在实际需要时才选择它。实际上,这也适用于工作表,您无需激活工作表即可对其进行更改。希望这可以帮助。

Sub Format()

Dim wb As Workbook

Set wb = ActiveWorkbook

wb.Sheets(Sheets.Count).Move Before:=Sheets(1)
wb.Sheets("not sure which sheet you want").Rows("1:1").Delete 'Shift:=xlUp

Dim ws As Worksheet
For Each ws In wb.Worksheets
    ws.Activate
    ws.Rows("1:11").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    With ws.Rows("12:12")
        .Font.Bold = True
        .AutoFilter
    End With
    ws.Cells.EntireColumn.AutoFit
    ws.Range("A4") = ws.Name
    Range("A4").Font.Bold = True
    'On Error Resume Next 'Careful with these, all your errors will now just resume next
    'Sheets(ActiveSheet.Index + 1).Activate 'Next ws takes care of this, unless you are wanting to skip two worksheets
    'If Err.Number <> 0 Then Sheets(1).Activate
Next ws

Set ws = wb.Sheets(1)
ws.Activate

ws.Range("D13:E222").ClearContents

xlApp.Workbooks.Open Filename:="C:\Automation\Format.xlsm" 'Where is xlApp set at?


Set ws = Sheets("All_Leadsheet")

ws.Range("A1:O233").Copy
'ActiveWorkbook.Activate 'active workbook should already be active
ws.Range("A1:N471").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'ws.Range("A1").Select


With ws.Columns("A:F")
    .ColumnWidth = 40
    .HorizontalAlignment = xlGeneral
    .VerticalAlignment = xlBottom
    .WrapText = True '!!!!!!!!!!!!!!!!!!!!!
    .Orientation = 0
End With

Windows("Format.xlsm").Close savechanges:=False 'Not sure what this file is? Perhaps the individual file before
                                                'moving it to personal workbook? If so delete this.
End Sub

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel 2010在通过VBA打开另一个工作簿时要求两次PW

来自分类Dev

C#打开excel工作簿后,如何防止用户在同一excel实例中打开另一个excel文件(通过Windows)?

来自分类Dev

我可以在单元格公式内的另一个打开的工作簿中使用另一个打开的工作簿的 VBA 函数吗?

来自分类Dev

当我打开另一个Excel文件时,旧工作簿(一次由VBA打开)保持打开状态

来自分类Dev

当宏在当前工作簿上时使用另一个工作簿

来自分类Dev

Excel VBA:Shell可以在另一个Excel实例中的工作簿中运行宏

来自分类Dev

从一个工作簿到另一个工作簿的 Excel 宏数据传输

来自分类Dev

Excel宏(VBA)对照另一个工作簿中的列表检查单元格值

来自分类Dev

使用Excel VBA修改另一个工作簿中的.zoom属性

来自分类Dev

Excel宏将工作簿保存在另一个Excel会话中

来自分类Dev

从另一个工作簿运行宏

来自分类Dev

如何通过另一个工作簿中的 VBA 对象名称引用 Excel 工作表?

来自分类Dev

当修改的工作簿日期/时间大于另一个日期时运行的VBA宏

来自分类Dev

VBA:为另一个工作簿(不是来自)运行宏

来自分类Dev

关闭另一个用户使用VBA在同一台计算机上打开的excel工作簿

来自分类Dev

关闭另一个用户使用VBA在同一台计算机上打开的excel工作簿

来自分类Dev

使用多个工作表对来自另一个工作簿的值求和的宏

来自分类Dev

Excel宏-针对另一个工作簿运行

来自分类Dev

打开另一个工作簿时进入

来自分类Dev

保存另一个已打开的工作簿

来自分类Dev

使用 vba 将数据从一个工作簿传输到另一个工作簿

来自分类Dev

如果打开另一个工作簿,Excel用户定义函数的求值为零

来自分类Dev

Excel VBA onkey宏在另一个宏运行时可以正常工作

来自分类Dev

通过 VBA 将工作簿的命名范围数据复制到另一个工作簿

来自分类Dev

从另一个工作簿中的另一个工作表在一个工作簿中的一个Excel工作表上执行筛选宏

来自分类Dev

通过VBA将数据发送到另一个工作簿

来自分类Dev

Excel宏:初学者-将格式从一个工作簿粘贴到另一个工作簿

来自分类Dev

使用 VBA 将工作表复制到另一个工作簿

来自分类Dev

Excel VBA-我可以在另一个工作簿上处理数据吗?

Related 相关文章

  1. 1

    Excel 2010在通过VBA打开另一个工作簿时要求两次PW

  2. 2

    C#打开excel工作簿后,如何防止用户在同一excel实例中打开另一个excel文件(通过Windows)?

  3. 3

    我可以在单元格公式内的另一个打开的工作簿中使用另一个打开的工作簿的 VBA 函数吗?

  4. 4

    当我打开另一个Excel文件时,旧工作簿(一次由VBA打开)保持打开状态

  5. 5

    当宏在当前工作簿上时使用另一个工作簿

  6. 6

    Excel VBA:Shell可以在另一个Excel实例中的工作簿中运行宏

  7. 7

    从一个工作簿到另一个工作簿的 Excel 宏数据传输

  8. 8

    Excel宏(VBA)对照另一个工作簿中的列表检查单元格值

  9. 9

    使用Excel VBA修改另一个工作簿中的.zoom属性

  10. 10

    Excel宏将工作簿保存在另一个Excel会话中

  11. 11

    从另一个工作簿运行宏

  12. 12

    如何通过另一个工作簿中的 VBA 对象名称引用 Excel 工作表?

  13. 13

    当修改的工作簿日期/时间大于另一个日期时运行的VBA宏

  14. 14

    VBA:为另一个工作簿(不是来自)运行宏

  15. 15

    关闭另一个用户使用VBA在同一台计算机上打开的excel工作簿

  16. 16

    关闭另一个用户使用VBA在同一台计算机上打开的excel工作簿

  17. 17

    使用多个工作表对来自另一个工作簿的值求和的宏

  18. 18

    Excel宏-针对另一个工作簿运行

  19. 19

    打开另一个工作簿时进入

  20. 20

    保存另一个已打开的工作簿

  21. 21

    使用 vba 将数据从一个工作簿传输到另一个工作簿

  22. 22

    如果打开另一个工作簿,Excel用户定义函数的求值为零

  23. 23

    Excel VBA onkey宏在另一个宏运行时可以正常工作

  24. 24

    通过 VBA 将工作簿的命名范围数据复制到另一个工作簿

  25. 25

    从另一个工作簿中的另一个工作表在一个工作簿中的一个Excel工作表上执行筛选宏

  26. 26

    通过VBA将数据发送到另一个工作簿

  27. 27

    Excel宏:初学者-将格式从一个工作簿粘贴到另一个工作簿

  28. 28

    使用 VBA 将工作表复制到另一个工作簿

  29. 29

    Excel VBA-我可以在另一个工作簿上处理数据吗?

热门标签

归档