ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]帮我编一个保存文件的VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-7-31 18:08 | 显示全部楼层 |阅读模式

求助:帮我编一个保存文件的VBA

文档中设定了几种样式:“表单代码”、“表单标题”、“表单分类”等。

VBA编程要求:

1)  将样式“表单代码”赋予文件属性的“标题”

2)  将样式“表单标题”赋予文件属性的“主题”

3)  将样式“表单分类”赋予文件属性的“类别”

4)  点击按钮“更名保存文件”可保存文件,文件名为当前文档样式“表单代码”和样式“表单标题”的字符串连接。

这里文件名为“SZY-4.2.1-09+非受控文件领用、审批登记表=SZY-4.2.1-09非受控文件领用、审批登记表

希望显示保存对话框,以便确认保存的文件名。

5)  打印时不要打出“更名保存文件”按钮。

 

另外看到《守柔word编程代码集wordcode.pdf》中“五十) 批量重命名文件”,希望能帮我编一个VBA,对同一文件夹下的所有文件属性的“标题”为“SZY-”开头的文件更名。新文件名为《文件属性的“标题”+“主题”》。(文件属性的“标题”不是“SZY-”开头的不需要更名)

 

P4xMOHmm.rar (12.52 KB, 下载次数: 28)

TA的精华主题

TA的得分主题

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

这个不难。

楼主仔细想想。

我把你做了第五个:

Sub fileprint()
    打印过程
End Sub
Sub fileprintdefault()
    打印过程
End Sub
Sub 打印过程()
On Error Resume Next
    ActiveDocument.Tables(2).Range.Cells(1).Range.Text = ""
    With Application.Dialogs(wdDialogFilePrint)
        .Show
    End With
    ActiveDocument.Undo 1
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-31 20:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

谢谢konggs斑竹!

可是我不会编程,写不出想要的动作,请您帮我把其他几个都写上吧,实在对不住有劳您了!!

我正在把你写好的往vba里拷贝,打印结果没出现按钮了。

[此贴子已经被作者于2006-7-31 22:23:11编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-1 06:56 | 显示全部楼层

'* +++++++++++++++++++++++++++++

'* Created By SHOUROU@ExcelHome 2006-8-1 6:55:35

'仅测试于System: Windows NT Word: 11.0 Language: 2052

'№ 0044^The Code CopyIn [ThisDocument-ThisDocument]^'

'* -----------------------------

Private Sub CommandButton1_Click()

    Dim strTitle As String, strSubject As String, strCategory As String

    Dim myTable As Table, myRange As Range

    With ActiveDocument

        Set myTable = .Tables(1) '定义为表格1

        With myTable

            Set myRange = .Cell(1, 3).Range

            myRange.SetRange myRange.Start, myRange.End - 1

            strTitle = myRange.Text '取得标题文本

            Set myRange = .Cell(1, 4).Range

            myRange.SetRange myRange.Start, myRange.End - 1

            strCategory = myRange.Text '取得类别文本

        End With

        Set myTable = .Tables(2) '定义为表格2

        With myTable

            Set myRange = .Cell(1, 2).Range

            myRange.SetRange myRange.Start, myRange.End - 1

            strSubject = myRange.Text '取得主题文本

        End With

        '以下设置要求的文档属性值:标题\主题\类别

        .BuiltInDocumentProperties(wdPropertyTitle) = strTitle

        .BuiltInDocumentProperties(wdPropertySubject) = strSubject

        .BuiltInDocumentProperties(wdPropertyCategory) = strCategory

        .SaveAs FileName:=strTitle & strSubject

    End With

End Sub

把按钮自定义到活动文档的工具栏中不是更好吗?或者直接修改WORD的保存命令即可。没有必要把“更名保存文件”以命令控件形式放在单元格中。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-1 12:05 | 显示全部楼层
QUOTE:

把按钮自定义到活动文档的工具栏中不是更好吗?或者直接修改WORD的保存命令即可。没有必要把“更名保存文件”以命令控件形式放在单元格中。

非常感谢守柔斑竹!

斑竹建议把按钮自定义到活动文档的工具栏中的方法非常好,我这样的水平当然是想不到的,请守柔斑竹帮我写出把按钮自定义到活动文档的工具栏中代码好吗?

直接修改WORD的保存命令会不会影响其它文档保存功能?如果不影响那就更方便了。

另外:

1)上面代码中,没有出现我希望的显示保存对话框,以便确认保存的文件名。(有时会做些小修改、另选保存位置等)

2)文件没有保存在当前目录,好不容易才找到在“我的文档”文件夹。

3)除了通过表格单元获取文本外,能否通过“表单代码”、“表单标题”、“表单分类”等几种样式取得其文本?(取该样式在文档中第一个出现的文本)

[此贴子已经被作者于2006-8-1 13:43:19编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-2 05:54 | 显示全部楼层
QUOTE:
以下是引用cj2000在2006-8-1 12:05:29的发言:
QUOTE:

把按钮自定义到活动文档的工具栏中不是更好吗?或者直接修改WORD的保存命令即可。没有必要把“更名保存文件”以命令控件形式放在单元格中。

非常感谢守柔斑竹!

斑竹建议把按钮自定义到活动文档的工具栏中的方法非常好,我这样的水平当然是想不到的,请守柔斑竹帮我写出把按钮自定义到活动文档的工具栏中代码好吗?

直接修改WORD的保存命令会不会影响其它文档保存功能?如果不影响那就更方便了。

另外:

1)上面代码中,没有出现我希望的显示保存对话框,以便确认保存的文件名。(有时会做些小修改、另选保存位置等)

2)文件没有保存在当前目录,好不容易才找到在“我的文档”文件夹。

3)除了通过表格单元获取文本外,能否通过“表单代码”、“表单标题”、“表单分类”等几种样式取得其文本?(取该样式在文档中第一个出现的文本)


使用按钮

EBd7Uo34.rar (13.18 KB, 下载次数: 36)

关于楼主的五个问题的简要回复:

1.Word中自定义命令\按钮\菜单非常方便,前台操作即可方便完成,有关操作请以"自定义"为关键字,搜索本版或者帮助文件,如必须使用VBA也可以,本版中有大量实例.

2.修改WORD命令,与该命令对应的过程所在工程有关,如是模板中,则将影响基于该模板的所有文档,如只是在当前文档中,则仅作用于当前文档,同1自命令位置相同的道理.

3.已加入代码,显示另存为对话框,并且自动输入文件名称.

4,你的当前目录是这个,其他的呢?必须为当前目录的话,VBA中当然可以进行指定,既然已定为当前目录,另存为对话框又有何用?矛盾.

5.楼主以为查找样式和单元格定位,哪个更直接,更方便\更规范?舍近而求远乎?唯一标识或者对应关系是代码设计时的依据,当然使用样式搜索也可以,有这个必要吗?

BH3NJcNI.rar

11.71 KB, 下载次数: 39

[求助]帮我编一个保存文件的VBA

TA的精华主题

TA的得分主题

发表于 2006-8-2 05:59 | 显示全部楼层

以下代码供参考:

 Sub MySaveAs()

    Dim strTitle As String, strSubject As String, strCategory As String

    Dim myTable As Table, myRange As Range

    Dim myDialog As Dialog

    With ActiveDocument

        Set myTable = .Tables(1)    '定义为表格1

        With myTable

            Set myRange = .Cell(1, 3).Range

            myRange.SetRange myRange.Start, myRange.End - 1

            strTitle = myRange.Text    '取得标题文本

            Set myRange = .Cell(1, 4).Range

            myRange.SetRange myRange.Start, myRange.End - 1

            strCategory = myRange.Text    '取得类别文本

        End With

        Set myTable = .Tables(2)    '定义为表格2

        With myTable

            Set myRange = .Cell(1, 2).Range

            myRange.SetRange myRange.Start, myRange.End - 1

            strSubject = myRange.Text    '取得主题文本

        End With

        '以下设置要求的文档属性值:标题\主题\类别

        .BuiltInDocumentProperties(wdPropertyTitle) = strTitle

        .BuiltInDocumentProperties(wdPropertySubject) = strSubject

        .BuiltInDocumentProperties(wdPropertyCategory) = strCategory

     End With

    Set myDialog = Word.Dialogs(wdDialogFileSaveAs)

    With myDialog

        .Name = strTitle & strSubject

        .Show

    End With

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-2 10:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

感谢守柔斑竹!不但写出代码,还做了详尽解说。使用按钮和使用修改WORD命令比较,感觉后者更舒服些。

对于斑竹提出的第4点,我经试验发现了问题所在:当我从桌面双击文件打开,再保存时总是默认存放在“我的文档”目录下,即默认保存目录不是当前目录;而我从word菜单“打开”该文件,再保存时默认保存目录就打开文件所在目录一致了。

对于斑竹提出的第5点,我做一下解释,我有很多这样的表格,有时候想合并成一个文档,若能在合并后文档结构图中显示每一页表的标题就更方便了。我不知道如何将表格里的标题显示在文档结构图中,而有大纲级别的样式在表格外会自动显示在文档结构图中。

还望斑竹指点!

TA的精华主题

TA的得分主题

发表于 2006-8-3 06:30 | 显示全部楼层

当标题位于表格或者文本框中时,将不会在文档结构图中显示。

如果你只想把标题(样式为表单标题)的显示在文档结构图中,请把这一行内容移出表格,成为段落,如需在一行中设置两个段落标题样式(表单标题和记录编号),则可以使用创建起始强调(请搜索本版),配合两个制表位即可。

适当修改VBA代码,如:

'* +++++++++++++++++++++++++++++

'* Created By SHOUROU@ExcelHome 2006-8-3 6:31:30

'仅测试于System: Windows NT Word: 11.0 Language: 2052

'№ 0048^The Code CopyIn [ThisDocument-ThisDocument]^'

'* -----------------------------

Sub Example()

    Dim myTable As Table, myRange As Range

    Set myTable = ActiveDocument.Tables(2) '定义为表格2

    Set myRange = myTable.Range '定义为表格区域

    myRange.SetRange myRange.Start - 1, myRange.Start - 1 '重新定义为表格2的前一个段落标记位置

    '重新定义为表格2的前二个段落标记位置,并且去除了一个制表位,去除了一个段落标记

    myRange.SetRange myRange.Paragraphs(1).Previous(1).Range.Start + 1, myRange.Paragraphs(1).Previous(1).Range.End - 1

    MsgBox myRange.Text

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-3 23:33 | 显示全部楼层

多谢了!

用"创建起始强调配合两个制表位"做成段落后,总是不能排好版,标题固定不到正中间,同一行编号的开始位置也固定不好。显示隐藏标记时又容易被其他使用者误改变格式,用表格比较保险,但又不能显示在文档结构图中.

能够通过VBA代码将一系列表格里的有大纲级别的样式显示在文档结构图中吗? 真对不起,我的问题太麻烦了.

[此贴子已经被作者于2006-8-3 23:38:57编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 20:30 , Processed in 0.053529 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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