Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 使用Excel中定义的范围,替换open Word文档中的[text]_Vba_Excel_Ms Word - Fatal编程技术网

Vba 使用Excel中定义的范围,替换open Word文档中的[text]

Vba 使用Excel中定义的范围,替换open Word文档中的[text],vba,excel,ms-word,Vba,Excel,Ms Word,我想做以下工作: 在Excel中,创建表格并定义范围(例如A1到B13为“Arf”,保存在文件中 使用VBA,从Excel移动到打开的Word文档 在open Word文档中,搜索字符串(例如“[Table goes here]”) 用Excel定义的范围替换字串(例如,[此处表格]替换为“Arf”) 我会为许多不同的表定义许多范围,根据我在Excel中使用的预定义表,我会将定义的范围导入Word中的相应字符串 到目前为止,我已经找到了许多用于进入和更改文件位置中文本的代码,但我希望这是用于当前

我想做以下工作:

  • 在Excel中,创建表格并定义范围(例如A1到B13为“Arf”,保存在文件中

  • 使用VBA,从Excel移动到打开的Word文档

  • 在open Word文档中,搜索字符串(例如“[Table goes here]”)

  • 用Excel定义的范围替换字串(例如,[此处表格]替换为“Arf”)

  • 我会为许多不同的表定义许多范围,根据我在Excel中使用的预定义表,我会将定义的范围导入Word中的相应字符串

  • 到目前为止,我已经找到了许多用于进入和更改文件位置中文本的代码,但我希望这是用于当前打开的任何Word文件(同时在Excel和Word两个文件中工作)

    我真的没有这方面的现有代码,因为我不知道如何做,但让我试着给出我的想法:

    Sub Replace_Word_String_with_Excel_Range()
    
    Application.Goto Reference:="Arf"
        Selection.Copy
    
    Application(Word).Find.Replacement
    With Selection.Find
        .Text = "[Table goes here]"
        .Replacement.value = "Arf"
    End With
    
    End Sub
    
    我觉得我可以创建一个Excel文件和创建模板,定义表格。我会将它们全部命名(例如Arf、Bark和Woof)。我不明白的是如何通过代码将“alt tab”粘贴到Word。我的另一个困惑是如何通过Replacement.Value函数粘贴整个Excel定义的部分

    如果有人能帮我解决这个问题,我将不胜感激。因为我正在积极地做这件事,我会尝试编辑这篇文章并相应地更新


    谢谢!

    在Word中使用DocVariables。如果您不知道什么是DocVariables,只需做一些研究,看看如何设置和运行它。然后,只需运行下面的脚本,并一如既往地根据您的具体需要进行修改

    Sub PushToWord()
    
    Dim objWord As New Word.Application
    Dim doc As Word.Document
    Dim bkmk As Word.Bookmark
    sWdFileName = Application.GetOpenFilename(, , , , False)
    Set doc = objWord.Documents.Open(sWdFileName)
    'On Error Resume Next
    
    objWord.ActiveDocument.variables("FirstName").Value = Range("FirstName").Value
    objWord.ActiveDocument.variables("LastName").Value = Range("LastName").Value
    objWord.ActiveDocument.variables("AnotherVariable").Value = Range("AnotherVariable").Value
    
    
    objWord.ActiveDocument.Fields.Update
    
    'On Error Resume Next
    objWord.Visible = True
    
    End Sub
    

    此代码位于Excel中。别忘了在Excel中设置对MS Word的引用。

    只想插话并感谢添加此代码。我需要测试它,但在过去几天里,我一直没有时间来处理该项目。我会在完成此工作后回来添加更新。再次感谢你!这对我来说很有效。谢谢你u很多!DocVariables info在理解这一切方面帮助很大。对于需要查找doc变量的任何人来说,这个问题是一个很好的起点: