除了将文本插入并解析为空白的Word字段之外,有没有什么方法可以用VBA以编程方式将用户定义的字段和字段代码构建到我自己的模板中?此外,有没有办法让这些字段显示在可用字段列表中?
我正在填写一个Word模板,其中包含从用户输入中收集的数据.特别地,选择(可变)数量的文档,并且关于每个文档的信息填充表格的一行.
我已经为模板中的几个项目添加了书签,并成功填写了我的宏标题中的信息,但是我不太确定.我为第一个单元格添加了书签并尝试使用tab(使用Chr(9)),并尝试传递数组.(在模板中,表只有第一行.通常在最后一列之后标记会创建一个额外的行.)
我可以用细胞内容物来回收细胞
Word.Application.ActiveDocument.Tables(1).Cell(3, 1).Range.Text
Run Code Online (Sandbox Code Playgroud)
但不能写入除第一个之外的任何单元格,我放置了一个书签.
任何人都可以提供填充表格的可能解决方案吗?
我在Word VBA中制作了一些代码,最后我需要1个退格键击.这怎么可以实现?
我想获取我的Word文档中的所有书签,然后将它们推到数组中。书签必须按其在文档中的位置而不是名称进行排序。
例如 这是文档中的书签列表,
[bm_s] (header)
[bm_h] (title)
[bm_a] (footer)
Run Code Online (Sandbox Code Playgroud)
我希望书签保持其顺序,以使数组如下所示,
array {bm_s, bm_h, bm_a, }
Run Code Online (Sandbox Code Playgroud)
例如 看起来应该不会像下面这样
array {bm_a, bm_h, bm_s, }
Run Code Online (Sandbox Code Playgroud)
我从文档工作中获取了所有书签。提取并推入数组时,我会以随机顺序获得所有书签。
这是对原始问题的扩展,当前段落的编号是多少?我如何获得它?,这很好地回答了iWork Pages的问题。http://macscripter.net/viewtopic.php?id=29125
我想在Microsoft Word中做同样的事情。我找到了可以获取段落编号的VBA脚本(请参见下文),但是我不知道VBA脚本的工作原理,因此我被卡住了(也请参见下文)
更新17-05-2013
有两种解决方案。在阅读了VBA并检查了代码之后,我意识到了VBA脚本如何确定段落编号。实际上,这很简单。它设置从字符0到光标位置的范围,然后计算该范围内的段落。
因此,我看到了两种可能的解决方案:
CurPos来创建范围从文档位置0到位置的范围cursor。计算范围内的段落。我的最终目标是对文档进行遍历,以查找所有表并在其前后插入分节符。
以下VBA脚本提供了一个弹出对话框,其中显示了我需要的数据以及更多信息(段落,绝对行号,相对行号)。也许有人可以帮助我将此脚本的输出设置为我可以通过AppleScript访问的文档变量
Open this Scriplet in your Editor:
get variable value of variable "paragraphNum" of active document
Run Code Online (Sandbox Code Playgroud)
这是VBA脚本:
Option Explicit
Sub WhereAmI()
MsgBox "Paragraph number: " & GetParNum(Selection.Range) & vbCrLf & _
"Absolute line number: " & GetAbsoluteLineNum(Selection.Range) & vbCrLf & _
"Relative line number: " & GetLineNum(Selection.Range)
End Sub
Function GetParNum(r As Range) As Integer
Dim rParagraphs As Range
Dim CurPos As Integer
r.Select …Run Code Online (Sandbox Code Playgroud) 我想像这样在VBA Makro中总结我的Const变量:
Private Type Company
Public Const CompanyNameColumns As String = "14"
Public Const CompanyNameStartRow As Integer = 5
Type End
Run Code Online (Sandbox Code Playgroud)
我无法运行此代码。我认为问题在于,无法在类型声明中定义Const。有没有解决办法?
我希望有一个可以在WORD 2003上运行的宏代码.我有如下文字:
这是从这里继续的句子的开头.
我想把大写文本加粗:
这是从这里继续的句子的开头.
据我所知,如果粗体文本的文本格式为"AllCaps",但事实并非如此,这将是微不足道的.它是使用大写锁定创建的.
有任何想法吗?我可以了解它,但我无法弄清楚如何在VBA代码中添加复杂的查找和替换.
我在下面的代码中传递值0
Dim searchtext As Varient
Public Sub xyz_page_load()
searchtext = 0
If searchtext = "" Or searchtext = Empty Then
Debug.Print "Error" 'this line should not execute.
Else
Debug.Print "Good"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
它不应该进入"错误"代码行.任何人都可以让我知道为什么会这样吗?为什么varient数据类型将0视为空或空白?
我在使用VBA命令找到某个短语时遇到问题,然后在它之前选择1或2个单词,然后将整个事物用斜体表示.
我能使用Selection.Find,Font.Italicise以及wdExtend相互独立的命令,但是当我将它们合并执行此任务,宏只是崩溃.有帮助吗?
Selection.Find.ClearFormatting
With Selection.Find
.Text = "Michael"
.Replacement.Text = "Michael"
.Forward = True
.Wrap = wdFindStop
Do While .Execute() = True
Selection.TypeParagraph
Selection.MoveLeft Unit:=wdWord, Count:=2, Extend:=wdExtend
Selection.Find.Replacement.Font.Italic = True
Selection.Font.Bold = True
Selection.Collapse Direction:=wdCollapseEnd
Loop
End With
Run Code Online (Sandbox Code Playgroud) 我在Excel中编写了一个宏,该宏可以打开和处理Word文档。当我通过vba编辑器运行该代码时,该代码有效,但是当我将代码行导入到excel宏中时,出现运行时438错误。
字宏
Selection.Collapse WdCollapseDirection.wdCollapseEnd
Run Code Online (Sandbox Code Playgroud)
将代码插入到Excel宏中,其中wtemp是word文档对象
wtemp.Activate
wtemp.Tables(3).Select
wtemp.Activate
wtemp.Selection.Collapse WdCollapseDirection.wdCollapseEnd
Run Code Online (Sandbox Code Playgroud)
我认为问题出在选择对象上,或者我缺少参考。我在VBAProject中包含的引用是: