在Excel中运行macros
我不认为这在技术上是一个macros,但我不知道还有什么可以称之为:
用户希望从工作表上的报告打印个别部分。 这些部分只是命名的范围。
一些观点:
- 该文件是一个xlt文件。
- 它被用作生成xls文件的模板。
- 我正在使用Excel 2007,但用户将运行2007和2003的混合。
- 当文件加载到excel中时,询问是否要启用所有的macros,我确认。
- 它所调用的函数是公共的
我在表格的边缘创build了一系列button:
' in a loop With ActiveSheet.Buttons.Add(rngCurrent.Left + 2, rngCurrent.Top + 1, rngCurrent.Width - 2, rngCurrent.Height - 1) .Caption = "Print" .OnAction = "PrintRange" .Font.Size = 7 .Name = CStr(oSite.SiteID) End With
但是,当我点击button,它给“不能运行macros'filename.xls!PrintRange”。
PrintRange函数位于工作表shtPage中,而循环位于名为modPage的模块中。
为什么我不能调用我需要的function,我怎样才能使它工作?
即使您的PrintRange子类声明为Public,仍需要更具体地引用它,以便Excel可以find它,因为您已将它放在工作表的代码部分而不是模块中。
更改:
.OnAction = "PrintRange"
至
.OnAction = "shtPage.PrintRange"
它会工作得很好。
一个警告:如果您已经将页面选项卡上的工作表重命名为“shtPage”,但是在VBA项目浏览器中,Excel仍将工作表称为“Sheet1(shtPage)”,则需要使用“Sheet1”名称Excel识别,而不是页面选项卡上显示的“shtPage”名称。
你是否公开了PrintRange
macros? 它需要被定义如下:
Public Sub PrintRange '// ...' End Sub