2017-02-08 5 views
1

注:アサーションとは異なり、この質問は、ではありません。私の質問はms-wordとタグ付けされ、提案はms-excelの回答を指していますが、この場合は適用されません。 Word VBA!= Excel VBAです。VBScript、GetLocale、SetLocale - その他の用途

私は、ドイツのユーザーが英語の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)。

ご協力いただければ幸いです。

+2

[VBScriptの 'のSetLocale' 関数に相当VBA?]の可能な重複(http://stackoverflow.com/questions/31785613/vba-equivalent-to-vbscripts-setlocale-function) – Lankymart

+0

その質問と回答Excel VBAと、Word VBAが機能しないEvaluate関数を指します。私の質問はms-wordとタグ付けされていますありがとうございます。 – Steve

+0

その場合、答えはいいえ、ごめんなさい。 VBAを使用しているかのように見えますが、VBScriptで許可されていないWindows APIにアクセスする必要があります。あなたはWindows APIを使ってはいけません。 – Lankymart

答えて

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 
+0

発明のアプローチ。 – Lankymart

+0

重要なのは、ロケールを設定する機能です.VBScriptまたはJScriptは、そのVBAで実行できないことを実行できます。そうでなければ、このビジネスのどれも必要ではありません。 – Steve

関連する問題