将字符串发送到书签后,将字符串从单词书签获取回 excel



我尝试实现以下目标:将字符串元素从 Excel 单元格复制到 Word 中的书签。在那里,用户可以修改字符串,并且可以在修改后将字符串发送回 excel。

我的问题:我可以将字符串复制到书签中(bookmars 设置为在 word 中封装书签,这意味着我有一个刚刚写好的"abc",书签应该在哪个位置,标记为"abc"并按下书签。 复制文本后书签仍然存在,但是当我尝试将书签处的字符串写回 excel 时。范围对象为空。

我的问题:谁能帮我实现我的目标,让字符串从书签中恢复出来,以出类拔萃。因此,我只需要对象中的字符串。一个 msgbox(the_string) 就足够了,我可以把它放到它所属的 excel 中的位置。

这是我的代码:

 Sub BM(Step As Byte)
    Dim docApp As Word.Application
    Dim CurrentDoc As Word.Document
    Set docApp = GetObject(, "word.application")
    Set CurrentDoc = docApp.ActiveDocument
    CurrentDoc.Bookmarks(Step & "Number").Range.Select
    Dim objBMRange_pos As Word.Range
    Set objBMRange_pos = CurrentDoc.Bookmarks(Step & "Number").Range
    Dim oData As dataobject
    Set oData = New dataobject
    oData.SetText ""
    'The function Check_A delivers the string from excel cells
    oData.SetText Check_A(Step, "Number")
    oData.PutInClipboard
    oData.GetFromClipboard
    CurrentDoc.Bookmarks(Step & "Number").Range.Text = oData.GetText
    'CurrentDoc.Parent.Selection.PasteSpecial DataType:=wdPasteText
    'Re-new the bookmarks
    CurrentDoc.Bookmarks.Add Name:=(Step & "Number"), Range:=objBMRange_pos
    Debug.Print CurrentDoc.Bookmarks(Step & "Number").Range.Text
End Sub

好的,我自己找到了答案。

oData.PutInClipboard
    oData.GetFromClipboard
    CurrentDoc.Bookmarks(Step & "Number").Range.InsertBefore oData.GetText
    Debug.Print (CurrentDoc.Bookmarks(Step & "Number").Range.Text)

做到了。您只需要删除之前用于封闭书签的字符即可。

在这里,我们有一个很好的来源:VBA和书签

最新更新