vba - VBA Word - InsertFile 更改书签的样式(字体、大小...)并添加新行
问题描述
我正在尝试用 VBA 中的纯文本文件填充 Word 文档。这是我所拥有的:
- Word 文档中有带有默认文本的书签(这有助于我确保所有书签都被替换)
- 以下 VBA 完成了在书签中插入 txt 文件中的内容的工作
strt = bookmark.Range.Start
bookmark.Select
Selection.InsertFile Filename:=Filename, ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.Bookmarks.Add Name:=bookmarkname, Range:=ActiveDocument.Range(strt, Selection.Range.End)
主要问题是,在我运行 VBA 之后,字体名称、字体大小、项目符号点(如果有的话)......都更改为不同的内容(Courier New 10,5pts)。如果修改了文本文件,我会重新创建书签以便能够多次运行宏。
我找到了一个丑陋的(恕我直言)解决方案:
- 保存样式名称并在插入文件之后应用它。对于要点,应用样式不会设置正确的字体和大小,因此最后两行
strt = bookmark.Range.Start
bookmark.Select
myStyle = (Selection.Style)
Selection.InsertFile Filename:=Filename, ConfirmConversions:=False, Link:=False, Attachment:=False
Selection.Bookmarks.Add Name:=bookmarkname, Range:=ActiveDocument.Range(strt, Selection.Range.End)
ActiveDocument.Range(strt, Selection.Range.End).Style = myStyle
ActiveDocument.Range(strt, Selection.Range.End).Font.Name = "Calibri"
ActiveDocument.Range(strt, Selection.Range.End).Font.Size = 11
你有什么想法可以做一些更“专业”的事情吗?
另一个问题是即使文件末尾没有新行,插入文件也总是在末尾添加新行。有什么想法可以防止它或至少在插入后将其移除?
感谢您有任何帮助我的想法!
解决方案
纯文本文件没有样式。它们将采用应用于您插入文件的选择的任何样式。创建一个看起来像您希望最终文本看起来的样式,将其应用于接收文档,然后重新运行您的代码。
尝试摆脱对选择对象进行编程的习惯。它缓慢且不可靠。范围比选择更好。这是微软对 Ranges 的介绍:Working with Range Objects
您可以使用 Range.Text 插入文本,而不是使用 InsertFile:
Sub Text2Doc()
Dim iFreeFileNum As Integer
Dim strPath As String
Dim strFileContent As String
strPath = "C:\Test.txt"
'Get the next file number available for use by the FileOpen function
iFreeFileNum = FreeFile
Open strPath For Input As iFreeFileNum
strFileContent = Input(LOF(iFreeFileNum), iFreeFileNum)
ActiveDocument.Bookmarks("BookmarkName").Range.Text = strFileContent
Close iFreeFileNum
End Sub
不会添加尾随段落标记。
推荐阅读
- python - NameError 名称未定义如何解决?
- java - 无法从 neo4j 流向 kafka 主题发送消息
- react-native - 从 React 上下文访问 Animated.Value
- linux - Linux中是否有任何方法可以检查目录树是否已更改?
- c# - WNetOpenEnum 在根级别之后不返回任何内容
- python - 检查列表列表中的列表元素并返回子列表
- firebase - 如何使用uid删除firebase用户?
- search - 二分查找哪个更快?
- python - 使用 gunicorn 异步运行长轮询烧瓶应用程序
- android-studio - android gradle 插件版本栏为空