繁体   English   中英

如何使用Addin Excel中的宏?

[英]How to use a macro from an addin excel?

我开始用excel VBA编程,我想做的是:

1)当我打开一个新的excel文件(空)时,我导入了excel加载项

2)然后,我要使用在该插件上实现的宏(在模块中)

3)该加载项基本上将多个excel工作表(在指定路径中)组合为一个(我在其中运行宏的工作表) 注意:它在不用作加载项(即单独使用)时有效

4)当我在一个空的excel文件中运行以下代码时,它不会将其他工作表放在其中。 它只是打开找到的第一个excel文件,什么也没有发生。

您知道我在做什么错误吗? 谢谢你的建议:)。

Sub GetSheets()

Path = "C:specified path\"
Filename = Dir(Path & "*.xlsx")

Do While Filename <> ""

    Workbooks.Open Filename:=Path & Filename, ReadOnly:=True

    For Each Sheet In ActiveWorkbook.Sheets
        Sheet.Copy After:=ThisWorkbook.Sheets(1)
    Next Sheet

    Workbooks(Filename).Close
    Filename = Dir()

Loop

End Sub

如果从Addin启动代码, ThisWorkbook引用Addin文件,但是我想您想将第一个ActiveWorkbook所有内容都合并为目标。

Sub GetSheets()
    Dim fPath As String, fName As String
    Dim destWB As Workbook, currentWB As Workbook
    Dim i As Long

    Set destWB = ActiveWorkbook
    fPath = "C:\specified path\"
    fName = Dir(fPath & "*.xlsx")
    Do While fName <> ""
        Set currentWB = Workbooks.Open(Filename:=fPath & fName, ReadOnly:=True)
        For i = 1 To currentWB.Sheets.Count
            currentWB.Sheets(i).Copy After:=destWB.Sheets(destWB.Sheets.Count)
        Next i
        currentWB.Close SaveChanges:=False
        fName = Dir()
    Loop
End Sub

我建议不要为变量使用内部名称,例如“ Sheet”或“ Filename”,因此我更改了它们的名称。

如果您总是在第一张纸的后面复印,则更改纸页顺序。 所以我改为将其添加到末尾。

由于工作Sheets还包括图表工作表,因此在这种情况下,它是比Worksheet更好的选择。 要遍历它们,我建议使用一个计数器,因为它不是Sheet对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM