電子書籍の厳選無料作品が豊富!

Microsoft WORDのマクロ機能(Visaual Basic6.0)を使って、Microsoft Wordの文章支援ツールを作成しています。

しかし、導入するPCがWindow Server2003英語版上のMicrosoft Wordで、このOSはSJISの文字コード対応していないようで、文字化けしてしまい、困っています。
このマクロは、ツリービューに表示した文字列を、Wordに挿入するだけのソフトですが、使用しているツリービュー(Tree View, Microsoft TreeView Control version 6.0)コントロールはSJISしか日本語を表示してくれません。しかし、WordにはSJISの文字列を挿入しても、文字化けします。このPC上の日本語はユニコードで入力されるようです。このPC上では、テキストファイル内の日本語やVisual Basic上の日本語コメントなどSJISで書かれた文字はすべてが文字化けします。

SJISをユニコードに変換してから、Wordへ挿入など試しましたが、依然文字化けして表示されます。
このマクロを別PCのWindows XP、VISTA上のWordで実行すると、文字化けせずに表示されます。
何かいい解決策はないでしょうか?

A 回答 (3件)

誠にすみません!私は、読み間違い/勘違いをしてしまいました。



私も英語版では、VBEditor 上では、まったく同じです。解決策はありませんでした。

>このマクロを別PCのWindows XP、VISTA上のWordで実行すると、文字化けせずに表示されます。
逆に、質問文にあった、こちらの方がどうしてなのか分かりません。

Office 2007では、英語バージョンでも、ほとんど問題なく日本語表示が利きます。しかし、VBEdiotor 側は、いろいろ試してみましたが、日本語表示は利きません。オプションで、日本語のMs Gothic など試してみましたが、Document への挿入とかは出来ません。もしかしたら、Multilingual CD(有償)などを利用しなくてはならないのかもしれません。

>SJISをユニコードに変換してから、Wordへ挿入など試しましたが、依然文字化けして表示されます。

単語の部分は、Unicode の変換は必要ありませんが、私は、こんなことしかできませんでした。

Selection.Range.InsertAfter ChrW(&H65E5) & ChrW(&H672C) & ChrW(&H8A9E)
これは、あえて、ChrやChrW を使わずとも、同じ構造なら、配列でbinary にしても、可能だと思います。

たぶん、どこかには、この問題については書かれているはずですが、今は、この件は、そのままになっています。

私自身のアイデアですが、Active X などの表示は無理ですから、MsgBox も出来ません。

Sub Test1() '←これは別のパソコンで作るか、Document から文字コードを取る
Dim a() As Byte
Dim n As Variant
a = "日本語を表示する"
For Each n In a
 Debug.Print n 'Imeadiate Window で取る
Next
End Sub

Sub Test2() '←VBEで日本語を表示せずに日本語を挿入する
Dim a() As Byte
Dim buf As Variant
Dim i As Long
buf = Split("229,101,44,103,158,138,146,48,104,136,58,121,89,48,139,48", ",")
ReDim a(UBound(buf))
For i = 0 To UBound(buf)
 a(i) = buf(i)
Next
 Selection.InsertAfter CStr(a)
End Sub

この回答への補足

>このマクロを別PCのWindows XP、VISTA上のWordで実行すると、文字化けせずに表示されます。
これらのPCは、以下が「Japanese」になっているからだと思われます。以下の設定を「英語(米国)」にするとこれらのPCでもまったく同じ現象がおこりました。VBのコメントなどSJISで書かれた文字が全て文字化けします。やはりユニコード対応しないと以下の設定が「英語(米国)」場合、文字化けしてしまうようです。
Regional and Langage Option画面の[Advanced]タブ、Language for non-Unicode programs」
今から、アドバイスいただいた方法を試してみます。助かります。ありがとうございました。

補足日時:2010/11/19 23:31
    • good
    • 0
この回答へのお礼

上記で教えていただいた方法を試しても駄目でした。
しょうがないので、なんとかこのサーバーの管理者に頼んで、
Regional and Langage Option画面の[Advanced]タブ、Language for non-Unicode programs」を「Japanese」
に変更してもらいました。
その変更により、文字化けは解消されました。
ご回答、ありがとうございました。

お礼日時:2011/01/09 04:52

#1で触れましたが、Unicode とは言っても、アジアの言語のフォントが入っていないことがありますから、日本語のフォントは確認していますでしょうか?



http://www.daw-pc.info/windows/jpcorrespond.htm
2.日本語フォントをインストールします
    • good
    • 0
この回答へのお礼

Fontには、MS Gothic & MS PGothic & MS UI Gothic (True type)、MS Mincho & MS PMincho(True Type)は入っております。IMEの日本語対応はされていて、Wordで日本語入力が可能なので、日本語の言語フォントは入っているのではないでしょうか?
教えていただいたページのうち、下記以外の項目は日本語設定ができています。
「[Advanced]タブをからLanguage for non-Unicode programsでJapaneseを選択」
この設定は、現在このPCにAdministratorでログインできないため、設定変更できません。OS側でLanguage for non-Unicode programsの設定を変更するのでなく、ソフト側でUnicode対応をしようと努力しています。
Regional and Langage Option画面Languagesタブの「Supplemental language support」で「Install files for east Asian languages」はチェックONになっています。

お礼日時:2010/11/19 17:56

「PCがWindow Server2003英語版上のMicrosoft Word」



「OSはSJISの文字コード対応していない」
とは条件が違います。Microsoft Wordも英語バージョンということなら、
スタートメニューのOffice のメニューに、Langauge Setting があったはずです。
日本語のフォントはいれてあるものとします。

それで、日本語を使用するようにしてあればよかったと思います。それをしていないと、表示出来ません。

それで、Word で日本語が保存できないようなら、VBEditor 側から、ThisWorkbook のブロパティから、SaveEncording から、Unicode などを選べばよいと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。このサーバーは、アメリカの企業が提供しているもので、それをアメリカのNewYorkにある日系企業が導入しています。もともとアメリカ企業向けサーバーなので、OSもMS Wordも英語版です。それを日本語の入力と表示を可能にして、リモートデスクトップでアクセスし、利用しています。
WordのLanguage settingは日本語が追加されていました。Word上でキーボードでは、日本語入力が可能です。また日本語の表示は可能です。別のPCで日本語入力(SJIS)したファイルをこのPCで開くと日本語部分が文字化けします。そのファイルをユニコード変換した後に表示すると正しく日本語が表示されます。
作成したマクロから、Word上で日本語を入力すると文字化けします。VBEditor 側から、ThisWorkbook のブロパティで、SaveEncording をUnicodeにしてやってみましたが、やっぱり文字化けしてしまいました。

お礼日時:2010/11/19 12:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!