VBA - 自定义插件在笔记本电脑上运行完美,但在其他计算机上无效

时间:2017-12-01 22:11:43

标签: vba excel-vba ms-access ms-word excel

我目前遇到的问题是我从老板那里分配的自定义插件,在分配时没有经过全面的测试和开发。它是一个字母模板生成器,它从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

1 个答案:

答案 0 :(得分:0)

我找到了答案!丢失的ValueType名为&#34; Month&#34;这使得书签没有更新....至于引用他们很好......感谢那些花时间去研究它的人。