带有书签的VBA代码出现错误1004

时间:2014-11-28 23:58:04

标签: excel vba excel-vba bookmarks

我正在使用宏来填充包含excel中命名范围的文本的word文档。 word文档具有与指定的excel范围对应的书签。我没有写代码,而是从其他来源复制它。

这个宏比我发布的代码片段要多得多。如果有用,我可以发布其余的。我将大约一半的word文档加入书签,宏工作正常,然后突然停止工作。

我在下面突出显示的行中收到错误1004。我是新手,所以我甚至不确定我应该寻找什么来解决这个问题。您可以提供的任何帮助将不胜感激!提前谢谢!

P.S。如果它是相关的,我使用的是Word和Excel 2007

 'PASTE TEXT STRINGS LOOP
    n = 1
    For Each temp In BkmTxt
        p = p + 1
        Prompt = "Please wait. Copying text. Carrying out operation " & p & " of " & pcount & "."
        Application.StatusBar = Prompt

    'If The Bkmtxt(n) is empty then go to the next one, once that has been found do next operation.
    If BkmTxt(n) = Empty Then
        n = n + 1

    'should find match and work
    Else

        'You might want to use multiple copies of the same text string.
        'In this case you need to call the bookmark as follows: "ARTextWhatever_01"
        'You can use as many bookmarks as you want.
        BkmTxtSplit = Split(BkmTxt(n), "_")
        vValue = Range(BkmTxtSplit(0)).Text **<----- ERROR HERE**

        Set wdRng = wdApp.ActiveDocument.Bookmarks(BkmTxt(n)).Range
        If Len(sFormat) = 0 Then
            'replace the bookmark text
            wdRng.Text = vValue
        Else
            'replace the bookmark text with formatted text
            wdRng.Text = Format(vValue, sFormat)
        End If

        'Re-add the Bookmark
         wdRng.Bookmarks.Add BkmTxt(n), wdRng
         n = n + 1
    End If
Next

2 个答案:

答案 0 :(得分:0)

步骤1:不要从外部源复制代码。使用外部资源作为学习工具,并尝试了解他们实际在做什么。

现在,如果我理解正确的话,你只需要一张带有命名范围的Excel表格,我假设它们已经包含在其中的信息,以及一个书签与命名范围完全匹配的word文档:

步骤2:确保在excel中有对象库引用

下面:

sub KeepItDoin()
    dim xlRange as Excel.Range
    dim wdApp as new Word.Application
    dim wdDoc as Word.Document
    dim wdBkm as Word.Bookmark

    set wdDoc = wdApp.Documents.Open( "Filepath" ) 'get filepath from where ever  

    for each wdBkm in wdDoc.Bookmarks
        set xlRange = Application.Range(wdBkm.Name)
        wdBkm.range.text = xlRange.Value
    next wdBkm
end sub

那可能会让你接近(没有测试,不关心它是否有效。用它来学习)。我们的想法是,如果书签与范围匹配,我们可以使用他们的名字在excel中查找范围,然后告诉excel将其中的数据移动到书签范围内。

你可能需要添加一些格式或者创建一个表格,然后在范围内逐个单元格移动并填充表格,但这是因为你喜欢复制意大利面所以我愿意接近。

答案 1 :(得分:0)

如果有人有兴趣,我想出来了。我插入Word文档的书签出错。如果word文档包含与excel中的范围不对应的书签,则此宏返回错误1004。谢谢你的帮助。