如何使用Addin Excel中的宏?

时间:2019-03-07 14:40:31

标签: excel vba vb.net

我开始用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

1 个答案:

答案 0 :(得分:0)

如果您从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对象。