VBでUserFormを作成したいんですが、コード上で日本語入力ができません。
文字化けしたような感じです。MsgBoxの字はでるんですが、
どうすれば良いかわかりません。よろしくお願いします。

A 回答 (1件)

既に解決してるかもしれませんが、おそらく下のどちらかで解決するのではないでしょうか。



・文字化けするフォームのフォントを、MSゴシックにする。
 というより、「MS P****」を使わない。

・ランタイムを再インストールする
    • good
    • 0
この回答へのお礼

直りました。変なフォントを設定していました。
ありがとうございます。

お礼日時:2002/04/04 05:50

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QVB2008 2バイト文字の化け字は当然! Yes or No?

Function FileGetChar(ByVal f As String, ByVal p As Integer) As String
  Dim n As Integer = FreeFile()
  Dim c As Char = “”

  If File.Exists(f) Then
    FileOpen(n, f, OpenMode.Random, OpenAccess.Read, , 1)
    Seek(n, p)
    If Not EOF(n) Then
      FileGet(n, c)
    End If
    FileClose(n)
  End If
  Return c
End Function

このようにSeek関数とFileGet関数を利用する限りでは2バイト文字の化け字は避けられない!

一体、この私の判断は正しいのでしょうか?

VB2008 Express Edition

Aベストアンサー

私自身はそういう「素のままのバイナリファイルを扱う」経験はほとんど無いですが。

> 一体、この私の判断は正しいのでしょうか?
「このように」がどの範囲を行っているかわからないので回答は難しいですが、回避方法はあると思います。

>2バイト文字
ということは、内部的にはShift JISコードで格納されていると言うことでしょうか?(UTF-8やEUC_JPでは3バイトの文字もあった記憶が…)
参考:
http://www.atmarkit.co.jp/fxml/askxmlexpert/024utf/24utf.html

大前提として、(VB4以降では)String、Charなどの文字データの内部形式はUNICODEです。(つまりchar型は2バイト)
だから、上記の例で言うと、1バイト読み込んだ時点で内部的には2バイトのUNICODE文字列に変換されています。

なので、通常、バイナリ読み込みで文字列を読み込む場合はいったんバイト配列に格納してそれを一括で文字列に変換する方法をとることが多いはずです。

…といろいろ調べたらこんなページが見つかりました。参考になるのでは?
http://dobon.net/vb/bbs/log3-7/3702.html
まあ、ここではBinaryReaderを使っていますが、大事なのは
バイナリ配列を「sjisEnc.GetString」で日本語文字列に変換している部分。
(ReadBytes(3)は、FileGet(n, c)をで買い繰り返して3バイト分読み込むのと一緒なわけで)

ん?あれ?…というか、今気づいたのですが。
Binaryではなく、「レコード長1バイトのランダムファイル」でOPENして、2バイト文字を取得するというのはすごく不自然なのですが…。

よくわからなくなってきたので、質問文のコードのおかしい点。
*バイト配列ではなく、Charに直接突っ込んでいる
*バイト単位で読み込むのに「レコード長1バイトのランダムファイル」でOPENしている。

要するにSeek関数とFileGet関数(あとFileOpen)の「使い方がおかしい」ということだと思います。

私自身はそういう「素のままのバイナリファイルを扱う」経験はほとんど無いですが。

> 一体、この私の判断は正しいのでしょうか?
「このように」がどの範囲を行っているかわからないので回答は難しいですが、回避方法はあると思います。

>2バイト文字
ということは、内部的にはShift JISコードで格納されていると言うことでしょうか?(UTF-8やEUC_JPでは3バイトの文字もあった記憶が…)
参考:
http://www.atmarkit.co.jp/fxml/askxmlexpert/024utf/24utf.html

大前提として、(VB4以降では)String...続きを読む

QVBSの「MsgBox」について

こんにちは。
VBSをかじり始めなので、的外れだったらご容赦を。

例えば、

MsgBox"こんにちは"

を実行したとき、
「こんにちは」の部分を
太字にしたり、色をつけたり、等、目立つような表示に
することは可能なのでしょうか?
(また、画像を挿入したりとか)

よろしくお願いします。

Aベストアンサー

以前に似たような質問があり、答えております。
参考URLを見てください。

※MsgBoxについて
http://oshiete1.goo.ne.jp/kotaeru.php3?q=405473

※ダイアログにプレビュー表示
http://oshiete1.goo.ne.jp/kotaeru.php3?q=157966


画像を差し込むことも可能ですが、メッセージボックスを加工するより、フォームを利用したほうが、ずーっと楽です。

QVB6.0 特殊文字コードの変換

いつもお世話になっております。
前回、機種依存文字の変換について質問させて頂いた者です。
㈱⇒(株)
等の&#number;型の文字コードの変換はchrw関数を用いる事で
無事に変換することが出来ました。

また新たに文字コードの変換について教えていただきたいのですが、
&⇒&
などの&keyword;型の変換をするような関数など無いでしょうか?
関数だけでなく、こうすれば?っていうのもあれば教えて頂けると
幸いです。

以上です。よろしくお願い致します。

Aベストアンサー

(1)参照設定で、"Microsoft HTML Object Library"をチェックする。
(2)以下のプログラムでデコード
Function Decode(ByVal Text) As String
Dim Doc As HTMLDocument
Set Doc = New HTMLDocument
Doc.body.innerHTML = Text
Decode = Doc.body.innerText
End Function
(3)テストコード
 MsgBox Decode("<㈱&>")

Qvb2008より、ファイル読み込み書き込みの際に発生する文字化けについて

 初めて投稿させて頂くkuro_sanと申します。どうぞよろしくお願いします。

 現在visual basic 2008を用いてプログラムを作成しているのですが、データの読み込み、書き込みを行う箇所で問題が発生したために、行き詰まっております。
 コードを以下に示させて頂きます。
[書き込み処理関数]
Private Sub WriteLog(ByVal FileName As String)
'File Open
Dim Writer As New IO.StreamWriter(FileName, True)

'書き込み処理
For i As Integer = 0 To i
Writer.WriteLine(Table(0, i) & "," & Table(1, i) & "," & Table(2, i))
Next

Writer.Close()
End Sub

[読み込み処理関数]
Private Sub Readlog(ByVal FileName As String)
Dim Reader As New IO.StreamReader(FileName, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim Items() As String = New String() {}
Dim Line As String = Reader.ReadLine 'CSVの一行

'データの読み込み
i = 0

Do Until IsNothing(Line)
Items = Line.Split(",")

i += 1
Table(0, i) = Items(0).ToString
Table(1, i) = Items(1).ToString
Table(2, i) = Val(Items(2))

Line = Reader.ReadLine
Loop
End Sub

です。
 書き込みはtext形式の物に行っています。Table配列には(0,i),(1,i)にはString型の文字が、(2,i)には数字が入力されています。
入力、出力は行うことが出来るのですが、(0,i),(1,i)にひらがな、カタカナ、漢字などの文字が使われていると、読み込みを行った際に文字化けして格納されてしまいます。
(例:くろ,kuro,1 → 縺上m,kuro,1)
 出力されたtextの中では文字化けが起こっていませんが、形式を直接csvに変換したり、読み込みを行った際に文字化けが発生している事から、書き込み時に問題があるのではないか、と思い調べているのですが、原因を判明できていません。

文字化けを発生させずに読み込み、書き込み処理を行う方法をご存知である方がいらっしゃればご教授頂けますと幸いです。

 初めて投稿させて頂くkuro_sanと申します。どうぞよろしくお願いします。

 現在visual basic 2008を用いてプログラムを作成しているのですが、データの読み込み、書き込みを行う箇所で問題が発生したために、行き詰まっております。
 コードを以下に示させて頂きます。
[書き込み処理関数]
Private Sub WriteLog(ByVal FileName As String)
'File Open
Dim Writer As New IO.StreamWriter(FileName, True)

'書き込み処理
For i As Integer = 0 To i
Wr...続きを読む

Aベストアンサー

StreamWriterのそのタイプのコンストラクタはUTF-8で書き込みます
それに対してStreamReaderでのエンコーディングがShiftJISを指示しているので文字化けが発生します

StreamReaderのコンストラクタを
Dim Reader As New IO.StreamReader(FileName, System.Text.Encoding.UTF8)
といった具合にして見ましょう

またShiftJISで統一するならStreamWriterを
Dim Writer As New IO.StreamWriter(FileName, True, System.Text.Encoding.GetEncoding("Shift-JIS"))
といった具合に エンコーディングの形式を引数で与えましょう

QVBS作動中のブラウザのmsgboxについて

現在VBSについて勉強中の者です。

VBSにてIEを作動させ、該当ページに進み、入力フォームなどに情報を入力し、
次へ進むボタンを押したときにmsgbox(Yes/No)がでてきてしまい、
そこでVBSが止まってしまいます。

そこで、3つほど質問なのですが

1.ブラウザの設定でmsgbox自体をださないようにする方法はあるか

2.PC自体の設定でmsgboxをださないようにする方法はあるか

3.他のスクリプトなんかを動かし、20秒ほどの間隔でキーボードのEnterを押す方法はあるか。
もしあれば、それはVBSとセットで使えるものか

こちら3つの質問で以上となります。
ご回答のほどよろしくお願いいたします。

Aベストアンサー

>それともVBSからjavascriptに飛んでこれやっといて的なことを
>頼んでいる形なのでしょうか?

はい。
標準関数と同名のニセ関数を追加するスクリプトコードをブラウザに送っています。

//ニセ関数
function confirm()
{
   return true;
}


http://d.hatena.ne.jp/ken3memo/20110828/1314527073


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報