ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: dypluck

[求助] 将word表格中的内容做为文件名,如何实现?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-1-8 16:33 | 显示全部楼层
楼主,我给你做的宏是在那个表格模板中,你应该在那个文档中取值,如果在任意一个 Word 文档中选定一段文字做为标题的话,其实就是得到选定文字的文本内容,这点很容易,就是 Selection.text,这样,可就 3 个文件同时运作了!

下面是我给上面的宏做的注释:(有的我也不太懂)
****************************************************
Sub test()
'当前活动文档 是 Activedocument 对象
    Dim c As Cell, r As Range '声明变量(c 代表 单元格 cell,r 代表 区域 Range)
    Windows("产品清单").Activate '激活《产品清单》文档窗口
    For Each c In ActiveDocument.Tables(1).Range.Cells '循环 For Each ... Next 开始语句(在当前活动文档第一个表格单元格中循环)
        Set r = c.Range '单元格区域
        r.MoveEnd unit:=wdCharacter, Count:=-1 'MoveEnd方法缩小单元格区域(缩小一个字符),就是把单元格中的表格结束符舍去
        Windows("MJ&FL").Activate '激活《MJ&FL》文档窗口
        ActiveDocument.Tables(1).Cell(2, 1).Range.Text = r.Text '当前活动文档第1个表格第2行第1列区域文本内容被赋值为单元格文本内容
        ActiveDocument.Tables(1).Cell(2, 1).Range.Font.Size = 10 '当前活动文档第1个表格第2行第1列区域字体字号为10磅
        ActiveDocument.Tables(7).Cell(2, 1).Range.Text = r.Text '当前活动文档第7个表格第2行第1列区域文本内容被赋值为单元格文本内容
        ActiveDocument.Tables(7).Cell(2, 1).Range.Font.Size = 10 '当前活动文档第7个表格第2行第1列区域字体字号为10磅
        ActiveDocument.SaveAs FileName:=r.Text & ".doc" '当前活动文档另存为的文件名被赋值为单元格文本内容,再加上 doc 后缀
        ActiveDocument.Close '关闭当前活动文档
        Documents.Open ("MJ&FL") '打开文档《MJ&FL》
    Next '循环结束的语句(正常应为 Next i,但 i 变量可以省略)
    ActiveDocument.Close savechanges:=wdDoNotSaveChanges '当前活动文档关闭不保存
    ActiveDocument.Close savechanges:=wdDoNotSaveChanges '当前活动文档关闭不保存
    MsgBox "处理完毕", vbOKOnly + vbExclamation, "产品名称 另存为" '消息框MsgBox 的应用(msgbox"提示",消息框提示信息按钮,"消息框标题栏")
End Sub

TA的精华主题

TA的得分主题

发表于 2014-1-8 17:15 | 显示全部楼层
楼主,你到底是想要以《产品清单》中的文字作为文件名呀,还是以随机选取的文字作为文件名(这样的话,一次只能另存一个文件,而不能批量处理了)?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-9 10:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se 发表于 2014-1-8 17:15
楼主,你到底是想要以《产品清单》中的文字作为文件名呀,还是以随机选取的文字作为文件名(这样的话,一次 ...

Selection.text 好像就是这个,在word中,要怎么定位文字呢?

TA的精华主题

TA的得分主题

发表于 2014-1-9 19:00 | 显示全部楼层
鼠标勾选(楼主,不知道你到底想定位什么样的文字)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-10 10:58 | 显示全部楼层
413191246se 发表于 2014-1-9 19:00
鼠标勾选(楼主,不知道你到底想定位什么样的文字)

比如我想要将附件中的第四行的“常规护理”来作为文件名,应该怎么写代码? 新建 Microsoft Word 文档.rar (7.91 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2014-1-10 16:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub test()
    If MsgBox("在 Word 中打开任意文档,再打开《MJ&FL》文档,再切换回刚才打开的任意文档。" & vbCr & "在任意文档中选定文字,应用此宏,文档《MJ&FL》将自动另存为在其自身所在文件夹中(可反复应用此宏)" & vbCr & "是否继续(如果当前文档是任意文档可以继续了)?", vbYesNo + vbCritical, "注意事项") = vbNo Then Exit Sub '如果选否则退出
    If Documents.Count = 0 Then MsgBox "没有打开的文档!", vbOKOnly + vbCritical, "Save As": End
    If Selection.Type = wdSelectionIP Then MsgBox "未选定文字!", vbOKOnly + vbCritical, "Save As": Exit Sub '如果未选定文字则退出

    Dim myRange As Range '声明变量
   
    Set myRange = Selection.Range '设置选定区域为 myRange 区域
   
    myRange.Font.Color = wdColorRed '选定区域字体变为红色
    myRange.Bold = True '选定区域字体加粗----------------完全是为了方便查看,这两句代码不加也可
   
    myRange.Find.Execute FindText:=" ", replacewith:="", Replace:=wdReplaceAll    '删除选定区域所有全角空格
    myRange.Find.Execute FindText:="^w", replacewith:="", Replace:=wdReplaceAll    '删除选定区域所有空白区域
    If myRange.Characters.Last.Text = vbCr Then myRange.MoveEnd unit:=wdCharacter, Count:=-1 '如果选定内容最后字符为回车符则删除
   
    Windows("MJ&FL").Activate '激活文档《》窗口
    ActiveDocument.Tables(1).Cell(2, 1).Range.Text = myRange.Text '用选定区域的文本内容赋值给第1个表格第2行第1列单元格
    ActiveDocument.Tables(1).Cell(2, 1).Range.Font.Size = 10 '设置第1个表格第2行第1列单元格字号大小为10磅
    ActiveDocument.Tables(7).Cell(2, 1).Range.Text = myRange.Text '用选定区域的文本内容赋值给第7个表格第2行第1列单元格
    ActiveDocument.Tables(7).Cell(2, 1).Range.Font.Size = 10 '设置第7个表格第2行第1列单元格字号大小为10磅
   
    ActiveDocument.SaveAs FileName:=myRange.Text & ".doc" '用选定区域的文本内容作为文件名保存到与文档《MJ&FL》相同文件夹中
    ActiveDocument.Close '关闭当前活动文档
    Documents.Open ("MJ&FL") '打开文档《MJ&FL》
End Sub

TA的精华主题

TA的得分主题

发表于 2014-1-10 16:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主,如果经常使用 Word 2003 的话,可以试用一下我的—— Word 2003 通用模板(元旦版)2014-1-1,它可以提供初级自动排版(规则表格自动处理)。
这是网页:http://club.excelhome.net/thread-1085076-1-2.html

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-10 18:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
新建 Microsoft Word 文档.rar (7.91 KB, 下载次数: 7)

嗯,我会好好看看的
但是我还是想问?
比如我想要将附件中的第四行的“常规护理”来作为文件名,应该怎么写代码?

TA的精华主题

TA的得分主题

发表于 2014-1-10 20:56 | 显示全部楼层
16楼-----我的回答------是你 18楼-----你的提问-------的解答!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-1-11 16:54 | 显示全部楼层
谢谢大侠在这几天的耐心解答,非常崇拜大侠在VB方面的造诣,我就是小菜鸟一个,呵呵
以后,有问题还会麻烦你的
再次感谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 20:24 , Processed in 0.032704 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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