bhwhui 发表于 2011-11-29 11:32:18

【已解决】请教打开带有宏的Excel表数据无法显示的问题,谢谢。

本帖最后由 bhwhui 于 2011-12-1 15:57 编辑

在打开一个excel表(带有宏)时,用手工点击打开或使用Run命令(复制到启动目录)很正常。如附件11.jpg所示。
而如果使用_ExcelBookopen 或者Object 命令打开,就出现错误,提示“公式中包含不可识别的文本”,如12.jpg所示。
13.jpg是使用3种方法的截图。

因为使用run命令打开,虽然正常,但获得句柄很麻烦,操作起来不顺手。
请教1:有什么方法能正常打开带有宏的Excel表?
    2:如果都不行,如何获得run命令打开的Excel句柄?这是没办法的办法了。。。
谢谢

sour 发表于 2011-11-29 14:07:19

直接用运行宏的udf可以么?

sour 发表于 2011-11-29 14:07:50

http://www.autoitx.com/forum.php?mod=viewthread&tid=13074&highlight=%D4%CB%D0%D0%2B%BA%EA

bhwhui 发表于 2011-11-29 15:02:41

不好意思,EXcel表启动时运行的不是宏而是VBA,上述方法无效,谢谢您。

nivisde 发表于 2011-11-29 15:51:01

关注。。回复赚金币

bdancerlc 发表于 2011-11-29 22:02:55

回复 4# bhwhui


    宏不就是VBA 编写的?..

kevinch 发表于 2011-11-29 22:10:39

先$oexcel.enableevents=false,再打开试下

bhwhui 发表于 2011-12-1 11:08:26

本帖最后由 bhwhui 于 2011-12-1 11:54 编辑

events在后面打开,程序如下,一样的结果。还是“存在不可识别的文本”。问题没解决,谢谢您。。。

bhwhui 发表于 2011-12-1 15:47:50

我的情况比较特殊,找到问题的根源了,在于还有另外一个.xll文件需要加载。

可能手工运行时,Excel会自动加载,运行一次。而用程序打开时,Excel就不会自动加载和运行了。。。。

bhwhui 发表于 2011-12-1 15:50:18

加载。xll的代码如下:

Private Sub VerifyOpen()
      Dim XLLName As String, Quote As String
      Dim theArray As Variant
      Dim i As Integer
      Dim XLLFound As Boolean
      
      XLLName = "Addin.xll"          '这里改XLL文件名称
      'Application.RegisteredFunctions
      theArray = Application.RegisteredFunctions
      If Not (IsNull(theArray)) Then
          For i = LBound(theArray) To UBound(theArray)
            If (InStr(theArray(i, 1), XLLName)) Then         
                  Exit Sub                                    
            End If
          Next i
      End If
      
      Quote = String(1, 34)
      WASPCNPath = ThisWorkbook.Path
      
      WASPCNPath = WASPCNPath & "\\"
      XLLFound = Application.RegisterXLL(WASPCNPath & XLLName)
      If (XLLFound) Then                                          
          Exit Sub
      End If
         
      WASPCNPath = "" & "\\"
      XLLFound = Application.RegisterXLL(WASPCNPath & XLLName)
      If (XLLFound) Then                                       
          Exit Sub
      End If
         
      WASPCNPath = "\\LIBRARY\\WASPCN" & "\\"
      XLLFound = Application.RegisterXLL(WASPCNPath & XLLName)
      If (XLLFound) Then                                       
          Exit Sub
      End If
      
   MsgBox ("Cannot find XLL file")
      ThisWorkbook.Close (False)
End Sub

谢谢大家的帮助。。。。。

bhwhui 发表于 2011-12-1 15:52:28

Sour的方法应该可行!可惜我试了半天,老是出错,水平不够吧,谢谢各位。。。。

bhwhui 发表于 2011-12-1 15:58:45

问题已解决,麻烦斑竹移动到“已解决区”。
上面已附解决方法,回报论坛吧,让后来人少走些弯路。。。。。
页: [1]
查看完整版本: 【已解决】请教打开带有宏的Excel表数据无法显示的问题,谢谢。