excel - 如何使用插件 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
解决方案
如果您从插件启动代码,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
对象。
推荐阅读
- python - Python 从动态列表中获取键/值
- javascript - 如何添加事件侦听器以确定单击 div 内的坐标?
- angularjs - 如何将 Django Rest Framework Api 与 AngularJS 中的前端集成?
- php - 在 1 中进行 2 个 SQL 查询?
- python - 无法删除列表中的最后一项,[-1] 不起作用?
- php - 如何使 WordPress 中的网站无响应?
- reactjs - 使用来自组件状态的数据动态创建 React 路由
- mysql - 无法对 laravel 应用程序进行 docker 化(退出代码 1)
- python - 在不覆盖以前的情况下迭代 Pandas 数据框
- solr - SOLR 同义词返回查询值