我目前遇到的问题是我从老板那里分配的自定义插件,在分配时没有经过全面的测试和开发。它是一个字母模板生成器,它从Access(字母类型,帐户类型,代理列表等)中获取值,这些值在Excel中生成工作表,用户可以根据word文档中的书签输入值。
Access和Excel之间的通信似乎没问题,问题是当数据从excel转到word时,我的代码中有一部分删除了word.formfields用书签替换它们并在之后基于在excel表中的用户条目,代码的这一部分在我的工作笔记本电脑和我的工作桌面上正常工作,但在使用该工具的顾问的桌面上却没有。
关于它的奇怪之处在于删除word.formfield很好,只是更改了无效的书签。以下是仅在某些计算机上出现故障的代码:
下面更新书签的if语句是检查要分配的特定书签,遗憾的是我无法在此处链接该代码。
我已经检查了其他计算机的安全设置和版本号,它们与我的相同,所以我真的不知道是什么原因造成的......
更新书签:
ElseIf wdDoc.Bookmarks.Exists(arrDefault(1, i)) Then
updateBookmark CStr(arrDefault(1, i)), arrDefault(2, i), arrDefault(3, i)
End If
更新书签子程序:
Private Sub updateBookmark(bookmarkname As String, bookmarkValue As Variant, ValueType As String)
Dim BMRange As Word.Range
DeleteFormFields (bookmarkname)
Set BMRange = wdapp.ActiveDocument.Bookmarks(bookmarkname).Range
'if the language is French
If InStr(1, UCase(strLang), "FRENCH") <> 0 Then
Select Case ValueType
Case "Date"
If bookmarkname = "TodaysDate" Then
BMRange.Text = bookmarkValue
Else
BMRange.Text = CStr(Application.WorksheetFunction.Text(bookmarkValue, "[$-040c]d mmmm, yyyy"))
End If
Case "String", "Long", "Integer"
BMRange.Text = bookmarkValue
Case "Currency"
BMRange.Text = Format(bookmarkValue, "$#,##0.00")
End Select
'if the language is English
Else
Select Case ValueType
Case "String", "Long", "Integer"
BMRange.Text = bookmarkValue
Case "Currency"
BMRange.Text = Format(bookmarkValue, "$#,##0.00")
Case "Date"
If bookmarkname = "TodaysDate" Then BMRange.Text = Format(bookmarkValue, "MMMM D, YYYY")
BMRange.Text = Format(bookmarkValue, "MMMM D YYYY")
End Select
End If
wdapp.ActiveDocument.Bookmarks.Add bookmarkname, BMRange
End Sub
答案 0 :(得分:0)
我找到了答案!丢失的ValueType名为&#34; Month&#34;这使得书签没有更新....至于引用他们很好......感谢那些花时间去研究它的人。