【问题标题】:How do I change text in a Word Doc from Excel VBA when Word Doc is located on a server?当 Word Doc 位于服务器上时,如何从 Excel VBA 更改 Word Doc 中的文本?
【发布时间】:2014-01-27 19:47:16
【问题描述】:

我有一个宏,可以根据 word 模板创建实验报告,然后将其保存到远程服务器。在我的 Excel 工作表中选择了一个单元格,运行宏,打开一个带有空白模板的 Word 实例,并根据所选单元格和其他数据保存文件。我要做的是编辑空白模板中的标题并将其更新为位于所选单元格行的第一列中的实验名称。

以下代码在我从本地文件打开文件时有效,但当文件位于服务器上时无效。

    Dim oWord As Object
    Set oWord = CreateObject("Word.Application")
    oWord.Visible = True
    oWord.Activate

    ' Open a new instance of the ExperimentTemplate and save it
    oWord.Documents.Add Template:="ExperimentTemplate", NewTemplate:=False, DocumentType:=0
    oWord.ActiveDocument.SaveAs FileName:=fPath & "example.docx", FileFormat:=wdFormatXMLDocument 'fPath is the path to the folder where file will be saved on the server
    oWord.ActiveDocument.Close

    ' Re-open file and change Experiment Name
    oWord.Documents.Open FileName:=fPath  & "example.docx"
    Set oSelection = oWord.Selection
    oSelection.Find.Text = "Experiment Name"
    oSelection.Find.Replacement.Text = name 'defined as the text in the first cell of the selected column
    oSelection.Find.Execute Replace:=wdReplaceAll
    oWord.ActiveDocument.Save
    oWord.Quit
    Set oWord = Nothing

我知道我的代码不是最优雅的,但这对我来说并不担心,除非它影响了我想要实现的功能。任何帮助将不胜感激。这已经让我头疼了两个星期了!

【问题讨论】:

  • 不起作用是什么意思?有任何错误信息吗?
  • 当我在本地运行时,位于文件顶部的文本“实验名称”将替换为位于所选单元格行第一列的文本。但是当我为在服务器上创建的文件运行它时,它似乎跳过了文本替换,并且“实验名称”保留在文件的顶部。文件内没有发生任何变化
  • 你尝试过单步调试代码吗?
  • 是的,第一个问题是它没有选择“实验名称”,因此无法替换它
  • 试试这个Set oSelection = oWord.Documents(1).Content

标签: sharepoint excel replace ms-word vba


【解决方案1】:

你能帮我试试这个代码吗?

Dim oWord As Object
Dim oSelection As Object
Dim sel As Object

Set oWord = CreateObject("Word.Application")
oWord.Visible = True
oWord.Activate

oWord.Documents.Add Template:="ExperimentTemplate", NewTemplate:=False, DocumentType:=0
oWord.ActiveDocument.SaveAs FileName:=fPath & "example.docx", FileFormat:=wdFormatXMLDocument 'fPath is the path to the folder where file will be saved on the server
oWord.ActiveDocument.Close

' Re-open file and change Experiment Name
oWord.Documents.Open FileName:=fPath  & "example.docx"

Set oSelection = oWord.Documents(1).Content

oSelection.Select

Set sel = oWord.Selection

With sel
    .Find.ClearFormatting
    .Find.Replacement.ClearFormatting
    With .Find
        .Text = "Experiment Name"
        .Replacement.Text = Name 'Hope you have declared it somewhere?
        .Forward = True
        .Wrap = 1 'wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        sel.Find.Execute Replace:=2  'wdReplaceAll
   End With
End With

【讨论】:

  • 这正是我想要的!我知道我在文本选择方面遇到了问题...感谢您的帮助
  • @Malteaser6900:我很高兴它对你有用 :)
猜你喜欢
  • 2018-01-17
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多