注意:与断言相反,此问题不是重复。我的问题被标记为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)。
非常感谢任何帮助。
答案 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