ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创并分享]:域代码复制器(变形域代码)/变形域代码回复器

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-2-26 18:18 | 显示全部楼层 |阅读模式
适用于:直接将选定文本域中的代码通过指定的命令,转化为可视化的域"代码",便于在网页上粘贴域"代码".(否则利用自带的复制与粘贴,将自动转为域结果,而非域代码.当然,本程序转化的结果,只是说明域代码的构成,而非WORD真正的域代码,因为程序已经将WORD的域标志(CTRL+F9),转化了象征性的左右大括号.)

操作方法,选定域,按下CTRL+\或者右击,点击"GetViewFieldCodes",即可.

然后你可以直接使用CTRL+V,复制于网页中,或者其它文本文件中等.

2005-2-28日对其进行反向翻译,完成了变形域代码回复器程序,请在第五楼下载!

如图:

aVZV5sOh.zip (19.1 KB, 下载次数: 329)

[此贴子已经被作者于2005-2-28 15:06:31编辑过]

[原创并分享]域代码复制器(变形域代码)

[原创并分享]域代码复制器(变形域代码)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-26 18:25 | 显示全部楼层

以下代码供参考:

'* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-2-26 18:20:24
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------

Sub GetViewFieldCodes()
'此程序仅为说明所选部分的域代码情况,因受复制与粘贴的自动转换影响
'通过此程序,可将WORD文档中的域代码复制后直接贴到网页上,自动转化为
'可视的域代码
'仅适用于主文档文字部分(页眉页脚等视图中的域无效,可复制到主文档中)
    Dim SelStart As Long, SelEnd As Long, DocEnd As Long, MyRange As Range
    Dim aString As String, MyString As String, aChar As Range, TF As Boolean
    On Error Resume Next
    With ActiveDocument
        DocEnd = .Content.End    '文档结束位置
        With Selection
            '未选定域文本,则提示后退出程序
            If .Fields.Count = 0 Then MsgBox "WORD未找到选定文本中包含域!", _
                                             vbOKOnly + vbInformation, "Warning": Exit Sub
            SelStart = .Start    '起点
            '如果为文档结束,则-1,否则为选定部分的结尾
            SelEnd = VBA.IIf(.End = DocEnd, DocEnd - 1, .End)
        End With
        '返回文档是否是处于域代码显示状态
        TF = .ActiveWindow.View.ShowFieldCodes
        '如果为显示域结果,则切换为显示域代码
        If TF = False Then .ActiveWindow.View.ShowFieldCodes = True
        '定义所选区域
        Set MyRange = .Range(SelStart, SelEnd)
        With MyRange
            '在定义的区域中循环
            For Each aChar In MyRange.Characters
                aString = VBA.IIf(Asc(aChar) = 19, "{", VBA.IIf(Asc(aChar) = 21, "}", aChar))
                MyString = MyString & aString    '文本值累加
            Next
            '插入变形域代码
            Selection.InsertAfter "变形域代码为: " & MyString
        End With
        '重新定义一个MyRange对象
        Set MyRange = .Range(SelEnd, Selection.End)
        MyRange.Cut    '剪切
        '恢复原有状态
        If TF = False Then .ActiveWindow.View.ShowFieldCodes = False
    End With
End Sub
'----------------------如以下结果形式:

变形域代码为: { if { page } <= 1 "" { page }-1 }

[此贴子已经被konggs于2006-12-26 19:24:21编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-28 14:51 | 显示全部楼层

原创并分享:域代码复制器(变形域代码)/变形域代码回复器

原创并分享:域代码复制器(变形域代码)/变形域代码回复器

前者适用于:直接将选定文本域中的代码通过指定的命令,转化为可视化的域"代码",便于在网页上粘贴域"代码".(否则利用自带的复制与粘贴,将自动转为域结果,而非域代码.当然,本程序转化的结果,只是说明域代码的构成,而非WORD真正的域代码,因为程序已经将WORD的域标志(CTRL+F9),转化了象征性的左右大括号.)

操作方法,选定域,按下CTRL+\或者右击,点击"GetViewFieldCodes",即可.

然后你可以直接使用CTRL+V,复制于网页中,或者其它文本文件中等.

后者适用于:以域代码复制器生成的变形域代码或者从帮助文件中粘贴的无格式变形域代码,选定后运行本过程,回复为WORD域代码.

[原创并分享]域代码复制器(变形域代码)

[原创并分享]域代码复制器(变形域代码)

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-2-28 14:55 | 显示全部楼层

以下为全部代码,供参考:

'* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-2-28 14:46:36
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------
Sub GetViewFieldCodes()
'此程序仅为说明所选部分的域代码情况,因受复制与粘贴的自动转换影响
'通过此程序,可将WORD文档中的域代码复制后直接贴到网页上,自动转化为
'可视的域代码
'仅适用于主文档文字部分(页眉页脚等视图中的域无效,可复制到主文档中)
    Dim SelStart As Long, SelEnd As Long, DocEnd As Long, MyRange As Range
    Dim aString As String, MyString As String, aChar As Range, TF As Boolean
    On Error Resume Next
    With ActiveDocument
        DocEnd = .Content.End    '文档结束位置
        With Selection
            '未选定域文本,则提示后退出程序
            If .Fields.Count = 0 Then MsgBox "WORD未找到选定文本中包含域!", _
                                             vbOKOnly + vbInformation, "Warning": Exit Sub
            SelStart = .Start    '起点
            '如果为文档结束,则-1,否则为选定部分的结尾
            SelEnd = VBA.IIf(.End = DocEnd, DocEnd - 1, .End)
        End With
        '返回文档是否是处于域代码显示状态
        TF = .ActiveWindow.View.ShowFieldCodes
        '如果为显示域结果,则切换为显示域代码
        If TF = False Then .ActiveWindow.View.ShowFieldCodes = True
        '定义所选区域
        Set MyRange = .Range(SelStart, SelEnd)
        With MyRange
            '在定义的区域中循环
            For Each aChar In MyRange.Characters
                aString = VBA.IIf(Asc(aChar) = 19, "{", VBA.IIf(Asc(aChar) = 21, "}", aChar))
                MyString = MyString & aString    '文本值累加
            Next
            '插入变形域代码
            Selection.InsertAfter "变形域代码为: " & MyString
        End With
        '重新定义一个MyRange对象
        Set MyRange = .Range(SelEnd, Selection.End)
        MyRange.Cut    '剪切
        '恢复原有状态
        If TF = False Then .ActiveWindow.View.ShowFieldCodes = False
    End With
End Sub
'----------------------
Sub SetViewFieldCodes()
'本代码可用于GetViewFieldCodes()代码执行结果,转化为WORD的域代码.
'也适用于WORD帮助文件中复制的域代码(也是变形域),直接转化为WORD中的域代码
    Dim SelStart As Long, SelRange As Range, NewSelStart As Long
    Dim i As Range, MyPost As Long
    On Error Resume Next
    Application.ScreenUpdating = False
    With Selection
        If .Fields.Count > 0 Then Exit Sub    '如果存在域则退出
        SelStart = .Start    '定义一个起始位置
        Set SelRange = .Range    '定义一个区域为选定区域
    End With
    While InStr(SelRange, "{") > 0    '设置如果指定区域中含有"{"则进入循环
        NewSelStart = SelStart    '定义一个开始位置
        Set i = ActiveDocument.Range(NewSelStart, NewSelStart + 1)
        While i <> "}"    '设置如果i的文本值不是为"}"则进入循环
            Set i = ActiveDocument.Range(NewSelStart, NewSelStart + 1)    '重新定义i的区域
            NewSelStart = NewSelStart + 1    '将i的起点位置下移一个字符位置
            If i = "{" Then MyPost = NewSelStart - 1    '取得当i="{"的位置
        Wend
        '定义一个新区域
        Set MyRange = ActiveDocument.Range(MyPost, NewSelStart)
        With MyRange
            .Characters(1) = " "    '将{改为空格
            .Characters(.Characters.Count) = " "    '将}改为空格
            .Select    '选定
        End With
        Application.Run "InsertFieldChars"    '插入域标志
    Wend
    Application.ScreenUpdating = True    '恢复屏幕更新
End Sub
'---------------------- b4H29WBL.rar (32.85 KB, 下载次数: 171)


[此贴子已经被konggs于2006-12-26 19:51:49编辑过]

q638BNfm.zip

36.43 KB, 下载次数: 157

[原创并分享]域代码复制器(变形域代码)

TA的精华主题

TA的得分主题

发表于 2005-3-1 19:51 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-3-2 04:48 | 显示全部楼层

谢谢几位的支持,这个东东,我是花了很大的时间,完成的,若非对域有深入地研究,是搞不定的,特定是逆向生成WORD域代码。它对于域的推广与普及,也是一个促进---至少从我看来。

如果你需要将其向NORMAL.DOT模板添加成为常用工具,请将关键字ME改为Activedocument.

TA的精华主题

TA的得分主题

发表于 2005-3-19 15:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

版主的好东东,下载学习一下。

TA的精华主题

TA的得分主题

发表于 2005-5-29 23:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这种真的是好东东,谢谢分享

TA的精华主题

TA的得分主题

发表于 2007-2-14 08:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-2-14 11:12 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-2 08:12 , Processed in 0.050632 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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