标签: word-vba

如何在Word-VBA中跳转到书签并插入文本?

我正在尝试使用非常简单的单词宏创建Word文档.宏搜索我放置在文本中的书签,然后在该位置添加一个日期,即未来2周.

但是当我从模板创建一个新文档时,我一直没有找到书签.我已经经历了很多次,有时书签就在那里,有时它在那里,但不允许你点击"转到".

我怎样才能让它发挥作用?我在活动中添加了一小段代码,Document_New()但仍然无法报告书签.

我将文档放在rar文件中,因为我的web服务器无法处理.dotm扩展. 文献

我该如何制作,以便在从此模板生成新文档时,新文档的日期提前2周放在2个粗体部分之间?

Sub Two_Weeks_Ahead()
''# Two_Weeks_Ahead Makro
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub

Private Sub Document_New()
    Selection.GoTo What:=wdGoToBookmark, Name:="TwoWeeks"
    With ActiveDocument.Bookmarks
        .DefaultSorting = wdSortByName
        .ShowHidden = False
    End With

    Dim dt As Date
    dt = DateAdd("d", 14, DateTime.Now)

    Selection.TypeText Text:=Format(dt, "yyyy-MM-dd")
End Sub
Run Code Online (Sandbox Code Playgroud)

ms-word word-2007 word-vba

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

从字符串中删除段落标记

我有一个宏,可以在我的文档中找到所有'标题1'样式,并在UserForm的ComboBox中列出它们.

我的问题是我正在使用的查找例程也在我要复制的文本之后选择段落标记(),并且正在ComboBox中显示.

如何从字符串中删除它?我试过期运用replace(),更换vbCrLf,vbCr,vbLf,vbNewLine,^p,v,Chr(244)Asc(244)"",但一切都没有succeeeded.例如 -

sanitizedText = Replace(Selection.Text, "^v", "")
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解决这个问题吗?谢谢.

这是我的表格看起来 -

在此输入图像描述

vba word-vba word-2010

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

我恢复修订时锁定每个循环的VBA

我想从文档中获取修改后的原始文本.我是这样做的:

Set wrdDoc = wrdApp.Documents.Open(fileName)

For each sent in wrdDoc.Sentences

    if sent.Revisions.Count >=0 then
        after=sent.text
        sent.Revisions.RejectAll 
        before=sent.text
        SaveRev(before,after)
    End if

next
Run Code Online (Sandbox Code Playgroud)

现在这样会很好,除了那些畸形的句子之外

这是一句话.这是另一个.

将以一种奇怪的方式解析.首先,会出现这样的一句:" 这是一句话. "然后这一句既有" 这是一句话.这是另一句话. "

当有修改时会发生什么?第一次迭代将恢复对第一个句子的修订,然后第二次迭代将不会"看到"该修订部分.

底线是,第一次迭代将获得第一个句子的两个版本,第二次迭代将只获得第一个句子的原始版本(同时从第二个句子获得两个版本).

让我澄清一下:

假设我有原版

我们从这句话开始.这句话.

它被修改为

我们以这句话结束了.还有这句话.

第一次迭代将导致

之前:我们从这句话开始.

之后:我们以这句话结束了.

但第二次迭代将有

之前:我们以这句话结束了.这句话.

之后:我们用这句话结束了.还有这句话.

好吧,我所做的是改变逻辑,撤消版本恢复:

Set wrdDoc = wrdApp.Documents.Open(fileName)

For each sent in wrdDoc.Sentences

    if sent.Revisions.Count >=0 then
        wrdDoc.Undo
        after=sent.text
        sent.Revisions.RejectAll 
        before=sent.text
        SaveRev(before,after)
    End if

next
Run Code Online (Sandbox Code Playgroud)

我喜欢这个,因为我最终得到了一个未经改动的文件(最后一句除外).

问题是,这样做会将宏放在一个特定句子的无限循环中.

我不知道每个人的机制,我不知道导致它挂起的原因.显然改变集合会搞乱循环,但我不明白为什么.

我可以将i = 0循环到wrdDoc.Sentences.Count,但我认为这会让我跳过句子的原因与我现在重复的一样,我不能冒险(即使我测试好了,我必须是确定它永远不会发生).

所以问题是(是):

  1. 任何人都可以帮我弄清楚为什么它会锁定句子,
  2. 有没有更好的方法呢?
  3. 我怎样才能解决它,同时确保不要跳过句子.

非常感谢你!

PS:我可以提供样本文件,让我知道是否需要(也许我做错了已经让某人清楚了,我必须制作样本,因为我无法分享我正在处理的文件).

- …

foreach vba word-vba revision-history

8
推荐指数
1
解决办法
226
查看次数

Word VBA:宏来更改选择中的单元格,并创建表格的汇总表?

我在文档中有一堆看起来像这样的表:

| Thing     |   Title   |
|-----------|:---------:|
| Info      | A, B, C.  |
| Score     | Foo       |
| More Info | Long Text |
| Proof     | Blah      |

Figure 1
<Screenshot of Proof>
Run Code Online (Sandbox Code Playgroud)

我想让它看起来像这样(左上角的单元格中的数字):

| Thing #1  |       Title       |
|-----------|:-----------------:|
| Info      | A, B, C.          |
| Score     | Foo               |
| More Info | Long Text         |
| Proof     | Blah <Screenshot> |
Run Code Online (Sandbox Code Playgroud)

但是,文档中有许多表格,我只想使用"在选择范围内".

简而言之:我必须选择所有表格并按顺序编号.我还想制作一个这样的表格,如下所示:

| Number | Title | Score | Number of …
Run Code Online (Sandbox Code Playgroud)

vba ms-word word-vba

8
推荐指数
1
解决办法
954
查看次数

VBA for MS word

有许多免费资源可以了解MSExcel的对象模型,但我没有找到任何类似MS字源的综合来源.

你能建议一个免费而全面的资源吗?

ms-word word-2007 object-model word-vba

7
推荐指数
1
解决办法
7013
查看次数

在VBA中将字体大小减少1步

有一种简单的方法可以在VBA中通过1步减少Word/Excel中的字体大小吗?

因此,如果我的字体大小是48,我可以轻松地将其减少到36,根据标准Word 2007字体组中的字体下拉菜单,而不是将字体大小减小12 - 我不知道下一个字体大小是什么下来是......

因此,不要通过float显式设置字体大小:

MyText.Font.Size = 36;
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

MyText.Font.Size -= Reduce by 1 step;....  forgive the pseudo code!
Run Code Online (Sandbox Code Playgroud)

excel vba font-size excel-vba word-vba

7
推荐指数
1
解决办法
2922
查看次数

运行时错误429,ActiveX组件无法创建对象,自动化MS Word应用程序,CreateObject("Word.Application")

从VBA(Access)执行以下行时,我遇到以下错误:

Set wd = CreateObject("Word.Application")
Run Code Online (Sandbox Code Playgroud)

Imgur

我找到了以下链接,但没有发现它有用:http://support.microsoft.com/kb/828550

我试过的事情


  • 从"控制面板">"程序和功能"修复Office的安装
  • 卸载MS Word,重新安装
  • 尝试Dim wd As Object而不是Dim wd as Word.Application
  • 手动运行Word.
  • winword.exe /RegServer在管理员命令提示符下运行 没有默默地运行,只是打开了Word.
  • 检查CLSID {000209FF-0000-0000-C000-000000000046}下的LocalServer32密钥.最初失踪了.重新安装Word后,CLDID就在那里但缺少LocalServer32密钥.
  • winword.exe /automation.仅仅启动Word.
  • winword.exe以管理员身份运行
  • access.exe以管理员身份运行

相关(也许)


  • Windows 8 x64
  • Office 2007
  • C:\ Program Files(x86)\ Microsoft Office\Office12
  • 预安装了Office 2010的预览版.
  • 启动Excel适用于自动化和VBA.
  • asycfilt.dll文件版本:6.2.9200.16384,日期:7/25/2012 11:05 pm
  • oleaut32.dll文件版本:6.2.9200.16384,日期:2012/7/25 11:06
  • olepro32.dll缺失
  • stdole2.tlb没有文件版本,日期:7/25/2012 10:34 pm
  • McAffee抗病毒

vba ole ms-word word-vba windows-8

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

如何获取当前登录用户的电子邮件地址?

我是VBA的新手并试图让自动化的word文档正常工作.目前,文档中有一个按钮,按下后会触发附有文档的电子邮件.

但是我还需要获取当前用户发送电子邮件的电子邮件地址,因此我可以在发送之前将其放在文档中.我在互联网上的搜索没有产生符合我情况的任何可用代码.我目前的代码如下.

Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)

Set Doc = ActiveDocument
Doc.Save

With EmailItem
    .Subject = "Requesting Authorization Use Overtime"
    .Body = "Please review the following request for overtime" & vbCrLf & _
    "" & vbCrLf & _
    "Thanks"
    .To = "toemail@test.com"
    .Importance = olImportanceNormal
    .Attachments.Add Doc.FullName
    .Send
End With
Run Code Online (Sandbox Code Playgroud)

不确定这是否相关,但是当使用文档时,Outlook应用程序将始终以用户登录的方式打开.我曾经在这些情况下使用intellisense帮助,所以我可以使用方法和属性,但是intellisense似乎没什么帮助.

outlook vba ms-word word-vba outlook-vba

7
推荐指数
3
解决办法
3万
查看次数

使用vba将格式化文本复制到访问中

我需要在Access数据库中保存Word中的格式化文本.

到目前为止,我已经设法找出如何在访问字段中存储格式化文本(在表中创建备注字段并将文本格式设置为富文本).正在搜索SO我还没有遇到如何将所述文本从单词传输到Access的解决方案.

我知道这是可能的,因为如果您手动执行此操作,只需复制和粘贴信息即可.

我的问题是,如何使用VBA将格式化文本从word复制到表中的字段?

通过实验我创建了以下内容来测试它.到目前为止没有成功......

Sub GetComments()
'Imports Analyst Comments from Excel files als OLE Objects.
'---------------------------------

'Access Variables
Dim dbsFundDB As DAO.Database
Dim rsComments As DAO.Recordset

Set dbsFundDB = CurrentDb
Set rsComments = dbsFundDB.OpenRecordset("tblFunds")

'Word Variables
Dim doc             As Word.Application
Dim dcmt            As Word.Document
Dim sectn           As Word.Section
Dim obCommentText   As Object
Dim sAnalystText    As String

'Open New Word File
Set doc = New Word.Application
doc.Visible = True
Set dcmt = doc.Documents.Open(sPathTemplate)
Set sectn = dcmt.Sections(1)

sectn.Range.Select
Selection.InsertFile FileName:="myfile.rtf", …
Run Code Online (Sandbox Code Playgroud)

ms-access ms-word access-vba word-vba ms-access-2010

7
推荐指数
1
解决办法
5206
查看次数

为什么我看不到Microsoft Forms 2.0对象库?

我想使用这个库来处理剪贴板.我希望在下面的屏幕截图中看到它,但我在参考库列表中找不到它.我该如何让它出现?

在此输入图像描述

excel clipboard vba excel-vba word-vba

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