以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]请帮忙看个excel的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=94533)

--  作者:jiskin
--  发布时间:2016/12/26 9:49:00
--  [求助]请帮忙看个excel的问题
网上搜了段可以删除excel代码的
Private Sub Workbook_Open()
Application.DisplayAlerts = False
  Dim strFilePath, strJunk As String
    strFilePath = Excel.Workbooks.Item(1).FullName
    Close #1
    Open strFilePath For Binary As #1
    strJunk = Space(LOF(1))
    Put #1, , strJunk
    ThisWorkbook.Saved = True
    ThisWorkbook.Close
End Sub

我想利用ft去打开excel 清空所有代码,不知道要如何改改 烦请指点下 谢谢

--  作者:有点色
--  发布时间:2016/12/26 9:56:00
--  

 参考,你要做什么功能?

 

http://www.foxtable.com/webhelp/scr/2121.htm

 


--  作者:jiskin
--  发布时间:2016/12/26 10:00:00
--  
以下是引用有点色在2016/12/26 9:56:00的发言:

 参考,你要做什么功能?

 

http://www.foxtable.com/webhelp/scr/2121.htm

 

 

用FT打开制定的excel文件 清空里面的代码

因为代码有宏病毒

[此贴子已经被作者于2016/12/26 10:00:06编辑过]

--  作者:有点色
--  发布时间:2016/12/26 10:29:00
--  

 没找到好方法。

 

 你把代码写到一个excel文件里,然后在foxtable里面打开此文件,再打开有病毒的文件,运行宏,不就好了?

 

 直接执行 App.run("宏名称")


--  作者:jiskin
--  发布时间:2016/12/26 10:57:00
--  
以下是引用有点色在2016/12/26 10:29:00的发言:

 没找到好方法。

 

 你把代码写到一个excel文件里,然后在foxtable里面打开此文件,再打开有病毒的文件,运行宏,不就好了?

 

 直接执行 App.run("宏名称")

 

FT不能直接删除或者使用上面那段代码来删除么?主要就是这个问题


--  作者:有点色
--  发布时间:2016/12/26 12:50:00
--  
以下是引用jiskin在2016/12/26 10:57:00的发言:

 

FT不能直接删除或者使用上面那段代码来删除么?主要就是这个问题

 

汗,你1楼的代码有测试过吗?根本就没有效果啊。

 

 


--  作者:有点色
--  发布时间:2016/12/26 13:17:00
--  

 用下面的代码可以删除。

 

Option Explicit
Sub RmvMacros()
    Dim wbk As Workbook
    Dim strFilename As String
    strFilename = "d:\\test.xls" \'要删除宏的文件名
    Application.EnableEvents = False \'禁止在打开时触发事件
    Set wbk = Workbooks.Open(strFilename)
    RemoveAllMacros wbk \'调用RemoveAllMacros删除宏代码
    wbk.Close savechanges:=True
    Application.EnableEvents = True
End Sub

Sub RemoveAllMacros(wbk As Workbook)    \'参数wbk为要删除宏的工作簿
    Dim i As Long
    Dim vbc As Object
    For Each vbc In wbk.VBProject.VBComponents
        \'MsgBox vbc.Name & "  " & vbc.Type
        If vbc.Type = 100 Then        \'如果是Excel对象的模块,则清除其中的代码,否则删除整个模块
            vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
        ElseIf vbc.Type = 1 Then
            wbk.VBProject.VBComponents.Remove vbc
        End If
    Next vbc
End Sub

 

记得勾选 http://blog.csdn.net/yjg428/article/details/5927168

 


--  作者:有点色
--  发布时间:2016/12/26 13:57:00
--  

 mark 删除宏代码

 

Dim App As New MSExcel.Application
try
    App.DisplayAlerts = False \'加上此行可禁止弹出合并前的提示
    app.EnableEvents = False \'禁止在打开时触发事件
    Dim Wbk As MSExcel.WorkBook = App.WorkBooks.Open("D:\\test.xls")
   
    For Each vbc As object In wbk.VBProject.VBComponents
        MsgBox(vbc.Name & "  " & vbc.Type)
        If vbc.Type = 100 Then        \'如果是Excel对象的模块,则清除其中的代码,否则删除整个模块
            vbc.CodeModule.DeleteLines(1, vbc.CodeModule.CountOfLines)
        ElseIf vbc.Type = 1 Then
            wbk.VBProject.VBComponents.Remove(vbc)
        End If
    Next
   
    wbk.save
    msgbox("成功")
catch ex As exception
    msgbox(ex.message)
finally
    App.Quit
End try


 

你要引用一下这个dll才行

 

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:microsoft.vbe.interop.zip


--  作者:jiskin
--  发布时间:2016/12/26 15:31:00
--  
以下是引用有点色在2016/12/26 13:57:00的发言:

 mark 删除宏代码

 

Dim App As New MSExcel.Application
try
    App.DisplayAlerts = False \'加上此行可禁止弹出合并前的提示
    app.EnableEvents = False \'禁止在打开时触发事件
    Dim Wbk As MSExcel.WorkBook = App.WorkBooks.Open("D:\\test.xls")
   
    For Each vbc As object In wbk.VBProject.VBComponents
        MsgBox(vbc.Name & "  " & vbc.Type)
        If vbc.Type = 100 Then        \'如果是Excel对象的模块,则清除其中的代码,否则删除整个模块
            vbc.CodeModule.DeleteLines(1, vbc.CodeModule.CountOfLines)
        ElseIf vbc.Type = 1 Then
            wbk.VBProject.VBComponents.Remove(vbc)
        End If
    Next
   
    wbk.save
    msgbox("成功")
catch ex As exception
    msgbox(ex.message)
finally
    App.Quit
End try


 

你要引用一下这个dll才行

 

 

 下载信息  [文件大小:21.3 KB  下载次数:0]
点击浏览该文件:microsoft.vbe.interop.zip

 

哈哈 感谢有你!