对于某些自动化测试,我需要创建一个Word Doc,其中包含字体的所有字符(适用于几种不同的字体)。有没有一种简单的方法来创建一个宏,该宏循环遍历字体中的所有可用字符(并将它们插入文档中)?
我需要在使用自定义HTML代码编辑Outlook电子邮件时替换用户选择.
我尝试了两种方法:
Word.Range从中获取Word.Selection.range.Copy()把它放在剪贴板中inputString为outputStringoutputStringwith 替换选择range.PasteSpecial(...)Word.Range从中获取Word.Selection.range.Copy()把它放在剪贴板中.inputString为outputString(以Office Open XML格式,知道如何制作它以生成特定的HTML).outputStringwith 替换选择range.InsertXML(...)问题是:
insertXML您需要安装Microsoft Word.insertXML单独安装Outlook 无法执行此操作.请看:没有Word 2007部署Outlook 2007的影响,以获取更多信息.你知道更多的选择吗?我可以想到自己添加元素就像使用InsertParagraph,但我不确定我是否可以添加超链接或将遇到类似的问题.
我正在使用带有宏的Word 2007模板,该宏会将字符样式应用于所选文本。似乎“查找/替换”功能将是一个不错的起点,但是我认为我发现了一个错误/限制,该错误/限制使宏无法按预期工作。
这是我的vba代码:
Sub restyleSelection()
Dim r As Range
Set r = Selection.Range
With r.Find
.Style = ActiveDocument.Styles("Default Paragraph Font")
.Text = ""
.Replacement.Text = ""
.Replacement.Style = ActiveDocument.Styles("Emphasis")
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
如果我创建一个包含几个段落的测试文档,并在其中一个段落中选择了几个单词,然后运行宏,则“ Emphasis”样式不仅适用于所选内容,而且适用于所选内容的结尾文件。
使用实际的GUI查找/替换工具,此行为是相同的。
我的问题是:如何克服这个错误/限制,仅在选择/范围内应用字符样式?
更多信息:
我真正需要宏做的是将某种格式应用于整个选区,同时保持选区中的现有字符样式。例如,如果所选文本包含粗体,斜体,其余为默认段落字体,则宏应将粗体替换为“ Revised Bold”,将“ Italic”替换为“ Revised Italic”,并且用“修订”替换“默认段落字体”。这样,当我使用伴随宏“撤消”此宏的操作时,可以替换原始字符样式(粗体,斜体,默认段落字体)。
解决:
这是我最终得出的解决方案:
Sub applyNewRevisedText
Dim r As …Run Code Online (Sandbox Code Playgroud) If TextBox1.Text = "" Or TextBox1.Text = "False" Then
msgbox("Filename invalid. Try again.",vbOKOnly)
Run Code Online (Sandbox Code Playgroud)
我收到"编译器错误:预期:="错误消息.
我用VBA代码和用户窗体创建了一个模板。我将其另存为.dotm(启用宏的模板)。
我想打开模板,使用该界面在文档中进行更改,然后将文档另存为.docx,而不引用模板/代码。当我打开docx并打开可视化基本编辑器时,在其中找到了代码。
这是我从界面退出的代码
Private Sub Sair_Click()
ActiveDocument.Bookmarks("NomeProj").Range.text = Nomeproj.Value
ActiveDocument.TablesOfContents(1).Update
Application.Quit
End Sub
Run Code Online (Sandbox Code Playgroud) 我有许多大型Microsoft Word文档,其中包含许多Microsoft Excel电子表格中的许多链接文件.打开Word文档时,即使未选中"打开时更新链接文件"选项:

Word仍会通过打开和关闭每个链接的相关Excel电子表格来检查其源头的每个链接(因此,对于x个链接,即使来自同一个电子表格,Word也会打开并关闭电子表格x次).这意味着打开文档需要很长时间.
我发现如果包含链接对象源的电子表格已经打开,文档打开得更快,因此Word不会保持打开,关闭,重新打开它们.
到目前为止,我所拥有的解决方案的开头是创建链接对象的所有文件路径的列表,通过以下VBA代码完成:
Sub TypeArray()
Dim List(), Path As String
Dim i, x As Integer
Dim s As InlineShape
Dim fso As FileSystemObject, ts As TextStream
Set fso = New FileSystemObject
Set ts = fso.OpenTextFile("C:\MyFolder\List.txt", 8, True)
With ts
.WriteLine (ActiveDocument.InlineShapes.Count)
End With
For Each s In ActiveDocument.InlineShapes
Path = s.LinkFormat.SourcePath & "\" _
& s.LinkFormat.SourceName
With ts
.WriteLine (Path)
End With
Next s
End Sub
'-------------------------------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我在Microsoft Word中创建了一个自定义功能区,但是我在将事件附加到功能区中的按钮时遇到问题.以下是我的代码:
UI XML:
<mso:cmd app="Word" dt="1" />
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="true" >
<tabs>
<tab id="CustomTab" label="MyTasks" >
<group id="Group1" label="Details Labels">
<menu id="Menu1" label="Details" size="large">
<menu id="Menu21" label="Dates">
<button id="my_date" onAction="foo_eventhandler" label="Some Date" />
</menu>
</menu>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Run Code Online (Sandbox Code Playgroud)
然后我在Modules/NewMacros VBA代码中有以下VBA代码:
Sub foo_eventhandler(control As IRibbonControl)
End Sub
Run Code Online (Sandbox Code Playgroud)
注意:
我通过打开Word - >转到文件 - >选项 - >自定义功能区 - >导入/导出来导入XML.然后我选择我的XML文件并导入它.
但是,当运行此代码时,我收到错误"Argument Not Optional".如果我运行相同的代码没有"控制为IRibbonControl"它没关系,但我需要能够获得Sender对象.有人有什么建议吗?
贾森
我知道我的问题可能听起来很简单,但我无法在任何地方找到解决方案......而且我已经筋疲力尽了.
我正在编写一个宏来自动生成Word中的报告生成.在某个阶段,我需要插入一些图表,它位于excel的图表表中......但没办法.这是我的代码
Sub copy_pic_excel()
Dim xlsobj_2 As Object
Dim xlsfile_chart As Object
Dim chart As Object
Set xlsobj_2 = CreateObject("Excel.Application")
xlsobj_2.Application.Visible = False
Set xlsfile_chart = xlsobj_2.Application.Workbooks.Open("path_to_file.xlsx")
Set chart = xlsfile_chart.Charts("sigma_X_chart")
chart.Select
chart.Copy
With Selection
.PasteSpecial Link:=False, DataType:=wdPasteEnhancedMetafile, _
Placement:=wdInLine, DisplayAsIcon:=False
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
但它一直显示错误消息:"运行时错误'5342':指定的数据类型不可用."
我不知道为什么它没有粘贴图表.我想通过'MSForms.DataObject'使用剪贴板,但我似乎只适用于文本(或字符串).据我所知,我拥有所需的一切,但显然缺少一些东西.
任何的想法?
我有一个单词模板,内容控件包含在重复部分内容控件中.我需要创建一个按钮来删除项目转发器,例如添加.
我想弄清楚如何删除重复的部分项目.但在这种情况下 - 我总是删除最后一项.但是,我希望能够删除用户选择的项目.
Sub delete()
Dim cc As ContentControl
Dim Index
Set cc = ThisDocument.SelectContentControlsByTag("ResolRepeater").Item(1)
With cc
.LockContentControl = False
.LockContents = False
.AllowInsertDeleteSection = True
For Index = 1 To cc.RepeatingSectionItems.Count
If Selection.Range.InRange(cc.RepeatingSectionItems(Index).Range) Or cc.RepeatingSectionItems(Index).Range.InRange(Selection.Range) Then
Exit For
End If
Next Index
'can't delete, get Run-Time Error '5904': "you can not change the range"
cc.RepeatingSectionItems(Index).Range.delete
'this lines always delete last element:
'cc.RepeatingSectionItems(Index).Range.Select
'Selection.Delete
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
我很乐意回答任何问题.
我在Word 2010中有一个宏,它在打印时为文档添加页脚(即在打印预览屏幕中单击"最终"打印按钮后).
目前,为了填充文档,用户需要首先运行宏,并且只有在运行它之后,当他们打印文档时,才会添加页脚.
我想自动运行宏的部分,因此选择打印选项(Ctrl + P /文件>打印)将自动运行宏并打开打印预览屏幕进行最终打印.
如何才能做到这一点?
先感谢您