回答編集履歴

4

一部修正

2017/11/04 20:22

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -76,7 +76,7 @@
76
76
 
77
77
  私の方でVisual Studio 6.0 英語版 + Windows 7 Enterprise 32ビット日本語版の環境下で試しました。VB6のフォームを日本語表示できるようになったので、その方法/手順をご案内します。
78
78
 
79
- 基本的には先にご案内した(microsoft.public.vb.general.discussion)の掲示板で紹介されていたものです。尚、Visual Studio 6.0のService Pack 6が最新ですが、これは適用して試していませんのでご承知おきください。
79
+ 基本的には先にご案内した(microsoft.public.vb.general.discussion)の掲示板で紹介されていたものです。尚、Visual Studio 6.0のService Packは「6が最新ですが、これは適用して試していませんのでご承知おきください。
80
80
 
81
81
 
82
82
 

3

改行位置と一部の記述を修正。

2017/11/04 20:22

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -74,13 +74,9 @@
74
74
 
75
75
 
76
76
 
77
- 私の方でVisual Studio 6.0 英語版 + Windows 7 Enterprise 32ビット日本語版の環境下で試しました。
77
+ 私の方でVisual Studio 6.0 英語版 + Windows 7 Enterprise 32ビット日本語版の環境下で試しました。VB6のフォームを日本語表示できるようになったので、その方法/手順をご案内します。
78
-
79
- VB6のフォームを日本語表示できるようになったので、その方法/手順をご案内します。
78
+
80
-
81
- 基本的には先にご案内した(microsoft.public.vb.general.discussion)の掲示板で紹介されていたものです。
79
+ 基本的には先にご案内した(microsoft.public.vb.general.discussion)の掲示板で紹介されていたものです。尚、Visual Studio 6.0のService Pack 6が最新ですが、これは適用して試していませんのでご承知おきください。
82
-
83
- 尚、Visual Studio 6.0のService Pack 6が最新ですが、これは適用して試していませんのでご承知おきください。
84
80
 
85
81
 
86
82
 
@@ -162,9 +158,7 @@
162
158
 
163
159
  ```
164
160
 
165
- StdFont.Nameプロパティに"MS Pゴシック"をUNICODE(UTF16 BigEndian)でセットします。
161
+ StdFont.Nameプロパティに"MS Pゴシック"をUNICODE(UTF16 BigEndian)でセットします。"MS Pゴシック"をUTF16 BigEndian の16進数表記で並べると以下のようになりますので、
166
-
167
- "MS Pゴシック"をUTF16 BigEndian の16進数表記で並べると以下のようになりますので、
168
162
 
169
163
  FF2D FF33 0020 FF30 30B4 30B7 30C3 30AF
170
164
 
@@ -176,7 +170,7 @@
176
170
 
177
171
 
178
172
 
179
- メニューバーの「Project」->メニューの一番下「Project1 Properties...」で表示される「Project Peoperties」ダイアログボックスの「General」タブ、「Startup Object:」コンボボックスで、"Sub Main"を選択指定してください。ダイアログボックス以下のようなります。
173
+ メニューバーの「Project」->メニューの一番下「Project1 Properties...」で表示される「Project Peoperties」ダイアログボックスの「General」タブ、「Startup Object:」コンボボックスで、"Sub Main"を選択指定してください。ダイアログボックスの例を以下に示します。
180
174
 
181
175
  ![イメージ説明](e2e317b1368333218ee2c44932634339.png)
182
176
 

2

対策を実際に試したので例示

2017/11/04 20:18

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -65,3 +65,165 @@
65
65
 
66
66
 
67
67
  の件も確認してみてください。
68
+
69
+
70
+
71
+ ---
72
+
73
+ ** 対応の方法を確認したので追記(2017/11/05)**
74
+
75
+
76
+
77
+ 私の方でVisual Studio 6.0 英語版 + Windows 7 Enterprise 32ビット日本語版の環境下で試しました。
78
+
79
+ VB6のフォームを日本語表示できるようになったので、その方法/手順をご案内します。
80
+
81
+ 基本的には先にご案内した(microsoft.public.vb.general.discussion)の掲示板で紹介されていたものです。
82
+
83
+ 尚、Visual Studio 6.0のService Pack 6が最新ですが、これは適用して試していませんのでご承知おきください。
84
+
85
+
86
+
87
+ まず、Visual Studio のフォームのデザイナーでLabelとTextBox中の文字列が化けている例を示します。
88
+
89
+ ![イメージ説明](6a3da50ad93922df57cd481c1e667064.png)
90
+
91
+
92
+
93
+ フォントは初期状態が"MS Sans Serif"なので日本語文字列を指定して化けて当然なのですが、"MS Pゴシック"に指定しても化けます。これを、プログラムの実行開始時のMainモジュールで日本語フォントでStdFontを用意し、LabelとTextBoxのフォントにセットするようにします。
94
+
95
+ ```
96
+
97
+ ' Visual Basic6
98
+
99
+ ' Modules/Module1.bas
100
+
101
+ Option Explicit
102
+
103
+
104
+
105
+ Public gForm As Form1
106
+
107
+ Public gStandardFont As StdFont
108
+
109
+
110
+
111
+ Sub Main()
112
+
113
+ Set gStandardFont = New StdFont
114
+
115
+
116
+
117
+ ' FontSize=14
118
+
119
+ SetJapaneseFont gStandardFont, 14
120
+
121
+
122
+
123
+ Set gForm = New Form1
124
+
125
+ gForm.Show
126
+
127
+ End Sub
128
+
129
+
130
+
131
+ Public Sub SetJapaneseFont(oFont As StdFont, iFontSize As Integer)
132
+
133
+
134
+
135
+ ' Use DBCS(Double-byte character set) for Japanese version of Windows
136
+
137
+ Const CHARSET_SHIFTJIS As Integer = 128
138
+
139
+
140
+
141
+ With oFont
142
+
143
+ .Charset = CHARSET_SHIFTJIS
144
+
145
+ .Size = iFontSize
146
+
147
+
148
+
149
+ ' "MS P Gothic"
150
+
151
+
152
+
153
+ .Name = ChrW(&HFF2D) & ChrW(&HFF33) & ChrW(&H20) & ChrW(&HFF30) & ChrW(&H30B4) & ChrW(&H30B7) & ChrW(&H30C3) & ChrW(&H30AF)
154
+
155
+ End With
156
+
157
+
158
+
159
+ End Sub
160
+
161
+
162
+
163
+ ```
164
+
165
+ StdFont.Nameプロパティに"MS Pゴシック"をUNICODE(UTF16 BigEndian)でセットします。
166
+
167
+ "MS Pゴシック"をUTF16 BigEndian の16進数表記で並べると以下のようになりますので、
168
+
169
+ FF2D FF33 0020 FF30 30B4 30B7 30C3 30AF
170
+
171
+ 他のフォント、例えば"MS P明朝"などを使用するときも同様にしてください。
172
+
173
+
174
+
175
+ 更に、VBの"Project Properties"で、Startup Object を "Sub Main"とし、Main()モジュールから実行を開始させるようにて、Formtの表示前に正しく初期化するようにします。Form1はこのMainから表示します。
176
+
177
+
178
+
179
+ メニューバーの「Project」->メニューの一番下「Project1 Properties...」で表示される「Project Peoperties」ダイアログボックスの「General」タブ、「Startup Object:」コンボボックスで、"Sub Main"を選択指定してください。ダイアログボックスは以下のようになります。
180
+
181
+ ![イメージ説明](e2e317b1368333218ee2c44932634339.png)
182
+
183
+
184
+
185
+ 尚、質問者様のコメントで
186
+
187
+ > フォームロード時にフォントをセットする部分(.font)で型不一致のエラーとなってしまいました。
188
+
189
+
190
+
191
+ となったのは、StdFontの初期化がされていなかったので Nothing が.Font へセットされようとしてエラーになっていたのが原因だと思われます。
192
+
193
+
194
+
195
+ 次に、Form1でMainモジュールで生成したStdFontをForm, Label, TextBoxコントロールの.Fontプロパティにセットします。
196
+
197
+ ```
198
+
199
+ ' Visual Basic6
200
+
201
+ ' Forms/Form1.frm
202
+
203
+ Option Explicit
204
+
205
+
206
+
207
+ Private Sub Form_Load()
208
+
209
+ Me.Font = gStandardFont
210
+
211
+ Set lblText1.Font = gStandardFont
212
+
213
+ Set lblText2.Font = gStandardFont
214
+
215
+ Set txtText1.Font = gStandardFont
216
+
217
+ End Sub
218
+
219
+ ```
220
+
221
+ これで、以下のように表示されるようになります。Windows 7上での実行結果です。
222
+
223
+ ![イメージ説明](b38cfd8ce39b56c1b725bcc259c7943f.png)
224
+
225
+ Windows 8では試していませんが、Windows 10(Pro. 64ビット日本語版)でもOKでしたので大丈夫だと思います。
226
+
227
+
228
+
229
+ 上記をもとにしていただいてモジュール化を適切に進めれば、最小の手間で対応できるかと考えます。

1

対処方法を追記

2017/11/04 20:13

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -47,3 +47,21 @@
47
47
 
48
48
 
49
49
  対象の業務が過去の製品の保守や、若干の機能追加作業であれば仕方ないかと思うのですが、.NET Frameworkベースの言語で開発して徐々にリプレースしていく等をご検討されることを強力にお勧めしたいです。
50
+
51
+
52
+
53
+ ---
54
+
55
+ **対処方法について追記**
56
+
57
+ もしかしたら既にご覧になっているかもしれませんが、以下で紹介されている記事中の
58
+
59
+ [VB6 のプログラムのフォームで文字が化ける](http://pasofaq.jp/development/visualbasic/vb6jpdll.htm)
60
+
61
+
62
+
63
+ > もう1つの理由は、VB6JP.dll は存在してもそのファイルにアクセス権がないことです。
64
+
65
+
66
+
67
+ の件も確認してみてください。