Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6935 / 13644 ツリー ←次へ | 前へ→

【42131】クライアントとサーバー ike-kin 06/9/2(土) 16:13 質問[未読]
【42132】Re:クライアントとサーバー ike-kin 06/9/2(土) 16:16 質問[未読]
【42133】Re:クライアントとサーバー りん 06/9/2(土) 16:27 発言[未読]
【42136】Re:クライアントとサーバー ike-kin 06/9/2(土) 17:20 質問[未読]
【42139】Re:クライアントとサーバー りん 06/9/2(土) 18:07 発言[未読]
【42148】Re:クライアントとサーバー ike-kin 06/9/2(土) 20:37 お礼[未読]
【42140】Re:クライアントとサーバー かみちゃん 06/9/2(土) 18:18 発言[未読]
【42143】Re:クライアントとサーバー ike-kin 06/9/2(土) 19:25 回答[未読]
【42144】Re:クライアントとサーバー ike-kin 06/9/2(土) 19:36 回答[未読]
【42153】メールの受信について ike-kin 06/9/2(土) 22:30 質問[未読]
【42212】Re:メールの受信について ike-kin 06/9/4(月) 12:41 質問[未読]
【42215】Re:メールの受信について ike-kin 06/9/4(月) 12:44 質問[未読]
【42218】Re:メールの受信について かみちゃん 06/9/4(月) 14:10 発言[未読]
【42234】Re:メールの受信について ike-kin 06/9/4(月) 17:54 お礼[未読]

【42131】クライアントとサーバー
質問  ike-kin  - 06/9/2(土) 16:13 -

引用なし
パスワード
   どなたかお心あたりはないでしょうか?

Win2000で動作しているマクロが
Win2000Serverにコピーして持っていくと動かなくなります。

文字コードとかの関係でしょうか?
何でもいいので情報下さい。

【42132】Re:クライアントとサーバー
質問  ike-kin  - 06/9/2(土) 16:16 -

引用なし
パスワード
   ▼ike-kin さん:
>どなたかお心あたりはないでしょうか?
>
>Win2000で動作しているマクロが
>Win2000Serverにコピーして持っていくと動かなくなります。
>
>文字コードとかの関係でしょうか?
>何でもいいので情報下さい。

追加です。エクセルのバージョンは一緒です(2003)

【42133】Re:クライアントとサーバー
発言  りん E-MAIL  - 06/9/2(土) 16:27 -

引用なし
パスワード
   ike-kin さん、こんにちわ。

>>Win2000で動作しているマクロが
>>Win2000Serverにコピーして持っていくと動かなくなります。

 プロジェクトのコンパイルで止まるなら、どの部分ですか?
 実行中に止まるなら、どの構文で止まりますか?(ステップ実行で確認)

漠然とした質問ではなく、エラーになっている部分のコードを(可能な範囲で)ここに貼るとレスがつきやすいです。

【42136】Re:クライアントとサーバー
質問  ike-kin  - 06/9/2(土) 17:20 -

引用なし
パスワード
   ▼りん さん:
ありがとうございます。
すみません、コンパイルエラーは出なくなってしまいました。
解決したと言うことでしょうか??
でも、うまくいかないのです。

エクセルでメールを受信しようとしているのですが
それがクライアントでは動作して、サーバーが駄目です。

コードを載せます。

Sub mailget()
  Dim sts As Integer
  sts = MsgBox("メール受信してもいいですか?", vbOKCancel)
  If sts = vbCancel Then
    Exit Sub
  End If

  If Worksheets("設定").Cells(1, 2) = "" Then
    MsgBox "POPサーバが設定されていません" + vbCrLf + "処理を終了します"
    Exit Sub
  End If
  If Worksheets("設定").Cells(3, 2) = "" Then
    MsgBox "受信ログオンIDが設定されていません" + vbCrLf + "処理を終了します"
    Exit Sub
  End If
  If Worksheets("設定").Cells(4, 2) = "" Then
    MsgBox "受信ログオンPasswordが設定されていません" + vbCrLf + "処理を終了します"
    Exit Sub
  End If


  Dim szServer As String, szUser As String, szPass As String
  Dim szFilename As String, szPara As String
  Dim szCommand As String, szDir As String
  Dim ar As Variant, v As Variant
  Dim retv As Variant, s As Variant

  Dim msg As String

  szServer = Worksheets("設定").Cells(1, 2) 'SMTPサーバ名と同じでよい。
          'タブで区切ってポート番号を指定できます。
  szUser = Worksheets("設定").Cells(3, 2)    'メールアカウント名
  szPass = Worksheets("設定").Cells(4, 2)     'パスワード
   
  szCommand = "SAVEALL" 'コマンド メールの1件目から3件目までを受信
        ' SAVEALL ... 全てのメールを受信します
  
  szDir = "D:\****\****\****\mail" '受信したメールを保存するディレクトリ

  ar = RcvMail(szServer, szUser, szPass, szCommand, szDir)

  Debug.Print "エラー" & ar 'エラー発生時は配列でなくメッセージが戻ります。
  
End Sub

と、いうものです。Bsmtp.dllは入れてあります。
受信すると

エラーPOP3 error -ERR [AUTH] Password supplied for "***@***.jp" is

というメッセージが出ます。
クライアントではOKだしサーバーでメーラーの同じメアド設定してもOKなのになんででしょう?
ココに書いていい質問なのか迷いますが、本当に困ってしまって。
どなたか教えていただけないでしょうか?

【42139】Re:クライアントとサーバー
発言  りん E-MAIL  - 06/9/2(土) 18:07 -

引用なし
パスワード
   ike-kin さん、こんばんわ。
ttp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42115;id=excel
これの関連だったのですね。

>すみません、コンパイルエラーは出なくなってしまいました。
>解決したと言うことでしょうか??
実行時エラーのようなので、違うと思います。

>と、いうものです。Bsmtp.dllは入れてあります。
>受信すると
>エラーPOP3 error -ERR [AUTH] Password supplied for "***@***.jp" is
パスワードまたはアカウントが違うというエラーになってるようですね。

しかし、2000でうまく動作していたものが、2000Serverにコピーすることで動かなくなるというのなら、直接Bsmtp.dllの作者サイトの質問掲示板で、2000Serverで動作しないのは何故?と尋ねてみたほうがいいとおもいます。
ttp://www.hi-ho.ne.jp/babaq/
同じ事で悩んだ人がいるかもしれません。

【42140】Re:クライアントとサーバー
発言  かみちゃん  - 06/9/2(土) 18:18 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>エクセルでメールを受信しようとしているのですが
>それがクライアントでは動作して、サーバーが駄目です。

[#42115]と何か関連がありますか?
あたらは、投稿タイトルは「受信」とありますが、内容は「送信」のようですが、
違いますか?

私は、BSMTP.DLLを使って、メール送受信をすることがありますが、サーバー・
クライアント方式の知識が今ひとつわかりません。
その上で、サーバーが駄目というのは、どういうことなのでしょうか?

単に、クライアントで受信できて、その後サーバーで受信しようとすると、受信
せずに何もエラーが出ずに処理が終了するということでしょうか?
それであれば、同じようにその後、再度クライアントで受信したら、うまく受信
できるか確認してみてください。

もし、うまく受信できないようであれば、とりあえず、
D:\****\****\****\mail
のフォルダに入っているファイルを別のフォルダに移動させて、空にしてみてか
ら受信してみてください。

BSMTP.DLLの仕組みは、そのあと必要であれば、説明させていただきます。

【42143】Re:クライアントとサーバー
回答  ike-kin  - 06/9/2(土) 19:25 -

引用なし
パスワード
   ▼かみちゃん さん:
りんさん かみちゃんさん ありがとうございます。
途方にくれております。

>[#42115]と何か関連がありますか?
>あたらは、投稿タイトルは「受信」とありますが、内容は「送信」のようですが、
>違いますか?
これです!送信がしたいのですがPOPBeforeSMTPでエラーになるので、とりあえず送信専用のメアドから受信動作してから送信しようとしています。

>単に、クライアントで受信できて、その後サーバーで受信しようとすると、受信
>せずに何もエラーが出ずに処理が終了するということでしょうか?
>それであれば、同じようにその後、再度クライアントで受信したら、うまく受信
>できるか確認してみてください。

クライアントでは受信も送信も正常に動作します。クライアントとサーバーは離れた店舗にあります。
実際は、クライアントからサーバーのエクセルにリモート接続で入力して
そのサーバー上のエクセルから報告メールを送りたいのです。
サーバーへBsmtp.dllをリモート接続でコピーしてコマンドで
cd c:\WINNT\system32
regsvr32 Bsmtp.dll
を実行しましたが、何かエラーが出ていました。
もしかしてAdministratorでログインしなくてはだめなのでしょうか?
私のIDはAdministrator権限をもっていますが。

>もし、うまく受信できないようであれば、とりあえず、
>D:\****\****\****\mail
>のフォルダに入っているファイルを別のフォルダに移動させて、空にしてみてか
>ら受信してみてください。
そのサーバーのフォルダは空です。一回も正常に受信できていないので・・・。

>BSMTP.DLLの仕組みは、そのあと必要であれば、説明させていただきます。
すみません、環境が複雑で本当にここで聞いていていいのか不安なのですが、教えていただければ助かります。

【42144】Re:クライアントとサーバー
回答  ike-kin  - 06/9/2(土) 19:36 -

引用なし
パスワード
   ▼ike-kin さん:
追加します。

>サーバーへBsmtp.dllをリモート接続でコピーしてコマンドで
>cd c:\WINNT\system32
>regsvr32 Bsmtp.dll
>を実行しましたが、何かエラーが出ていました。

以下エラーメッセージです。

Bsmtp.dll was loaded.dut the DLLRegisterServer entry point was not found.
DllRegisterServer may not be exported, or a corrupt version of Bsmtp.dll may be in memory.
Consider using PView to detect and remove it.

【42148】Re:クライアントとサーバー
お礼  ike-kin  - 06/9/2(土) 20:37 -

引用なし
パスワード
   ▼りん さん:
>しかし、2000でうまく動作していたものが、2000Serverにコピーすることで動かなくなるというのなら、直接Bsmtp.dllの作者サイトの質問掲示板で、2000Serverで動作しないのは何故?と尋ねてみたほうがいいとおもいます。
>ttp://www.hi-ho.ne.jp/babaq/
>同じ事で悩んだ人がいるかもしれません。

ありがとうございます。
こちらにも質問してみます!

【42153】メールの受信について
質問  ike-kin  - 06/9/2(土) 22:30 -

引用なし
パスワード
   かなり、煮詰まっております。
色々お伺いして申し訳ないのですが。

POP Bfore SMTPの問題が解決すれば全てうまくいきそうなのです。

環境は
リモートアクセスで店舗のクライアントから本社のサーバーへ接続
本社サーバー上でエクセルに日報入力
結果の売上金額をメールで携帯へ送信

です。送信はCDO、Bsmtp.dllのどちらも成功しています。
但し、POPで認証が解除されていればです。
Bsmtp.dllの受信は前に記述したように、パスワードエラーです。
同じパスワードとアカウントをメーラーに設定すれば動作するのでパスワードは間違っていないのですが。

サーバー上でメーラーたち上げて一回送受信してというのは駄目と言われています。

このPOPで認証解除をエクセルで行いたいのです。しかもさりげなく。
バックグラウンドでOutLookに受信だけさせる事は出来ないでしょうか?
次から次へで申し訳ございませんが、お力をお貸しくださいませ。

【42212】Re:メールの受信について
質問  ike-kin  - 06/9/4(月) 12:41 -

引用なし
パスワード
   ike-kinです。
皆様ありがとうございます。
私が書き込んだ同一の流れのスレッドが分岐してしまいました。
申し訳ございません。
こちらにも経緯とか回答いただいたものがあります。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42115;id=excel

こういう場合は一方削除でしょうか?
すみません、なれてなくて・・・。

【42215】Re:メールの受信について
質問  ike-kin  - 06/9/4(月) 12:44 -

引用なし
パスワード
   かみちゃん様、ありがとうございます。

>なお、私も、Web検索した結果ですので、内容はわかりません。
>ご自身でも検索してみることをおすすめします。
私も調べてみましたが、どうやら受信ができていなかったみたいですね。エラーメッセージが出なくて分かりませんでした。

>また、別のスレッドや、他の掲示板で解決ができた場合には、それぞれのスレッド
>で解決結果を教えていただければ、ありがたいです。
承知しました。もう一方のスレッドにも報告します。
アドバイスありがとうございます。

受信のマクロはこんな感じです。
Sub mailget()
  Dim sts As Integer
  sts = MsgBox("メール受信してもいいですか?", vbOKCancel)
  If sts = vbCancel Then
    Exit Sub
  End If

  If Worksheets("設定").Cells(1, 2) = "" Then
    MsgBox "POPサーバが設定されていません" + vbCrLf + "処理を終了します"
    Exit Sub
  End If
  If Worksheets("設定").Cells(3, 2) = "" Then
    MsgBox "受信ログオンIDが設定されていません" + vbCrLf + "処理を終了します"
    Exit Sub
  End If
  If Worksheets("設定").Cells(4, 2) = "" Then
    MsgBox "受信ログオンPasswordが設定されていません" + vbCrLf + "処理を終了します"
    Exit Sub
  End If


  Dim szServer As String, szUser As String, szPass As String
  Dim szFilename As String, szPara As String
  Dim szCommand As String, szDir As String
  Dim ar As Variant, v As Variant
  Dim retv As Variant, s As Variant

  Dim msg As String

  szServer = Worksheets("設定").Cells(1, 2) 'SMTPサーバ名と同じでよい。
          'タブで区切ってポート番号を指定できます。
  szUser = Worksheets("設定").Cells(3, 2)    'メールアカウント名
  szPass = Worksheets("設定").Cells(4, 2)     'パスワード
    '2000/05/20 APOPをサポート
    'APOP 認証をするには、パスワードの前に "a" または "A" に 1個の
    'ブランクをつけます。
    '"a xxxx" : サーバがAPOP 未対応なら通常のUSER/PASS 処理をします。
    '"A xxxx" : サーバがAPOP 未対応ならエラーになります。
    
  szCommand = "SAVEALL" 'コマンド メールの1件目から3件目までを受信
        ' STAT ...... メールボックスに到着しているメール数と総バイト数のみを返します
        ' LIST [n[-n2]] ...... メールのSubject、From、Dateヘッダーの内容のみを
        '       返します。範囲も指定できます。
        ' SAVE n[-n2] .... n番目のメールを受信します。範囲も指定できます。
        ' SAVD n[-n2] .... n番目のメールを受信し、サーバのメールボックスから
        '       削除します。範囲も指定できます。
        ' SAVEALL ... 全てのメールを受信します
        ' SAVEALLD .. 全てのメールを受信し、サーバのメールボックスから
        '       削除します
        ' DELE n[-n2] .... n番目のメールをメールボックスから削除します。
        '       範囲も指定できます。
  
  szDir = "aaaaa\aaaa" '受信したメールを保存するディレクトリ

  ar = RcvMail(szServer, szUser, szPass, szCommand, szDir)
  '戻り値が返る変数は、Variantタイプを指定すること。
  '受信したメール1通ごとにファイルが作成されます。
  'メールに添付されたファイルは、本文と共に1つのファイルに含まれます。
  'ReadMail関数で添付ファイルを取出します。

  Debug.Print "エラー" & ar  'エラー発生時は、配列でなくメッセージが戻ります。
  
End Sub

エラーメッセージが出ないのが不思議です。
どうしてでしょう???

【42218】Re:メールの受信について
発言  かみちゃん  - 06/9/4(月) 14:10 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>こちらにも経緯とか回答いただいたものがあります。
>
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42115;id=excel
>
>こういう場合は一方削除でしょうか?

・両方を一度閉じて、再度新しいスレッドを立てる
・片方を閉じて、もう片方のスレッドで続けたい旨を宣言する
そうしないと、両方のスレッドで情報が混乱するだけだと思います。
両方とも、コメントを付けてくださっている方々がいますので・・・

【42234】Re:メールの受信について
お礼  ike-kin  - 06/9/4(月) 17:54 -

引用なし
パスワード
   かみちゃん様

ike-kinです。
書き込み方が、悪くて皆様にご迷惑おかけしてしまったみたいです。
ごめんなさい。

>両方とも、コメントを付けてくださっている方々がいますので・・・
そうですよね。本当にごめんなさい。

おかげさまで無事解決しました。
原因は私のアカウントの記述ミスでした。お粗末です・・・。
詳しくは、以下にも書きました。一応この件はこれで収束しました。
ありがとうございました。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42233;id=excel

6935 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free