【问题标题】:How to use a macro from an addin excel?如何使用插件 excel 中的宏?
【发布时间】:2019-03-07 14:40:31
【问题描述】:

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

【问题讨论】:

  • 你的意思是Path = "C:\specified path\"
  • 是的,我只是改变了我的实际路径 xD

标签: excel vba vb.net


【解决方案1】:

如果您从插件启动代码,ThisWorkbook 指的是插件文件,但我猜您想将第一个 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 对象。

【讨论】:

  • 非常感谢上面的代码。它插入订购的床单,这是我不知道该怎么做的事情......但有些事情我无法理解。这段代码应该是从插件运行的吧?我想运行插件但不从那里开始;有,我想从我的工作表中运行宏,但在这种情况下我不能,因为我无权访问插件宏,对吗?我很抱歉这些愚蠢的问题。 -.-
  • 将代码放入模块中(不是工作表的代码),按 F4 在 VBA 编辑器中启用属性编辑器,为该模块指定一个单独的名称 e。 G。 “AddinCode”,重命名您的第一个代码行Public Sub GetSheets() 并通过AddinCode.GetSheets 将其分配给一个按钮,或者从宏列表中手动启动它。如果您需要一个带有按钮的单独插件菜单,请搜索“自定义 UI 编辑器”,因为这是一个较长的故事...... :)
  • Asger,我已经按照你说的做了(更改名称并公开),但我不想有按钮来获取表格...我想运行宏,但此宏不在列表中。
  • 您已经可以将其分配给快速访问工具栏。如果您想将它放在宏列表中,this 可能会有所帮助(不确定)。标记答案描述为here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
  • 2010-12-30
  • 2018-01-30
  • 1970-01-01
  • 2010-10-25
  • 1970-01-01
  • 2019-04-20
相关资源
最近更新 更多