标签: word-vba

如何:从C#Ribbon加载项运行现有的Word VBA宏

背景:我在Word中使用了大量专门的VBA宏,用于文档格式设置。在Word 2003中,这些宏是从自定义工具栏激活的。我最近已过渡到Word 2007,并希望能够从用VS 2010创建的新Word功能区中运行这些现有的VBA宏。但是,我不知道如何从新的功能区按钮调用现有的宏。

问题:如何从C#Word加载项中调用存储在.dotm模板中的现有VBA宏?

任何帮助将不胜感激。

c# vba vsto word-vba

4
推荐指数
1
解决办法
6071
查看次数

在MS Word文档中的每个句子上使第一个字母变为粗体

我想在MS Word文档中对每个粗体句子做第一个字母.什么是实现这一目标的好方法?

ms-word word-vba

4
推荐指数
2
解决办法
8148
查看次数

VBA Word中的当前行

如何确定Word VBA宏中表的选择处于活动状态的当前行

我尝试过所有变种都没有成功:

MsgBox Selection.Range
MsgBox Selection.Rows.Item.Index
Run Code Online (Sandbox Code Playgroud)

row ms-word word-vba

4
推荐指数
1
解决办法
1万
查看次数

如何以编程方式迭代Word文档中的下标,上标和方程式

我有一些Word文档,每个文档包含几百页的科学数据,其中包括:

  • 化学式(H2SO4含有所有适当的下标和上标)
  • 科学数字(使用上标格式化的指数)
  • 大量的数学方程.用Word中的数学方程编辑器编写.

问题是,以Word的形式存储这些数据对我们来说效率不高.所以我们希望将所有这些信息存储在数据库(MySQL)中.我们想将这些格式转换为LaTex.

有没有办法使用VBA迭代所有的子脚本和上标和方程?

如何迭代数学方程式?

vba ms-word word-vba

4
推荐指数
1
解决办法
4690
查看次数

使用VBA将Access中的RTF文本复制到word表

有没有办法使用VBA将RTF文本从Access数据库中的备注字段复制到Word文档.我目前有这个代码,但它产生html文本(文本包含标签而不是格式化).

' Query the database and get the sales for the specified customer
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Sales WHERE Sales.[ID] ='" & Forms![customers]![id] & "'")

'Check to see if the recordset actually contains rows
    If Not (rs.EOF And rs.BOF) Then
    rs.MoveFirst
    Do Until rs.EOF = True

    ' Create file and add rtf text
    Set ts = fso.CreateTextFile("c:\temp\temp.rtf", True)
    ts.Write rs(3)
    ts.Close

    ' Add a row
    doc.Tables(1).Rows.Add

    ' Get the number of the added row to add data
     i …
Run Code Online (Sandbox Code Playgroud)

ms-access vba access-vba word-vba

4
推荐指数
1
解决办法
4216
查看次数

如何在长时间运行的字宏中禁用屏幕更新?

我有一个单词2013宏,这需要相当长的时间才能完成.

宏正在重新格式化文档,并且屏幕在宏运行时不断更新,我猜这是大部分时间花费的时间.

如何在宏中禁用单词中的屏幕更新并在宏完成时刷新它?

vba ms-word word-vba

4
推荐指数
1
解决办法
5276
查看次数

如何在Word表中复制行?

我试图使用VBA复制Word中的表行,而不使用Selection对象或剪贴板.也就是说,我想要一个与现有行具有相同内容的新行.

为此,我首先创建一个新的(空)行,并循环遍历源行中的每个单元格,并将其内容复制到目标行中的相应单元格中.

为了复制每个单元格,我得到一个Range引用源单元格的整个内容Range的对象,以及目标单元格的等效对象,然后执行以下操作:

oToRange.FormattedText = oFromRange.FormattedText
Run Code Online (Sandbox Code Playgroud)

这在Office 2003上运行良好,并且大部分时间都在Office 2010上运行.但是,我遇到了一个特定场景的实际问题.我(大大)简化了这个场景,以展示问题的核心.

在下图中,外(灰色)2R x 1C表中有两个单元格.第二行是要复制的行.第一行是我创建的新行,我想要复制第二行的内容.

在此输入图像描述

您会注意到第二行包含嵌套表.

当我在Word 2003中运行下面的代码时,它完美地工作,我得到以下结果:

在此输入图像描述

但是,在Word 2010中,相同的代码会产生以下结果:

在此输入图像描述

如您所见,单元格内容已在目标表格单元格之前(和之外)插入.

值得一提的是,如果我在嵌套表之后放置一些东西,那么它不再是源单元格中的最后一个东西,那么就不会出现这个问题.

这是我正在使用的完整VBA代码:

Dim oDoc As Word.Document
Set oDoc = ThisDocument

Dim oFromRange As Range
Set oFromRange = ThisDocument.Tables(1).Cell(2, 1).Range
oFromRange.End = oFromRange.End - 1

Dim oToRange As Range
Set oToRange = ThisDocument.Tables(1).Cell(1, 1).Range
oToRange.End = oToRange.End - 1

oToRange.FormattedText = oFromRange.FormattedText
Run Code Online (Sandbox Code Playgroud)

注意:调整到源和目标范围Cell.Range的末尾是必要的,因为包括单元格结束标记,我不想复制它.

我该怎么做才能说服它将内容放在目标单元格内(就像Word 2003那样),而不是之前呢?

vba ms-word office-interop word-vba office-2010

4
推荐指数
1
解决办法
1万
查看次数

如何在保存前在Word中运行宏?

如何在每次保存文档之前使Microsoft Word运行VBA宏?可以在不将宏添加到文档本身的情况下完成吗?

vba ms-word word-vba

4
推荐指数
1
解决办法
1万
查看次数

使用正则表达式查找和替换Word 交替运营商

使用正则表达式查找文本时,我在某处出错了.

这是我正在使用的代码.

findText = "(Event Handling|Event Handling \(EH\))"
Debug.Print findText
With Selection.Find
    .Text = findText
    .Replacement.Text = "Replaced"
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .matchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Find.Execute Replace:=wdReplaceAll
Run Code Online (Sandbox Code Playgroud)

我试图找到Event HandlingEvent Handling (EH)在通道中,但OR运算符不工作.

当我试图Event Handling单独找到它的时候.同样的Event Handling (EH).但是与OR运算符一起|它不起作用.为什么?

regex vba ms-word word-vba

4
推荐指数
1
解决办法
8660
查看次数

VBA:如何测试字符串是否为空

我在VBA中还很陌生,我还没有完全习惯语法,所以对我的问题听起来很愚蠢感到抱歉。

我正在Word 2010中使用RequisitePro40和VBA 7.0。在我的一个模块中,我具有以下循环和If条件:

Dim rqRequirements As ReqPro40.Requirements
Dim rqRequirement As ReqPro40.Requirement
Const eAttrValueLookup_Label = 4
Dim a As Integer
...

For Each vReqKey In rqRequirements
    Set rqRequirement = rqRequirements(vReqKey)

    If rqRequirement.AttrValue("MyAttreName", eAttrValueLookup_Label).text <> Null Then
        a = 1
    End If

    If rqRequirement.AttrValue("MyAttreName", eAttrValueLookup_Label).text = Null Then
         a = 2
    End If

 Next
Run Code Online (Sandbox Code Playgroud)

在循环的每次迭代中,将同时执行a = 1a = 2

基于,相等和不相等运算符为“ =”和“ <>”。因此,我希望为字符串执行a = 1a = 2。我的语法有问题吗?还是ReqPro相关问题?

我也尝试使用“ Is”和“ IsNot”运算符,但它们导致编译器错误:类型不匹配

有人可以帮我弄这个吗?

更新: …

vba requirements word-vba

4
推荐指数
1
解决办法
9024
查看次数