質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.77%

  • Visual Basic 6.0

    15questions

    Microsoft Visual Basic 6.0(VB6)とはCOMプログラミングのためにMicrosoftが提供したプログラミング言語とintegrated develpment enviornment(IDE)のことです。

Visual Studio 6.0 英語版での文字化けについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 870

cojicoji

score 1

前提・実現したいこと

Visual Studio 6.0 英語版での文字化け解消

発生している問題・エラーメッセージ

Visual Studio 6.0(英語版)をインストールし、VB6を勉強中の者です。
英語版のため、日本語表記が一部文字化けしてしまいます。

フォームのキャプションは日本語で表示できるのですが、
テキストボックスやコンボボックスのTextに日本語を入力すると文字化けしてしまいます。
文字化けには「vb6jp.dll」ファイルが関係しているということで
ランタイムをインストールしなおしましたが、改善されません。
(英語版で上記オブジェクトに日本語表示が可能なのかも分かりません)

有識者の方、解決策や糸口をご教授下さい。
よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

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 17:18

    横から失礼いたします。
    質問者さんがどの様な意図で英語版のVB6を使用するのか分かりませんが、いまだにVB6が現役で使用されているある巨大なシステムを拝見した事があります。(3~4年前)
    ・・・あれは、リプレース出来るような代物ではないですね・・・
    なので、ニッチな要件として、そういう要件は無きにしも非ずかと・・・。

    フランスの空港でWindows3.1が使用されていてその障害で空港が一時閉鎖というニュースも記憶に新しいですが。

    色々と思い出したので、横から失礼いたしました。

    キャンセル

  • 2017/11/03 17:27

    コメントありがとうございます。Windows 2000やXPを含め、古い環境で稼働しているものがあるのは存じておりますし、組み込み/制御機器としてとらえると存在を否定しきれないのも承知しています。私自身も古い機器やプログラムの保守は経験があります。難しいですよね。ただ、VB6にこれから新しく時間を割くのはエンジニアとして勿体無い感がありましたので述べさせていただいた次第です。ご気分を害されたら申し訳ありません。

    キャンセル

  • 2017/11/03 17:30

    いや、特に気分を害した訳ではありません。
    こちらこそ横からすみませんでした。
    色々懐かしく思い出させて頂きました。
    d(^_^o)

    キャンセル

  • 2017/11/04 11:56

    >dodox86さま、samudraさま

    ご回答ありがとうございます。
    使用端末はWIndows7で、プログラムを動作させる予定の端末はWindows8(どちらも日本語版)です。

    リンクを貼っていただいた記事を参照しました。
    記載のコードを試してみたところ、フォームロード時にフォントをセットする部分(.font)で
    型不一致のエラーとなってしまいました。
    コードを全コピーで実行では難しいのですかね。
    自分の知識がまだとても浅く、都度インターネットでエラー原因を調べているので時間がかかりそうですが、
    この教えていただいた方法をもう少し試してみようと思います。
    ですがdodox86さまも仰るとおり、英語版での日本語表記は難しいようですね。
    (追記いただいたアクセス権については、試しておりますがダメでした。)

    私は開発経験のないSEでして、半年程前からVB6で作られたシステムの導入、保守案件をやっております。
    このシステムは新規開発もVB6で行っており、リプレースも困難とのことです。

    業務上、デバッグやソースコードの調査でVB6の知識が必要となり、独学で勉強を始めた次第です。
    MSDNをインストールできずヘルプ参照が行えないのと、
    言語自体が古いためか関数Referenceのページ等もなかなか見つけ出せず苦戦しております。。

    趣味+勉強のために個人ツールを1本作成してみようと思っておりますが、
    とりあえずラベルやコマンドボタンの表記は英語で作成し、フォントの件は時間のある時にもう少し頑張ってみます。

    早々にご回答頂きまして、ありがとうございました。

    キャンセル

  • 2017/11/04 12:20 編集

    やはり、そうなのですね。
    今更VB6という事は、リプレース出来ないシステムなのだろうと思いました。

    私が3~4年前に見たVB6の巨大システムは、作り直したとしても、ざっと見積もっても数億円以上かかるであろう代物でした。(画面系処理だけで数千画面あるシステム。。。バッチ処理等も含めると考えただけでも恐ろしい。。。)
    しかも24/365に稼働しているクリティカルなシステムだったので、システムを止める事はあり得ない・・・。
    きっとクライアントがWindows10化されても、何としてでも無理やりでも動かして行くんだろうなと・・・。

    古本であると思いますが、お勧めの書籍は、以下となります。辞書代わりにつかっていました。
    Visual Basic Ver.6.0 初級プログラミング入門〈上〉 (Microsoft Languageシリーズ)

    https://www.amazon.co.jp/Visual-Ver-6-0-%E5%88%9D%E7%B4%9A%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E3%80%88%E4%B8%8A%E3%80%89-Microsoft-Language%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4774108596

    いまだに捨てられず、VBAツール開発の足しになるかなと職場に持って行ってます。

    キャンセル

  • 2017/11/05 05:14 編集

    Visual Studio 6.0 英語版をWindows 7日本語版にインストールして確認しました。追記しましたのでご参考になさってください。

    キャンセル

  • 2017/11/06 22:51

    >samudraさま
    私にとってVB6はもう古い言語と思っていましたが、現在もVB6を使用し続けている(し続けざるをえない。。)システムがまだまだあるのですね。
    お勧めいただいた書籍、購入してみます。いまVB6を新たに始めようとすると情報があまりないので、経験のある技術者の方が参考にされている書籍の情報はとてもありがたいです。ありがとうございます。

    >dodox86さま
    対処法の追記、ありがとうございます。
    記載いただいた内容を試してみたところ、無事日本語でキャプションの表示が行えました。
    親切な解説とイメージで初心者の自分でも何とかなりました。ありがとうございます。
    フォントオブジェクトについて勉強して、自分なりにアレンジできるように頑張ります。

    お二方とも、アドバイスをいただきありがとうございました。今後もVB6の学習を進めていく中で、また質問させてもらうこともあるかと思いますが、よろしくお願いします。

    キャンセル

  • 2017/11/07 10:07 編集

    経過のご報告ありがとうございます。お役に立ててよかったです。もともと掲示板(メーリングリストかニュースグループ?)で紹介された案ですので、私も過去の資産に感謝、です。海外のサイトにも目を向けると貴重な情報が眠っているので、今後機会があったときはそれらも探してみると良いかと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    stdio.h が開けない

    visual studio community 2015 でDXライブラリーを使ったプログラミングをしてみようと思っています Visual Studio Community 

  • 受付中

    Visual Studio 2005 で Mircrosoft SDK を使いたい

    [OS] Windwos 7 Pro 32bit [IDE] Microsoft Visual Studio 2005 [言語] MFC C/C++ IPv6 で通信を行

  • 解決済

    Visual Studioのメニューフォントを変更したい

    Visua Studio 2015のメニューのフォントについて質問です。 ツール-オプションの環境-フォントおよび色でフォントを変更できますが、メニューのフォントは何を選べば変更

  • 解決済

    Visual Studio 2015 セットアッププロジェクト

    前提・実現したいこと セットアッププロジェクトを使用して自作したアプリにCSVを標準で読み込みできるようにしたい。 発生している問題・エラーメッセージ 参考にしたHP

  • 解決済

    Visual Basic

    前提・実現したいこと Visual Basicにて、Excelを操作するプログラムを作成しており、ボタンをクリックした際に指定したセルに移動して値を入力する機能を実装したいのです

  • 解決済

    Setup.exeでインストールしたexeファイルが開かない。

    Visual C#でWindowsFormApplicationを作成しました。 それをインストーラーを使って、インストールできるようにしたいのですが、YouTubeの動画や、w

  • 解決済

    Visual Studio Community 2015のインストール時の問題

    Visual Studio Community 2015のインストール時の問題がありましたので、質問致します。 インストールが終了し、「セットアップは完了しました。」と表示さ

  • 解決済

    Visual Studio 2015 Community で Visual Studio Packa...

    前提・実現したいこと Visual Studio 2015 Community で Visual Studio Package の プロジェクトテンプレートを表示させたい。

同じタグがついた質問を見る

  • Visual Basic 6.0

    15questions

    Microsoft Visual Basic 6.0(VB6)とはCOMプログラミングのためにMicrosoftが提供したプログラミング言語とintegrated develpment enviornment(IDE)のことです。