VBScript,GetLocale,SetLocale - 其他用途

时间:2017-02-08 19:41:57

标签: vba vbscript ms-word

注意:与断言相反,此问题不是重复。我的问题被标记为ms-word,并且建议指向ms-excel答案,在这种情况下不适用。 Word VBA!= Excel VBA。

我有需要我在德国生成英语Word 2016文档的用户,但日期是欧洲风格的德语月份和日期名称。我们需要它们作为英文日期样式和名称来实现。

我知道内容控制和日期选择器,但目前不是一个选项(可能在将来)。改变他们当地的区域设置也不是一种选择(显然它是德国人)。由于我不会进入这里的原因,出于遗留原因,我们仅限于.DOC格式。

发生在VBScript函数GetLocale和SetLocal上。在VBScript的上下文中完美运行......

问题是我如何能够将VBScript作为DLL引用并在Office VBA模块中使用该功能?不幸的是,它没有内置到Office VBA中。

我已尝试从SYsWow64文件夹引用VBScript.dll,但它唯一暴露的是VBScript_Global.GlobalObj和SetLocale,GetLocale不可用(它在最新文档中仍被引用,它不被弃用。 https://msdn.microsoft.com/en-us/library/5xf99h19(v=vs.84).aspx)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这就是我写的答案。

Public Function printDateByLocale(inputDate As Date, inputlocale As String) As String

Dim codeString As String
Dim scriptControl As Object

Set scriptControl = CreateObject("MSScriptControl.ScriptControl")

codeString = "Function getDateByLocale(myDate, locale)" & vbCrLf & "SetLocale locale" & vbCrLf & "getDateByLocale = FormatDateTime(myDate, vbLongDate) End Function"

With scriptControl
    .Language = "VBScript"
    .addCode codeString
    printDateByLocale = .Run("getDateByLocale", inputDate, inputlocale)
End With

Set scriptControl = Nothing

End Function