找回密码
 加入
搜索
查看: 7313|回复: 11

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

  [复制链接]
发表于 2011-11-29 11:32:18 | 显示全部楼层 |阅读模式
本帖最后由 bhwhui 于 2011-12-1 15:57 编辑

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-11-29 14:07:19 | 显示全部楼层
直接用运行宏的udf可以么?
发表于 2011-11-29 14:07:50 | 显示全部楼层
 楼主| 发表于 2011-11-29 15:02:41 | 显示全部楼层
不好意思,EXcel表启动时运行的不是宏而是VBA,上述方法无效,谢谢您。
发表于 2011-11-29 15:51:01 | 显示全部楼层
关注。。回复赚金币
发表于 2011-11-29 22:02:55 | 显示全部楼层
回复 4# bhwhui


    宏不就是VBA 编写的?..
发表于 2011-11-29 22:10:39 | 显示全部楼层
先$oexcel.enableevents=false,再打开试下
 楼主| 发表于 2011-12-1 11:08:26 | 显示全部楼层
本帖最后由 bhwhui 于 2011-12-1 11:54 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-12-1 15:47:50 | 显示全部楼层
我的情况比较特殊,找到问题的根源了,在于还有另外一个.xll文件需要加载。

可能手工运行时,Excel会自动加载,运行一次。而用程序打开时,Excel就不会自动加载和运行了。。。。
 楼主| 发表于 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

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

评分

参与人数 1金钱 +15 收起 理由
afan + 15

查看全部评分

 楼主| 发表于 2011-12-1 15:52:28 | 显示全部楼层
Sour的方法应该可行!可惜我试了半天,老是出错,水平不够吧,谢谢各位。。。。
 楼主| 发表于 2011-12-1 15:58:45 | 显示全部楼层
问题已解决,麻烦斑竹移动到“已解决区”。
上面已附解决方法,回报论坛吧,让后来人少走些弯路。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 05:31 , Processed in 0.092730 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表