当前位置: 代码迷 >> VFP >> 在VFP中怎么控制EXCEL增加宏并始终顺利运行宏,询问解决之道
  详细解决方案

在VFP中怎么控制EXCEL增加宏并始终顺利运行宏,询问解决之道

热度:3832   发布时间:2013-02-26 00:00:00.0
在VFP中如何控制EXCEL增加宏并始终顺利运行宏,询问解决之道?
请问高手,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 的安全性设置一下后再试
  相关解决方案