请问高手,vf控制excel自动添加一个宏文件(.bas)并运行宏文件,我在机器上试了很多遍,有时运行很好,有时不能运行,总弹出‘vbe不是一个对象’,不知道为什么。我的机器offic 2003 ,vf6.o,我也设置了宏的安全性为‘低’,且添加了‘信任了vba的访问'.下边的参考程序大多情况可以运行,请高手详解,期待了!!1
简单一句话:在excel中录制宏,在vf中调用并运行宏(即不用手动在vbe中导入选择.bas文件)
请你自己试一试录制宏并vf调用并运行,举其他例子详解更好!!!
vbe对象有关调用的事件方法属性有哪些呀?谢谢各位,辛苦了!!
请参考:来自(http://www.moon-soft.com/program/bbs/readelite876573.htm)
1、先创建文件KbTest.bas,内容如下
Attribute VB_Name = "KbTest"
Public Sub DoKbTest(oSheetToFill As Object)
Dim i As Integer, j As Integer
Dim sMsg As String
For i = 1 To 10
For j = 1 To 2
sMsg = Str(i) & "," & Str(j)
oSheetToFill.Cells(i, j).Value = sMsg
Next j
Next i
End Sub
2、在代码中增加宏并运行宏
oXL = CreateObject("Excel.Application")
oXL.Visible = .t.
oBook=oXL.Workbooks.Add
oSheet = oBook.Sheets(1)
oXL.VBE.ActiveVBProject.VBComponents.Import("C:\KbTest.bas")
oXL.Run("DoKbTest", oSheet)
------解决方案--------------------------------------------------------
应该还是 信任对 Visual Basic 项目”的访问 的问题
试试运行下面的代码,看看是否还出现无法执行的问题
- VB code
oXL = Createobject("Excel.Application")*!* oXL.Visible = .t.oBook=oXL.Workbooks.Add()oSheet = oBook.Sheets(1)Text to cc Noshow Pretext 1+2 Public Sub DoKbTest(oSheetToFill As Object) Dim i As Integer, j As Integer Dim sMsg As String For i = 1 To 10 For j = 1 To 2 sMsg = Str(i) & "," & Str(j) oSheetToFill.Cells(i, j).Value = sMsg Next j Next i End SubEndTextTry oVBE = oXL.VBE.ActiveVBProject oErr = NullCatch To oErrEndtryIf !Isnull(oErr) And oErr.ErrorNo == 1943 Text to cMsg Noshow Pretext 1+2 当前的 Excel 配置不允许执行这个宏,请检查 Excel 配置。 请确认勾选了: 可靠发行商中的 “信任对 Visual Basic 项目”的访问 EndText Messagebox(cMsg, 0, '') oXL.Visible = .T. oXL.CommandBars(1).Controls(6).Controls(14).Controls(3).Execute()EndifTry om = oXL.VBE.ActiveVBProject.VBComponents.Add(1) om.CodeModule.AddFromString(cc) oXL.Run("DoKbTest", oSheet) oXL.Visible = .T.Catch To oErr Messagebox(oErr.Message + 0h0d0a0d0a + '你没有正确设置安全选项。', 0, '') oXL.Quit oXL = NullEndtry
------解决方案--------------------------------------------------------
根据 dkfdtf 版主的意思,你把 Excel 的安全性设置一下后再试