VBA操作WORD(六)另存为不含宏的文档

这篇具有很好参考价值的文章主要介绍了VBA操作WORD(六)另存为不含宏的文档。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Sub 另存为不含宏的文档()
    Application.DisplayAlerts = False	
    Application.ScreenUpdating = False
    Dim oDoc As Document
    Set oDoc = Word.ActiveDocument
    Dim oRng As Range
    Set oRng = oDoc.Content

    Dim sPath As String
    '默认存储路径,当前用户桌面,注释掉的是当前文档路径
    sPath = Environ("userprofile") & "\Desktop\" 'Word.ActiveDocument.Path & "\"

    '处理文件名
    Dim strDocName As String
    strDocName =ActiveDocument.Paragraphs(1).Range.Text '包含一个回车符
    strDocName = Replace(strDocName, Chr(13), "") 'chr(10)'删除句末回车符,没有trim空格

    '采用复制内容到新文档的形式,避免将宏代码带到新文档
    oRng.Select
    oRng.Copy
    Dim oDocTemp As Document
    Set oDocTemp = Word.Documents.Add
    With oDocTemp.Application.Selection
    	.Paste
    End With

    'Dim vrtSelectedItem As Variant
    Dim fDialog As FileDialog
    Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
    With fDialog
    	.AllowMultiSelect = False
    	.Filters.Clear '不清空会造成多次添加
    	.Filters.Add "Word文件", "*.doc;*.docx;*.docm", 1
    	.InitialFileName = sPath '& strDocName 'Left(vrtSelectedItem, Len(vrtSelectedItem) - 5)
    '返回值-1表示按下确认按钮。如果没有判断,那么无论点击哪个按钮,均会保存文件到磁盘。
    	If .Show = -1 Then
	   'Set oDocTemp = Application.Documents.Save(vrtSelectedItem, ReadOnly:=True)'vrtSelectedItem为空
            '.Execute'execute是SaveAs对话框配套的保存命令,执行的是直接另存为操作,会把宏代码带到新文档。改为调用SaveAs2方法完成存储操作
            '.SelectedItems.Item(1)是对话框文件名修改后的名字。SelectedItems(1)为null
            oDocTemp.SaveAs2 filename:=.SelectedItems.Item(1), FileFormat:=wdFormatDocumentDefault
            oDocTemp.Close False
    	End If
    End With
    Set fDialog = Nothing

    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

上面代码需要注意地方两点,也是浪费我很多时间的地方,一是如果采用标题之类作为文件名,因为包括了回车符(换行符)导致代码一直报错,需要先删掉才能保存成功。

第二点,微软官方文档SaveAs2例子的人机交互有点不是很友好,直接用InputBox让用户输入文件名(见中间注释掉的代码)。所以考虑用dialog弹出另存的对话框,由用户选择文件类型和修改文件名(默认默认为文件内容的第一行(标题),减少手工劳动),但又有新的问题,dialog的.execute命令会直接将当前文档另存为新文档,导致VBA宏代码等也跟着到新文档,徒增文件体积。而我希望不要把宏代码带到新文档,采用声明一个新的文档对象,并且把当前文档的内容复制过去的形式,再使用了SaveAs2方法另存为新生成的文档对象。

上面的代码很好的结合了两方的优点,解决了缺点,完美!上面的处理方法是原创,反正我没看到过类似的解决方案。

中间注释掉对文件名处理部分,留给有需要的人参考。文章来源地址https://www.toymoban.com/news/detail-617528.html

'摘抄自微软官方文档的一个例子
    Dim intPos As Integer
    intPos = InStrRev(strDocName, ".")
    '此处删除后缀名,后续另存为对话框中选择文件类型后再加上后缀名
    If intPos = 0 Then
        ' 如果文档还未保存,问用户输入文件名
        strDocName = InputBox("请输入要保存的文件名:")
    Else
        '删除原来的后缀名并添加新的后缀名
        strDocName = Left(strDocName, intPos - 1)
        strDocName = strDocName & ".docx"
    End If

到了这里,关于VBA操作WORD(六)另存为不含宏的文档的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【论文写作】PPT绘图并另存为高清图片

    默认情况下,要另存为图片的 PowerPoint 幻灯片的导出分辨率为每英寸 96 点 (dpi)。 若要更改导出分辨率,请执行以下步骤: 1.退出所有 Windows 程序。 2.右键单击“开始”,然后选择“运行”。 (Win+R) 3.在“打开”框中,键入“regedit”, 然后选择“确定”。 4.根据你使用的

    2024年02月04日
    浏览(45)
  • java生成pdf表格并支持下载可选另存为

    直接复制以上代码即可完成,但是也要引入一些依赖 引入以后修修补补增增改改就可以了

    2024年02月10日
    浏览(49)
  • Unity调用系统选择文件功能实现文件的选择及另存为

    1.系统文件选择结构体 2.调用案例 File类在copy文件时文件地址绝对不能有一点错误!!!在定义结构体时为了尽量满足超长路径,所以将openFileName.file的长度尽可能设定得更长。但是当你选择文件之后返回的地址并不合规,他会将不足设定长度的地址补足位数,补足的位数值为

    2024年02月07日
    浏览(48)
  • tomcat p12证书另存为nginx .crt证书和.key私钥

    Tomcat使用的.pfx或.keystore文件都是私钥及公钥证书一起的,通过pin保证安全;nginx只需要使用.pem或.crt公钥证书文件和.key私钥即可,如果原ssl证书不方便重新下载,在已有tomcat证书的情况下,需要手动导出处理。 下载openssl 1.1.1 通过命令导出文件 Over.

    2024年02月14日
    浏览(59)
  • uniapp使用中遇到的问题一:小程序端把当前页面另存为图片

    遇到了一个这样的需求:客户觉得页面效果好看,想保存为图片。但是呢,截图会带上手机自身的状态栏,所以开始整活! 在网上看了很多方法,总结下来一下四种: 方法一:用canvas来把页面画出来,再用uni.canvasToTempFilePath,把canvas区域保存为图片。 总结:如果你页面简单

    2024年04月15日
    浏览(41)
  • 解决Visio另存为(或者导出)pdf字符间距变化/不均等字母间距的问题

    当用Visio导出PDF时,有时候会导致字符间距变化/不均等,这就让人头疼,觉得匪夷所思了 Microsoft Visio是一个流程图软件。Visio制作的图表范围十分广泛,可以利用Visio的强大绘图功能绘制地图、企业标志等,同时Visio支持将档案保存为svg、dwg等矢量通用格式。 解决方法: 按住

    2024年02月16日
    浏览(158)
  • DELL服务器iDRAC 8 无法启动虚拟控制台,提示“另存为“,“viewerjnlp”

    说明:最近刚搞了两台DELL 的服务器,iDRAC8 的版本是Enterprise,点击启动虚拟控制台网页让我下载文件。 因为我平时很少用到iDRAC,以前使用的iDRAC也都是供应商配置好了的,所以这次自己着手配置的时候有点摸不着头脑了。经过排查后终于找到了解决办法,在此分享下,同时

    2024年02月12日
    浏览(59)
  • 使用 PowerShell 将 Excel 中的每个工作表单独另存为独立的文件

    导语:在日常工作中,我们经常需要处理 Excel 文件。本文介绍了如何使用 PowerShell 脚本将一个 Excel 文件中的每个工作表单独另存为独立的 Excel 文件,以提高工作效率。 在开始之前,请确保已经安装了 Microsoft Excel 并在 PowerShell 环境中启用了 COM 对象。 下面是执行该操作的

    2024年02月13日
    浏览(41)
  • 关于Solidworks打包的更好的方式(并保留部分文件结构)——使用“另存为”保存装配体

    目录 遇到的问题 软件版本 文件及现有打包方法情况 文件夹压缩 pack and go 具体的使用“另存为”的方法 在使用Solidworks进行工作的过程中,不可避免地需要进行组内模型的传递。这时候,装配体打包就会成为一个比较重要的问题。因为如果打包的方式不恰当,可能会出现无法

    2024年02月04日
    浏览(311)
  • VBA操作Word

    2024年04月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包