Visual Basic Ver.6 で、MAPIセッションコントロールとMAPIメッセー
ジコントロールを使って、Outlook Express 5 の受信トレイにある
メッセージにアクセスしようとしています。

 メッセージの題名、差出人の名前は、日本語でもちゃんと表示される
のですが、メッセージ内容は次のように文字化けしてしまします。

・$B855$$=$&$G$9$M!*・(B

 なお、テキストボックスは、プロパティで Multiline をtrue にし、
ScroolBar を 2-垂直 としてる以外は標準のまま使っています。
 どうすれば良いかお教えください。

 環境は、Windows98、Office2000シリーズです。また、プログラム
は、「新Visual Basic入門シニア編 Ver.6.0対応(林晴比古著)」
p.176~p.177 に載っているものです。

 あと、このプログラムでは、メッセージ総数を MAPIMessages1.MsgCount
で、数えています。プログラムを走らせると、1度目はちゃんと数える
のですが、プログラムを終了させてもう一度走らせると、メッセージ総数
が2と表示されます。Visual Basic自体を終了させて、もう一度起動し、
プログラムの読込からすると、1回目は、またちゃんと数えるのですが・・・

 もし、よろしければ、この理由も教えてくだされば、ありがたく思います。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

こんにちは.



Visual Basicで開発したことはないですが,以前メールソフトを作ったとき文字化けに悩まされた経験があります.文字化けの原因としては,JISコードとShift-JISコードの違いだと思います.メールの送信時にはShift-JISからJISに変換して送ります.受信するときにはJISからShift-JISに変換してメールを受信します.ということは,上記メッセージはJISコードのままと言うことです.

最初に記述したとおり,Visual Basicでの開発経験はないのでサンプルソースを書くことはできませんが,検索エンジン等で「VB Shift JIS 変換」等とキーワードを入力するとVBの専門家がいろいろと解決方法を記述してくれていますので参考にしてください.

参考URL:http://www.kit.co.jp/vbit/QAndA06.htm
    • good
    • 0
この回答へのお礼

早速、参考URLを見て,これがVB Ver.6でも使えるか試してみようと思い
ます。それにしても、メールの送信時にこのようなコードの変換が行われ
ていたとは知りませんでした。勉強になりました。

お礼日時:2001/08/16 08:53

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Qoutlook expressで、エクスポートの際「MAPIを初期化しようとしてエラーが発生しました」というエラーが起こる

教えてください。
新しいノートパソコンを買ったので、今使っているパソコンのoutlook expressのメッセージを移行させたいと思い、メッセージをエクスポートをしようとすると「MAPIを初期化しようとしてエラーが発生しました」というエラーが起こります。
どうしたらよいのでしょうか。もしくは、他にoutlook expressを移行させる方法がありますでしょうか。OSはXPで、outlook expressは6.00です。
よろしくお願いいたします。

Aベストアンサー

失礼しました。
6.0ではこの項目無いんですね。

では次は、google検索第1候補をどうぞ。

○今度こそ!○

参考URL:http://www.hat.hi-ho.ne.jp/heart_thoughts/diary/mapi.htm

QVisual Basicプログラムのエラーについて

「Visual Basicでエンジョイプログラミング」(CQ出版社)
という本の11章VisualBasicで動かす自作装置の製作方法、
A-Dコンバータの製作と題してA-Dコンバータのプログラムが書いてあるのですが

<同じプログラムが掲載されているホームページ>http://mweb.jrscomware.com/tie/data/KyouzaiDB/bg/07/76aa45a7e4cc774b6976aad26a0709/_5051b778aae80343/b778768d0222/b778768d0222.htm

本に従ってプログラムを書いたのですが、実行しようとしたら
Public Const CLRDTR = 6
Public Const SETDTR = 5
Public Const CLRRTS = 4
Public Const SETRTS = 3
Public Const MS_CTS_ON = &H10&
Public Const MS_DSR_ON = &H20&

の部分が赤色の表示になって
「コンパイルエラー
定数、固定長文字列、配列、ユーザー定義型、
およびDeclareステートメントはオブジェクトモジュールのパブリックメンバとしては使用できません。」
と表示されたのですが、僕はまったくの初心者なので
ヘルプを見てもどのように修正すればいいのか良く分かりません。

何か知っている方がいらしゃいましたら教えてください。よろしくお願いします。

「Visual Basicでエンジョイプログラミング」(CQ出版社)
という本の11章VisualBasicで動かす自作装置の製作方法、
A-Dコンバータの製作と題してA-Dコンバータのプログラムが書いてあるのですが

<同じプログラムが掲載されているホームページ>http://mweb.jrscomware.com/tie/data/KyouzaiDB/bg/07/76aa45a7e4cc774b6976aad26a0709/_5051b778aae80343/b778768d0222/b778768d0222.htm

本に従ってプログラムを書いたのですが、実行しようとしたら
Public Const CLRDTR = 6
Public Const SETDTR = 5
...続きを読む

Aベストアンサー

No 1 の方のおっしゃるように、
(1) プロジェクトエクスプローラの
プロジェクト名を右クリック→追加→標準モジュール
としてそちらに記載するか、

(2) フォームを一つしか使わないのであれば、全部Publicを省いて記述しても大丈夫だと思います。

Q販売ソフトでメールを送る時にMAPIの設定がされていないと表示される

弥生シリーズの販売ソフトからメールを送るときに、これまではメールボタンを押すとoutlookの新規メールが立ち上がり、そのまま送信できたのですが急にメールボタンを押しても「メールを送るアプリケーションがMAPIに対応していないか、MAPIの設定がされていません」とエラー表示が出てきます。

メールソフトはoutlook Express 6.0
また、「このメールソフトは規定のメールハンドラです」となっています。
意味が良く分からないのですが、一体どういった意味でしょうか?

Aベストアンサー

flow1997です。

試しにバックアップをとった上で
fixmapi.exeでmapi32.dllを修復?してみてはどうでしょう。
1.C:\windows\system32 フォルダを開きmapi32.dllをコピー、デスクトップなどに貼り付け
2.同じく C:\windows\system32 フォルダの中の fixmapi.exeをダブルクリックで実行

これでダメなら、こちら。
1.すべてのプログラムを終了。
2.C:\windows\system32 フォルダ内の mapi32.dll ファイルの名前を、mapi32.old に変更。
3.C:\windows\system32 フォルダで fixmapi.exe ファイルを見つけ、そのファイルをダブルクリックしてプログラムを実行。
4.コンピュータを再起動します。
引用元(一部修正):http://support.microsoft.com/default.aspx/kb/820865/ja

今回のエラーそのものからはmapi自体ではなく、mapiの設定等に問題があるように読み取れますので
今まで以上に自信なしです。

参考:
http://office.microsoft.com/ja-jp/outlook/HP011164781041.aspx

flow1997です。

試しにバックアップをとった上で
fixmapi.exeでmapi32.dllを修復?してみてはどうでしょう。
1.C:\windows\system32 フォルダを開きmapi32.dllをコピー、デスクトップなどに貼り付け
2.同じく C:\windows\system32 フォルダの中の fixmapi.exeをダブルクリックで実行

これでダメなら、こちら。
1.すべてのプログラムを終了。
2.C:\windows\system32 フォルダ内の mapi32.dll ファイルの名前を、mapi32.old に変更。
3.C:\windows\system32 フォルダで fixmapi.exe ファ...続きを読む

QactiveX を 使った Visual Basicのプログラム

IteractiveBrokersという株のbrokerのサイトでサンプル プログラムを使いたいのですがよくわかりません。使用方法を下記します
Use the Visual Basic VBClient Sample Program

You can access the server through the ActiveX interface using the Visual Basic sample application.
To run the sample you must:
Install the API sample programs <-インストール完了
Configure the application to support the API components
ー>configure済み
Have MS Visual Studio (Visual Basic 6.0 or higher) installed on your PC. ー>visual studio 2005あり

The VBClient program is a sample program that shows you how to use the TWS ActiveX control to connect to the server from a Visual Basic application.

To use the VBClient program
1.From MS Visual Basic, open the project file VB_API_sample.vbp.
ー>open済み
2.On the Projects menu, select Components.
ー>VB2005で「はコンポーネントの追加」をクリック
3.In the Components dialog box, select TWS ActiveXControl module and click OK.ー>ダイアログにはTWS activeXControlがない

Press Ctrl + F5 to compile and run the project.

3.のTWS というのはこの会社の株取引用のツールです。
普通何もしないでダイアログにTWS ActiveXControlがあるはずがないとは思うのですが、何かが抜けているのか、やり方が悪いのか、またはテンプレート中のどれかをクリックして,TWSActiveControlという名前をつければよいのか、おわかりの方がおられたら教えてください。
直接聞けばよいのですが、英語の質問は苦手なもので、またAPIプログラムはサポートしないとあったものですから・・・・。
よろしくお願いします。

IteractiveBrokersという株のbrokerのサイトでサンプル プログラムを使いたいのですがよくわかりません。使用方法を下記します
Use the Visual Basic VBClient Sample Program

You can access the server through the ActiveX interface using the Visual Basic sample application.
To run the sample you must:
Install the API sample programs <-インストール完了
Configure the application to support the API components
ー>configure済み
Have MS Visual Studio (Visual Basic 6.0 or high...続きを読む

Aベストアンサー

VB.NETですと コンポーネントの追加で 『COM』タグあると思います
ここを 選択して『TWS ActiveX Control』を探してみましょう ...

QOutlook Express6でメッセージのエクスポートができない

どうも、初心者です。
Outlook Express6でメッセージをエクスポートしようとすると
『MAPIの初期化に失敗』でエラーになります。(何度やっても)
特に環境は変えてないのですが・・・

どうしたら、直るか教えて下さい。

環境はWindows XPです。

Aベストアンサー

outlookか、Exchangeがインストールされていないと
そのエラーが出るかもしれません。

windows\system32 ディレクトリに
MAPI32.dll がありますか?
なければ、そのエラーが出ます。
上のアプリケーションをインストールするといいんですが。

>『MAPIの初期化に失敗』でエラーになります。
>(何度やっても)
最初はエラーが出なかったのでしょうか?

的外れな回答でしたら、ごめんなさい。

QVisual CのコードをVisual Basicに直したいです

検索でVCのコードしか見つからず、VBに直しているのですが、下記がわかりません。

[VC]
public ExtendedWebBrowserSite(ExtendedWebBrowser wb) : base(wb)
{
parent = wb;
}

下記のところまでは、出来たのですが、最後の「 : base(wb)」の部分はどのようにすればよいのでしょうか?
[VB]
Public Sub ExtendedWebBrowserSite(ByVal wb As ExtendedWebBrowser)
parent = wb
End Sub

ご存知の方、よろしくお願いいたします。

Aベストアンサー

Convert C# to VB.NET
http://www.developerfusion.com/tools/convert/csharp-to-vb/

Q添付ファイルを「outlook Express」で」送りたいのに・・・

CANONの「Zoom Brouser Ex」に保存している画像を添付したいのですが
画像を選択して「右クリック」し、電子メールの送信を選んで
画像のサイズを変えてから送信したいのですがなぜか「outlook」が起動してしまうのです。
しかも「MAPIで電子メールを送信できませんでした。電子メールアプリケーションでMAPIを有効にしてください」というメッセージが出てしまいますがoutlook は使いたくありませんので・・・。

最初は自然にoutlook Expressが起動していたのにいつのまにか変わってしまったんです(T-T)

シャットダウンして再起動しても同じで、起動後の1枚目はExpressが起動し、2枚目からoutlookになってしまう。という何とも変なことになってしまいとても困っております。(-。-)y-゜゜゜
普段はoutlook Expressしか使っていません。

何がおかしいのでしょうか????教えてください!

Aベストアンサー

こんばんわ!
やりかたを間違えたでしょ?
No.1のかたのとおり、プログラムの追加と削除>Microsoft Office2000>追加と削除を押すと、「Microsoft Office2000メンテナンスモード」になって、「機能の追加と削除」で「OutLook]のチェックをはずせばOKよ!
「Microsoft Office2000」の部分はお使いのオフィスのバージョンによって違いますので注意してね。
「Zoom Brouser Ex」って、キャノンのデジカメについてたやつでしょ?使いにくくないですか?

Q[Visual Basic 6.0]timerを使ったプログラムで質問です。

Visual Basic 6.0 で
Private Sub Timer1_Timer()
Randomize
a = Int(Rnd * 7000)
b = Int(Rnd * 7000)
d = 200 + Int(Rnd * (500 - 200 + 1))
e = 1 + Int(Rnd * 15)
FillColor = QBColor(e);FillStyle = 0
Picture1.Circle (a, b), d, QBColor(e), -0.00001, -3.14152
Picture1.Circle (a, b + 80), d * 1.6, QBColor(e), , , 0.3
Picture1.Circle (a + d, b + d * 0.7), d / 4, QBColor(e)
Picture1.Circle (a - d, b + d * 0.7), d / 4, QBColor(e)
の図形をtimerを使って永遠にでたり消えたりを五秒間隔で消えたり出てきたりするプログラムを作りたいのですがうまくいきません。あと図形の塗りつぶしをFillColor = QBColor(e);FillStyle = 0と指定しているのですが塗りつぶしになりません。わかる方お願いします。m(_ _)m

Visual Basic 6.0 で
Private Sub Timer1_Timer()
Randomize
a = Int(Rnd * 7000)
b = Int(Rnd * 7000)
d = 200 + Int(Rnd * (500 - 200 + 1))
e = 1 + Int(Rnd * 15)
FillColor = QBColor(e);FillStyle = 0
Picture1.Circle (a, b), d, QBColor(e), -0.00001, -3.14152
Picture1.Circle (a, b + 80), d * 1.6, QBColor(e), , , 0.3
Picture1.Circle (a + d, b + d * 0.7), d / 4, QBColor(e)
Picture1.Circle (a - d, b + d * 0.7), d / 4, QBColor(e)
の図形をtimerを使って永遠にでたり消えたりを...続きを読む

Aベストアンサー

単に
FillColor = QBColor(e):FillStyle = 0
と記述すると フォームに対しての設定になります

ピクチャーボックスに対して指示なら
Picture1.FillColor = QBColor(e):Picture1.FillStyle = 0
とオブジェクトを明示しましょう
# マルチステートメントの区切りは『;』ではなく『:』です

出たり消えたりさせたいのであれば
前回描画した範囲を覚えておき UFOを描画する前に LINEメソッドで消去してから UFOを描画しましょう

private TYPE RECT
x as integer
y as integer
w as integer
h as integer
End if

タイマーイベントの先頭に
static rc as RECT
と記述します

UFO描画前の行に
if rc.w<>0 and rc.h<>0 then
Picture1.Line(rc.x, rc.y)-step(rc.w,rc.h), picture1.backcolor,BF
' ピクチャーボックスの内容をすべて消してもいいのであれば
' Picture1.cls
' でもいいですよ
end if

タイマーイベントの End Subの手前に
rc.x = a - d * 2
rc.y = b - d * 2
rc.w = d * 4
rc.h = d * 4
を追加します
# 次回描画前に消去する範囲を記憶

といった具合でしょう

単に
FillColor = QBColor(e):FillStyle = 0
と記述すると フォームに対しての設定になります

ピクチャーボックスに対して指示なら
Picture1.FillColor = QBColor(e):Picture1.FillStyle = 0
とオブジェクトを明示しましょう
# マルチステートメントの区切りは『;』ではなく『:』です

出たり消えたりさせたいのであれば
前回描画した範囲を覚えておき UFOを描画する前に LINEメソッドで消去してから UFOを描画しましょう

private TYPE RECT
x as integer
y as integer
w as integer
h as inte...続きを読む

Qoutlook2003からBecky!(ver2)

outlook2003からBecky!(ver2)へのコンバート(メールの移行)がうまくいきません。

一旦、outlook expressコンバートする方法も試したのですが、
2003からexpressへのインポート時に下記のメッセージが出て
先に進めません。

「MAPIクライアントからメッセージをインポートできません」

他に簡単な方法など無いでしょうか。。。

宜しくお願い致します。

Aベストアンサー

サポート切れのXPのようですが、同じPCでの移行ですか?

その場合は、Outlook2003→Mozilla Thunderbird→Becky!を試してください。
(Outlook→Thunderbird)
https://support.mozilla.org/ja/kb/switching-thunderbird#w_outlook-2007-agcaccakckaiagacchcyckcn
(Thunderbird→Becky!)
http://thyme.moo.jp/thunderbird%E3%80%80%E2%86%92%E3%80%80becky%E3%80%80%E3%81%B8%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%82%8B%E3%81%AB%E3%81%AF-235.html

Thunderbirdのメールデータは、プロファイルフォルダに保存されます。
https://support.mozilla.org/ja/kb/profiles-thunderbird

もし、PCが異なる場合は、Gmailのアカウントを取得して、そのIMAPアカウントをOutlook2003とBecky!に設定し、Outlook2003上でメッセージのコピーをIMAPアカウントフォルダの方に行ってサーバーに同期・コピーして、Gmailのサーバー経由で、Becky!に同期してダウンロードさせる方法があるのかなと思います。
(Outlook2003:新規作成で、別のアカウントフォルダを生成)
http://open.shonan.bunkyo.ac.jp/sysroom/?p=2794
(Becky!でGmailのIMAP接続を利用する)
http://beckygmailimap.hannnari.com/

なお、GmailのIMAPアカウントを利用する場合は、Outlookより、Thunderbirdの方が相性が非常によいです。

サポート切れのXPのようですが、同じPCでの移行ですか?

その場合は、Outlook2003→Mozilla Thunderbird→Becky!を試してください。
(Outlook→Thunderbird)
https://support.mozilla.org/ja/kb/switching-thunderbird#w_outlook-2007-agcaccakckaiagacchcyckcn
(Thunderbird→Becky!)
http://thyme.moo.jp/thunderbird%E3%80%80%E2%86%92%E3%80%80becky%E3%80%80%E3%81%B8%E4%B9%97%E3%82%8A%E6%8F%9B%E3%81%88%E3%82%8B%E3%81%AB%E3%81%AF-235.html

Thunderbirdのメールデータは、プロファイルフォルダに保存さ...続きを読む

QVisual Basic 2008 で複数のうちのいずれかのイベントが発生した時のプログラムの実行方法について、

例えば、フォームに複数のボタンが貼り付けていて、その中のいくつかのボタンは同じ処理をする。

これを1つのプログラムで記述したいのだが、Handlesの所を次のように記述しても、同じ処理をするボタンが多すぎると冗長のような気がします。

Handles Button1.Click, Button2.Click

どうすれば同じ処理をするボタンをグループ化して1つのプログラムで記述することが出来るでしょうか?

Aベストアンサー

原則的にはHandles句へ追加するものを増やしていくしかないです。

コレクションに既に一覧があるのであれば,AddHandlerを使う事でループによるイベントハンドラの追加は可能ですが。


人気Q&Aランキング