我有一个宏,我在网上找到并一直用来允许我导出活动工作簿中的所有图表对象。当我将它放在自己的正常工作簿中时似乎工作得很好。
但是,我希望这是一个可以在任何给定工作簿上使用的通用函数,因此我将此代码放在我的个人excel工作簿中。执行此操作后,我注意到代码现在每次打开我的Excel应用程序时都会运行,而且我基本上会打开一堆空的“.png”文件。
如何在每次应用程序打开时阻止此代码运行?它是一个excel设置还是宏代码固有的错误?
我的个人工作簿中有其他宏似乎正常工作(仅在通过工具> VB>宏菜单选择时运行),所以我觉得代码出了问题。任何帮助将不胜感激。
'the main problematic function'
Sub ExportAllPossibleCharts()
Dim i As Integer, exportCount As Integer
Dim fileNum As String, fileBase As String
Dim sheetObj As Worksheet
Dim chartObj As Chart
fileBase = ActiveWorkbook.FullName
fileBase = Replace(fileBase, ".xlsx", "")
exportCount = 0
'First, export all charts that are in their own sheets'
For Each chartObj In ActiveWorkbook.Charts
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
chartObj.Export fileBase & "_chart" & fileNum & ".png"
Next
'Then, export all charts that are embedded inside normal sheets'
For Each sheetObj In ActiveWorkbook.Worksheets
For i = 1 To sheetObj.ChartObjects.Count
fileNum = NiceFileNumber(exportCount)
exportCount = exportCount + 1
'Do the export'
sheetObj.ChartObjects(i).Activate
ActiveChart.Export fileBase & "_chart" & fileNum & ".png"
Next i
Next
End Sub
'small nicety to ensure two-digits for better file sorting'
Function NiceFileNumber(num As Integer) As String
If num < 10 Then
NiceFileNumber = "0" & num
Else
NiceFileNumber = num
End If
End Function
答案 0 :(得分:0)
我不会将此宏放在“每次打开Excel时运行”位置。那不是你想要的。相反,我会将此宏保存在插件中,并在Office-Ribbon中添加一个简单的按钮。 这样,您的宏应该显示,但在您单击按钮之前不要执行任何操作。 为宏构建Button并不复杂,它包含以下步骤: 1.将宏存储为插件(* .xlam)。您将重定向到%Appdata%中的文件夹,这没关系。 Excel存储所有插件。 1a:注意:不要丢弃正常的xlsm文件 - 编辑插件很困难,所以我通常编辑宏并再次保存。 1b:注意:确保在将其保存为插件之前从宏中删除不需要的工作表。如果你忘记了这一点,那么你的插件会变得很大,并且会大大减慢excel的启动速度。 2:关闭所有Excel实例并启动办公室的xml编辑器,如“Microsoft Office的自定义UI编辑器” 3:将Office 2007自定义ui部件插入到文件中 4:将以下xml插入文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="Best" label="Best Tools">
<group id="MyGroup" visible="true" label="GroupLabel">
<button id="MyMacroID" imageMso="TableIndexes" size="large"
label="Export"
onAction="DoMacro" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
如果您的插件中有“Public Sub DoMacro(obj as variant)”,这将调用您的宏。 5.在excel-options中激活你的插件(这是一个不同的四个excel版本,所以你必须自己查找。
其他信息: 有关Ribbon-Xml的更多常规信息,请访问: http://gregmaxey.mvps.org/word_tip_pages/customize_ribbon_main.html
按钮的图像(xml中的imageMso =“TableIndexes”)可以自定义为大量按钮,从microsoft下载文件以查看哪些可用:http://www.microsoft.com/en-us/download/details.aspx?id=11675