我正在使用宏来填充包含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
答案 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。谢谢你的帮助。