ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9097|回复: 12

[求助] 如何做到:不启用宏则看不到内容,启用宏则运行“文档自杀”程序

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-10-8 09:43 | 显示全部楼层 |阅读模式
在网上找到了两个由孔版分享的相关帖子:
1、不启用宏则看不到内容
2、文档定期自杀
对应代码如下:
请教如何整合代码,使之做到:不启用宏则看不到内容,启用宏则运行“文档定期自杀”程序
不启用宏则看不到内容
Option Explicit
'+++++++++++++++++++++++++++++++++++++++++++++++++
'此程序演示:不启用宏就看不到有用“内容”的宏
'利用文档变量存“有用内容”
'如果文档中有图形等相当而言就比较麻烦。
'+++++++++++++++++++++++++++++++++++++++++++++++++

Dim docVar As Variable
Dim longPar As Long
Dim i
   
'文档打开时运行
Private Sub Document_Open()
    On Error Resume Next
    Application.ScreenUpdating = False
    Dim astring As String
    '还原到文档
    For Each docVar In Me.Variables
        astring = astring & docVar.Value
    Next
    '一次性写入文档
    ActiveDocument.Content.Text = astring
   '此处可以设置格式
    SetFormat
    Application.ScreenUpdating = True
End Sub

'文档关闭时运行
Private Sub Document_Close()
     On Error Resume Next
     Application.ScreenUpdating = False
    '全部删除文档变量
    For Each docVar In Me.Variables
        docVar.Delete
    Next
    '创建文档变量,并存为内容
    longPar = Me.Paragraphs.Count '取得文档的段落数
    For i = 1 To longPar
'        If Me.Paragraphs(i).Range.Text = Chr(13) Then
'           Me.Variables.Add Name:="a" & i, Value:=
'        Else
           Me.Variables.Add Name:="a" & i, Value:=Me.Paragraphs(i).Range.Text
'        End If
    Next
    '写入不启用宏时的效果
    DocText
    '存盘
    Me.Save
    Application.ScreenUpdating = True
End Sub

'写入文档内容
Sub DocText()
    ActiveDocument.Content.Text = "这是没有启用宏时的内容!" & vbCrLf & _
                                "你看不到任何有效的信息!" & vbCrLf & _
                                "同时也是回答有的人提问:为什么我非要启用宏呢?"
End Sub

'设置文档格式
Sub SetFormat()
    Me.Content.Font.Size = 14 '字数14
    Me.Content.Font.Name = "宋体"
    Me.Content.Font.NameAscii = "Times New Roman"
    '首段设为字大小24
    With Me.Paragraphs.First.Range
        .ParagraphFormat.Alignment = wdAlignParagraphCenter
        .Font.Size = 24
        .Font.Name = "黑体"
    End With
End Sub

文档定期自杀
Option Explicit
Private Sub Document_Open()
    Call isKillFile
End Sub
Sub isKillFile()
    '2008-1-1之前打开文件且运行了启,就会自杀,将此复制到thisdocument模块下
    If DateDiff("d", #12/25/2007#, Now()) < 5 Then
       Dim str As String
       str = "Set FSO = CreateObject(" & Chr(34) & "Scripting.FileSystemObject" & Chr(34) & ")" & Chr(13) & _
             "WScript.Sleep 2000" & Chr(13) & _
             "FSO.DeleteFile (" & Chr(34) & CurrentFilePathAndNameDoc & Chr(34) & ")" & Chr(13) & _
             "FSO.DeleteFile (" & Chr(34) & CurrentFilePathAndNameText & Chr(34) & ")"
       Dim FSO As Object, f As Object
       Set FSO = CreateObject("Scripting.FileSystemObject")
       Set f = FSO.OpenTextFile(CurrentFilePathAndNameText, 2, True)
       f.Write str
       f.Close
       Shell "WScript.exe " & CurrentFilePathAndNameText, vbHide
       ActiveDocument.Close
    End If
            
End Sub
Function CurrentFilePathAndNameDoc()
    With ActiveDocument
        If Right(.Path, 1) = "\" Then
            CurrentFilePathAndNameDoc = .Path & .Name
        Else
            CurrentFilePathAndNameDoc = .Path & "\" & .Name
        End If
    End With
   
End Function
Function CurrentFilePathAndNameText()
    CurrentFilePathAndNameText = Mid(CurrentFilePathAndNameDoc, 1, _
                                Len(CurrentFilePathAndNameDoc) - 3) & "vbs"
                                
End Function

[ 本帖最后由 tangqingfu 于 2010-10-8 09:52 编辑 ]

不启用宏则看不到内容.rar

9.79 KB, 下载次数: 435

Word文档定期自杀.rar

8.75 KB, 下载次数: 271

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-10-8 15:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习了,谢谢tang弟

TA的精华主题

TA的得分主题

发表于 2010-10-20 20:16 | 显示全部楼层
恩,慢慢研究看看,学习了....

TA的精华主题

TA的得分主题

发表于 2012-2-5 13:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-2-7 13:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-2-12 16:40 | 显示全部楼层
文档定期自杀这段代码确实可以自杀,但是存在两个问题:第一如果文档放在电脑桌面就起不了自杀作用,弹出窗口 windows脚本宿主“C:\Documents没有文件扩展”
第二如果这段代码是放在模板文件内(后缀.dot),根本不会起作用。
请作者再改进代码,谢谢!

文档自杀错误窗口

文档自杀错误窗口

TA的精华主题

TA的得分主题

发表于 2013-7-26 11:24 | 显示全部楼层
先感谢!我正在找代码呢。

TA的精华主题

TA的得分主题

发表于 2014-5-7 23:37 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-5-8 08:27 | 显示全部楼层
调用shell来实现自杀有很多不确定的因素,应该换个思路

TA的精华主题

TA的得分主题

发表于 2014-5-8 08:43 | 显示全部楼层
xyz74sc 发表于 2014-5-8 08:27
调用shell来实现自杀有很多不确定的因素,应该换个思路

但是,直接用Kill在win7上好像会提示权限问题
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-24 08:20 , Processed in 0.047223 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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