Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
利用ADO解除一定要启用宏的文件
作者:张立良 | 来源:http://blog.sina.com.cn/ahzll | 时间:2008-10-05 | 阅读权限:游客 | 会员币:0 | 【

在一定要启用宏http://www.excelba.com/Soft/Html/67.html 中,我们利用在当前文档添加一个隐藏的宏表的方法,来做到开启文件时一定要启用宏。由于其优先级高于宏,也就是说宏表中的代码会自动执行,excel无法将其关闭。如果打开时不启用宏,则不能执行这段宏代码,宏表代码就会转入关闭文档的错误处理语句。

 解决方案:
 1、随便打开一个word文档
 2、点菜单 插入 --对象  ,点“由文件创建”,点“浏览”,找到那个问题文档后点确定。
 这样就把这个文档嵌入到word文档中。
 3、然后在双击这个嵌入在word文档中的excel文档,依然会提示“禁用了宏,关闭文档”。
  由于是在DDE环境,excel无法关闭word文档,这样就可以打开这个文档查看内容了。

而要删除这个限制,可以利用ADO来删除宏表中的代码,使这个功能彻底失效!

'并引用ADO,,然后执行这段宏就可以了。
'(引用ADO的方法:在代码工具的界面中,点菜单工具、引用 "Microsoft ActiveX Date Objects 2.5",
'有可能不是2.5,其他版本也可以)

Sub ReSet()
  On Error Resume Next
 
  Dim DB As ADODB.Connection
  Dim RS As Recordset
  Set DB = New ADODB.Connection
  Set RS = New Recordset
 
  Application.DisplayAlerts = False
 
  Dim FileName  As String
  FileName = ThisWorkbook.Path & "\12.xls"   '要替换成那个有问题的文档
 
  DB.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;  Data Source=" & FileName & ";Extended Properties='Excel 8.0;HDR=No'"
  RS.Open "Select * from [Excel吧$]", DB, adOpenDynamic, adLockOptimistic  '把其中的[Excel吧$]的Excel吧替换为宏表名。
 
  Do While Not RS.EOF
     RS.Fields(0) = True
     RS.MoveNext
  Loop
  DB.Close
  Set RS = Nothing: Set DB = Nothing
 
  Dim WB As Workbook, I As Integer
  Set WB = Application.Workbooks.Open(FileName)
  WB.Sheets("Macro1").Delete

  For I = 1 To WB.Names.Count
    WB.Names(I).Delete
  Next I

  WB.Close True
 
  MsgBox "文档已恢复完毕!" + Chr(13) + "如果有错误提示,请手工删除Auto_Activate的名称定义即可!(依次点击菜单:插入、名称、定义)", vbInformation, "http://excelba.com"
  
  Application.DisplayAlerts = True
 
End Sub

ADO能在不打开Excel文件的情况下处理Excel的数据,呵呵,一物降一物,一山更比一山高,只要你理解其原理,就会有破解的方法。*~_~*

文章录入:admin | 浏览次数:
相关评论(以下网友评论只代表其个人观点,不代表Excel吧的观点或立场)
相关信息

关于本站 | 留言本站 | 友情连接 | 后台管理
Copyright © 2005 - 2008 Excel吧 Inc. All Rights Reserved.
HxCms Ver9.0  闽ICP备06001689号
关闭此窗口