###前提・実現したいこと
Visual Studio 6.0 英語版での文字化け解消
###発生している問題・エラーメッセージ
Visual Studio 6.0(英語版)をインストールし、VB6を勉強中の者です。
英語版のため、日本語表記が一部文字化けしてしまいます。
フォームのキャプションは日本語で表示できるのですが、
テキストボックスやコンボボックスのTextに日本語を入力すると文字化けしてしまいます。
文字化けには「vb6jp.dll」ファイルが関係しているということで
ランタイムをインストールしなおしましたが、改善されません。
(英語版で上記オブジェクトに日本語表示が可能なのかも分かりません)
有識者の方、解決策や糸口をご教授下さい。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
お使いのWindowsはどのバージョンでしょうか。また、プログラムを動作させる予定のWindows PC(ターゲットPC)のバージョンはどんな状況ですか。(日本語版、英語版含め)それらによっても対処の方法が変わる可能性があります。
Windowsのバージョンは置いておいて、2001年9月の掲示板のスレッドで参考になりそうなものがありました。英語ですが、ご一読を勧めます。
japanese language in English VB6
2001年ですからWindows 2000での動作の話にもなると思います。この内容によりますと標準のVBコントロールはUNICODEをサポートしていないこともあり、英語版で日本語フォントを表示させるのが困難な様子がうかがい知れます。一部の書き込みにはVisual BasicのStdFontにマルチバイトキャラクターセット(128)をセットし、”MS P Gothic"のフォントオブジェクトを生成してフォームのフォントとして使用するコードが紹介されていました。(2001/09/19のMervyno氏の記事)
以下はVBのStdFontのリファレンスです。
Visual Basic Reference - StdFont Object
この案を利用させてもらうことで、"MS P Gothic"がPCにインストールされていれば、英語版VB6でもフォーム毎に日本語フォントを表示できるようになるかもしれません。
ここからは推測ですが、英語版のVisual Basic 6.0は国際化対応としてまだ未完成で、なんらかの方法でvb6jp.dllへスイッチして利用できるようにはなっていないのかと思われます。掲示板のスレッドでも
A) Buy Unicode third party control (if you can find them)
B) Create your own Unicode controls, using owner draw, etc.
C) Upgrade to VB7, which has Unicode controls
と述べられています。
以下は私見です。
VB6をこれから時間をかけて勉強されるのでしょうか。Visual Studio 6.0環境も含めて、新たにこれから時間をかけて勉強するにはつらい状況だと思います。(Visual Studio 6.0の日本語版発売は1998年9月です)
情報も古く、新しいWindowsに適用できる話ではないことも多いです。使い続けることはむしろ、ある意味で高度(?)な作業だと思えます。
対象の業務が過去の製品の保守や、若干の機能追加作業であれば仕方ないかと思うのですが、.NET Frameworkベースの言語で開発して徐々にリプレースしていく等をご検討されることを強力にお勧めしたいです。
対処方法について追記
もしかしたら既にご覧になっているかもしれませんが、以下で紹介されている記事中の
VB6 のプログラムのフォームで文字が化ける
もう1つの理由は、VB6JP.dll は存在してもそのファイルにアクセス権がないことです。
の件も確認してみてください。
** 対応の方法を確認したので追記(2017/11/05)**
私の方でVisual Studio 6.0 英語版 + Windows 7 Enterprise 32ビット日本語版の環境下で試しました。VB6のフォームを日本語表示できるようになったので、その方法/手順をご案内します。
基本的には先にご案内した(microsoft.public.vb.general.discussion)の掲示板で紹介されていたものです。尚、Visual Studio 6.0のService Packは「6」が最新ですが、これは適用して試していませんのでご承知おきください。
まず、Visual Studio のフォームのデザイナーでLabelとTextBox中の文字列が化けている例を示します。
フォントは初期状態が"MS Sans Serif"なので日本語文字列を指定して化けて当然なのですが、"MS Pゴシック"に指定しても化けます。これを、プログラムの実行開始時のMainモジュールで日本語フォントでStdFontを用意し、LabelとTextBoxのフォントにセットするようにします。
' Visual Basic6 ' Modules/Module1.bas Option Explicit Public gForm As Form1 Public gStandardFont As StdFont Sub Main() Set gStandardFont = New StdFont ' FontSize=14 SetJapaneseFont gStandardFont, 14 Set gForm = New Form1 gForm.Show End Sub Public Sub SetJapaneseFont(oFont As StdFont, iFontSize As Integer) ' Use DBCS(Double-byte character set) for Japanese version of Windows Const CHARSET_SHIFTJIS As Integer = 128 With oFont .Charset = CHARSET_SHIFTJIS .Size = iFontSize ' "MS P Gothic" .Name = ChrW(&HFF2D) & ChrW(&HFF33) & ChrW(&H20) & ChrW(&HFF30) & ChrW(&H30B4) & ChrW(&H30B7) & ChrW(&H30C3) & ChrW(&H30AF) End With End Sub
StdFont.Nameプロパティに"MS Pゴシック"をUNICODE(UTF16 BigEndian)でセットします。"MS Pゴシック"をUTF16 BigEndian の16進数表記で並べると以下のようになりますので、
FF2D FF33 0020 FF30 30B4 30B7 30C3 30AF
他のフォント、例えば"MS P明朝"などを使用するときも同様にしてください。
更に、VBの"Project Properties"で、Startup Object を "Sub Main"とし、Main()モジュールから実行を開始させるようにて、Formtの表示前に正しく初期化するようにします。Form1はこのMainから表示します。
メニューバーの「Project」->メニューの一番下「Project1 Properties...」で表示される「Project Peoperties」ダイアログボックスの「General」タブ、「Startup Object:」コンボボックスで、"Sub Main"を選択指定してください。ダイアログボックスの例を以下に示します。
尚、質問者様のコメントで
フォームロード時にフォントをセットする部分(.font)で型不一致のエラーとなってしまいました。
となったのは、StdFontの初期化がされていなかったので Nothing が.Font へセットされようとしてエラーになっていたのが原因だと思われます。
次に、Form1でMainモジュールで生成したStdFontをForm, Label, TextBoxコントロールの.Fontプロパティにセットします。
' Visual Basic6 ' Forms/Form1.frm Option Explicit Private Sub Form_Load() Me.Font = gStandardFont Set lblText1.Font = gStandardFont Set lblText2.Font = gStandardFont Set txtText1.Font = gStandardFont End Sub
これで、以下のように表示されるようになります。Windows 7上での実行結果です。
Windows 8では試していませんが、Windows 10(Pro. 64ビット日本語版)でもOKでしたので大丈夫だと思います。
上記をもとにしていただいてモジュール化を適切に進めれば、最小の手間で対応できるかと考えます。
投稿2017/11/03 07:30
編集2017/11/04 20:22総合スコア9369
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/03 08:18
2017/11/03 08:27
2017/11/03 08:30
2017/11/04 02:56
2017/11/04 03:35 編集
2017/11/04 20:14 編集
2017/11/06 13:51
2017/11/07 01:07 編集