Word VBA如何将表格粘贴到页脚起始位置且不覆盖原有内容
问题原因
原代码直接对页脚的完整Range执行粘贴操作,会默认替换目标范围内的所有内容,因此会覆盖页脚已存在的文本/元素。
修复方案
将粘贴的目标范围从整个页脚调整为页脚内容的最起始位置:粘贴前先将目标范围折叠到起始点,此时粘贴只会在起始位置插入新内容,不会替换原有页脚内容。
修正后的代码
' 若使用后期绑定(未提前引用Word对象库)请放开下方两行常量定义 ' Const wdHeaderFooterPrimary As Long = 1 ' Const wdCollapseStart As Long = 1 Dim word_fichier As Document, word_fichier_sensiblité As Document Dim fichier As String Dim fichier_sensibilite As String Dim word_app As Word.Application '获取模板路径 fichier = ActiveWorkbook.Path & "\" & "fsm_template_balises_test.docx" fichier_sensibilite = ActiveWorkbook.Path & "\" & "templates_sensibilité.docx" '启动Word程序 Set word_app = CreateObject("Word.Application") With word_app .Visible = True .WindowState = 1 End With '打开目标文档和源表格文档 Set word_fichier = word_app.Documents.Open(fichier) Set word_fichier_sensiblité = word_app.Documents.Open(fichier_sensibilite) '复制源文档的第一个表格 word_fichier_sensiblité.Tables(1).Range.Copy '将表格粘贴到主页脚起始位置,不覆盖原有内容 With word_fichier.Sections(1).Footers(wdHeaderFooterPrimary).Range .Collapse Direction:=wdCollapseStart .Paste End With
补充说明:原代码变量声明
Dim word_fichier, word_fichier_sensiblité As Document存在VBA语法特性问题,未显式指定类型的变量会默认被声明为Variant类型,修正后已明确两个文档变量为Document类型,减少内存占用和潜在报错风险。
内容的提问来源于stack exchange,提问作者julien1h
相关产品推荐
相关产品推荐

