| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5373 人关注过本帖, 2 人收藏
标题:VB6如何删除指定EXCEL工作簿的VBA工程?
只看楼主 加入收藏
PJPX
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2009-7-27
结帖率:80%
收藏(2)
已结贴  问题点数:20 回复次数:11 
VB6如何删除指定EXCEL工作簿的VBA工程?
如题,在VB6中如何编写代码删除指定EXCEL工作簿中的VBA工程(模块、类模块、窗体)?
搜索更多相关主题的帖子: EXCEL 
2011-02-11 15:23
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
EXCEL工作簿中不能删除?

无知
2011-02-11 18:12
PJPX
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2009-7-27
收藏
得分:0 
以下是引用Artless在2011-2-11 18:12:51的发言:

EXCEL工作簿中不能删除?
是这样的,前阵单位的电脑好多都中了EXCEL宏病毒,我自己的电脑或者身边同事的电脑当然可以由通过手动删除染毒文件来解决,问题是好些分支机构的电脑也中了宏病毒,我想写个小工具通过电子邮件发过去帮他们解决。
2011-02-14 08:28
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:20 
程序代码:
Public Sub DelVbaProject(ByVal sFileName As String)'这里参数即是XLS文件的完整路径,如:c:\myapp\1.xls
    On Error Resume Next
    Dim xlsApp As New Excel.Application'需要在工程里引用EXCEL对象哦
    Dim xlsWorkBook As Excel.Workbook
    Dim vbPro
        Set xlsWorkBook = xlsApp.Workbooks.Open(sFileName)
        Set vbPro = ActiveWorkbook.VBProject
        With vbPro
             For i = .VBComponents.Count To 1 Step -1
                    LCount = .VBComponents(i).CodeModule.CountOfLines
                    .VBComponents(i).CodeModule.DeleteLines 1, LCount
                    .VBComponents.Remove .VBComponents(i)
            Next i
        End With
        xlsWorkBook.Save
        xlsWorkBook.Close
        xlsApp.Quit
End Sub

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-02-14 12:26
PJPX
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2009-7-27
收藏
得分:0 
以下是引用不说也罢在2011-2-14 12:26:45的发言:

Public Sub DelVbaProject(ByVal sFileName As String)'这里参数即是XLS文件的完整路径,如:c:\myapp\1.xls
    On Error Resume Next
    Dim xlsApp As New Excel.Application'需要在工程里引用EXCEL对象哦
    Dim xlsWorkBook As Excel.Workbook
    Dim vbPro
        Set xlsWorkBook = xlsApp.Workbooks.Open(sFileName)
        Set vbPro = ActiveWorkbook.VBProject
        With vbPro
             For i = .VBComponents.Count To 1 Step -1
                    LCount = .VBComponents(i).CodeModule.CountOfLines
                    .VBComponents(i).CodeModule.DeleteLines 1, LCount
                    .VBComponents.Remove .VBComponents(i)
            Next i
        End With
        xlsWorkBook.Save
        xlsWorkBook.Close
        xlsApp.Quit
End Sub
先谢谢版主,但代码运行后目标工作簿中的VBA模块仍未清除,不知道是哪里仍存在问题?

[ 本帖最后由 PJPX 于 2011-2-14 17:22 编辑 ]
2011-02-14 17:16
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
代码本身没有问题的。我测试过。你也可以找任意一个有宏的XLS文件测试一下。
请注意下面两点:
1)EXCEL中将宏的级别设置为“低”;
2)EXCEL中,菜单——工具——宏——安全性——可靠发行商——选中“信任对于‘VISUAL BASIC’项目”的访问。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-02-14 17:22
PJPX
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2009-7-27
收藏
得分:0 
以下是引用不说也罢在2011-2-14 17:22:09的发言:

代码本身没有问题的。我测试过。你也可以找任意一个有宏的XLS文件测试一下。
请注意下面两点:
1)EXCEL中将宏的级别设置为“低”;
2)EXCEL中,菜单——工具——宏——安全性——可靠发行商——选中“信任对于‘VISUAL BASIC’项目”的访问。
原来是第2项要选上,现在代码测试通过。从方便操作人员使用角度考虑,能否请版主再给一句代码,自动修改以上二点的EXCEL选项?谢谢。
2011-02-14 17:36
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
以下是引用PJPX在2011-2-14 17:36:05的发言:

原来是第2项要选上,现在代码测试通过。从方便操作人员使用角度考虑,能否请版主再给一句代码,自动修改以上二点的EXCEL选项?谢谢。

一句代码?

无知
2011-02-14 19:57
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
以下是引用Artless在2011-2-14 19:57:05的发言:

 
一句代码?
呵呵。一句代码肯定是不行的。这里还是给楼主一个思路吧。楼主可能要进一步学习VB技术。
1)使用VB6操作注册表的方法,枚举注册表中HKEY_USERS下项名称为AccessVBOM的项;
2)将该项的值设置为REG_DWORD类型,赋值为 1 ,就可以了。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-02-14 20:13
PJPX
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2009-7-27
收藏
得分:0 
回复 9楼 不说也罢
再次感谢版主的指导,VB6我是新手,修改注册表的操作以前感觉有点复杂就没去学(感觉够用就好),现在看来还是要学一点防身才好。
2011-02-14 23:15
快速回复:VB6如何删除指定EXCEL工作簿的VBA工程?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved