- ベストアンサー
VBAのデバック方法についてお助けください
- VBAのデバックに関する質問です。エラーメッセージ'2147024864プロセスはファイルにアクセスできません'が表示されます。具体的には、作成したエクセルファイルを添付してメールで送付する処理でエラーが発生しています。現在のコードでは、ファイル名をセルC3の値に設定し、アクティブシートを値のみで保存しています。しかし、送信されるメールには添付ファイルが含まれていません。どの部分が間違っているのか分かりません。お助けいただけると幸いです。
- VBAのデバックについてお助けください。現在のコードでは、作成したエクセルファイルをメールに添付して送信する処理が正常に動作しません。エラーメッセージ'2147024864プロセスはファイルにアクセスできません'が表示されます。コードの中で、ファイル名をセルC3の値に設定し、アクティブシートを値のみで保存していますが、送信されるメールには添付ファイルが含まれていません。正しい処理のためにはどのように修正すればいいのでしょうか。ご助力いただけると幸いです。
- VBAのデバック方法について質問です。現在のコードでは、作成したエクセルファイルを添付してメールで送信する処理がうまくいきません。エラーメッセージ'2147024864プロセスはファイルにアクセスできません'が表示されます。具体的には、ファイル名をセルC3の値に設定し、アクティブシートを値のみで保存する処理が正常に動作しません。どの部分が問題なのか分かりません。ご教示いただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
番号だけで検索するとこういうのが出てくる。 http://support.microsoft.com/kb/294424/ja 文書番号: 294424 - 最終更新日: 2003年5月12日 - リビジョン: 2.1 PRB: エラーがファイルから ADO レコードセットを開く また、 「’2147024864プロセスはファイルにアクセスできません’。」 単純に考えると アクセスできないことがおかしい、か、 アクセスできる状況なのに(生成した)ファイル名がおかしい、か。 そのファイルは普通のメールソフトで送受信できているか。 ほかのファイルならうまく稼働する仕組みか。 「(2)のどこかで失敗しているものと思われます」 少なくともどこ、どの行が原因かは追求、 それをどう直すべきかはまた別の話。 継ぎはぎでなく、 別途稼働するマクロを確保してから、必要な部分を今回用につくり直す。 正しい部分とあやしい部分が明確でないならそれをはっきりさせる。 そんなところからか・・・。
その他の回答 (1)
- hisappy
- ベストアンサー率46% (184/392)
了解しました~。って、ナンにやね~ん。 いいですね、いいですね、今って「なんとなく」で ここまでのコーディングが出来てしまうほど 情報が集まってしまうんですね。うーんうらやましい。 なんて、個人的ハイテンションはおいといて 問題を順に解きほぐしていきましょう。 まずは質問文でも推測されている通り、メールに添付するファイルの指定 あるいはアクセスに失敗しているようです。 なのでカギを握るのは MailAddFile = "C:\Documents and Settings\***\My Documents\ファイル\" & fname & ".xls"' 送信確認 の部分です。 ここで確認すべき点はこんなに 1.パス名も含めてファイル名の設定は正しく行われているか。 これは MsgBox でもで MailAddFile を表示させれば確認できます。 2.パス名、ファイル名は合っており、そこにそのファイルは存在しているか。 これは大文字小文字程度のミスが無いかどうかです。 テスト当初は全部小文字が無難。 3.パス名、ファイル名も合っており、ファイルも存在しているが、本当にアクセスできるものか。 これがこっそり大問題。実はこの質問文にあるプログラムには、 Windows が抱える小さな大問題が隠れていたりするのです。 その大問題とは!…えーと…なんでしたっけ…あっ、ちゃんと答えますから。。。 なんと、「ファイルのパス名中にスペースが有るとそこで途切れてしまう」 とかいうものです。 分かりにくいですが、つまりは SendMailByCDO では「C:\Documents 」までしか 認識していない可能性があるのです。 このテストは簡単。その対象ファイルを「C:\」に置く、つまり MailAddFile = "C:\" & fname & ".xls"' 送信確認 にしてみればよいのです。 それでエラーが取れるなど変化があればこれが原因、けってー、だんてー。 これが原因ならば、後はパス名を適切に設定してあげればOK。 MailAddFile = chr(??) & "C:\Documents and Settings\***\My Documents\ファイル\" & fname & ".xls" & chr(??)' 送信確認 ダブルクォテーションを示すキャラ文字を前後に加えてあげればよいはずです。 文字の指定の仕方やコード番号は覚えていないです。すみません。 この3つ目の問題はいわゆる専門家となるプログラマさんでも知らない人が多そうな内容で 開発環境(開発会社)では動くのに本番稼動(現地)では動かないといった クレーム的難問にもなっているようです。 さて、これで本当に先に進めるのでしょうか? ではまた遭遇する機会がありましたら、次のステップに挑みませぅ。
補足
まことにありがとうございます。3は、ファイルを作成し保存する時点で、直接Cドライブにファイルを保存し、そしてそれを添付するように命令したらよい、ということでしょうか? ところで、エラーメッセージの続きがあったことにつづきました。(別のプロセスが使用中です)と出てくるのです。ここにヒントがあるかもしれないと思い、お伝えさせていただきました。私がひとつ気になっているのは、このエクセルはもともと作成したところから、active sheetだけを(そのときセルのC3に入っている文字をファイル名にして)保存しています。 それは下記のコードにあるとおりです。 MailAddFile = "C:\Documents and Settings\***\My Documents\ファイル\" & fname & ".xls" それを添付して送りたいのですが、私は下記のとおりに書きました。 MailAddFile = "C:\Documents and Settings\***\My Documents\ファイル\" & fname & ".xls" もしかすると、別プロセスが使用中、というのは、このエクセルを保存したとき、このエクセルは開いたままになっていますので、それを添付しようとしているところにうまくいかない原因があるのかもしれない、と今思い始めています。 もしアドバイス等あればどうぞお願いいたします。
お礼
ありがとうございます。エラーメッセージをよく確認したところ、単にアタッチしたかったエクセルが開いたままになっていたから添付できなかったことがわかりました。ありがとうございます。