- ベストアンサー
エクセルでセル内容でpdfで保存しメールの起動まで
- エクセルでセル内容を指定してPDFファイルを保存し、メールを起動する方法について質問があります。
- コードを入力してマクロを作成しているのですが、特定の条件でエラーが発生してしまいます。
- 具体的には、ファイル名のセルを変更した際に「実行時エラー13、型が一致しません」というエラーが表示されます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
xFolder = PdfDir + "\" + xSht.Cells(15, 4).Text & xSht.Cells(1, 1).Text + ".pdf" とすると期待通り動くものと思います。
その他の回答 (2)
- HohoPapa
- ベストアンサー率65% (455/693)
(2018/12/28)の時には、掲示サイトからそのままコピペしました。 よく見ると文字演算で + を使っていますね。 xFolder = PdfDir & "\" & xSht.Cells(15, 4).Text & xSht.Cells(1, 2).Text & ".pdf" とすれば、より確実です。
お礼
本当に色々ありがとうございます。 +は使用した覚えがなく、というかそんな知識がありません。 ここからコピペしたときに+になったハズです。 同じような現象で¥は\になるものと思いました。 ご回答コードを\のままマクロに貼り付けたら¥に戻ったと思います。 今確認したらコピペしたはずなのに、同じ行に+と&が混在していましたので原因(規則性)不明。 気持ち悪いので&に修正して(も)正常に動くことを確認しました。 残念ながら当方に\を+に変える知識はありません。(ご存知の通り)
- watabe007
- ベストアンサー率62% (476/760)
>質問ではA1+B1で質問しましたので(1,1)と(1,2)になっています。 >xFolder = PdfDir + "\" + xSht.Cells(1, 1).Value & xSht.Cells(1, 2).Value + ".pdf" >(15,4)と(1,1))に変更すると Range("D15") と Range("A1") ですね なら xFolder = PdfDir & "\" & xSht.Range("D15").Value & xSht.Range("A1").Value & ".pdf" 文字の連列は & で行いましょう MsgBox xFolder で連結後の確認もしてみましょう
お礼
ご回答でうまく行くことが確認出来ました。 Range()で出来ないのはなぜ?が有ったので色々試行錯誤してみたところ、指定したセルが空白の場合はエラーになるようです? ちょっとした確認不足、大きな知識不足ですみませんでした。 上記訂正とお詫びします。
補足
いつもお世話になっております。 早々のご回答に感謝!! 試してみたのですが赤●の中に×が入って400というエラー表示が出ます。 他のマクロではRange()を使っているので、Range()でも行けるということだと思いますが当方のことですので何かの手違いも。。。自信なし。 いずれにしても#No1さんのご回答で解決しましたのでこれ以上のお手数は結構です。
お礼
早々のご回答ありがとうございます。 最初はどこが違うのか分かりませんでしたが、並べてみたらValueがTEXTになっていました。 最初のBookではC&Pの後数字だけ変えてValueのままで動いたのに不思議です。 このコードはこれからも汎用になるので、こんなレベルで使うには少し不安もありますが今更以前のように、(1)ファイル名をつけて、(2)所定のフォルダを探して、(3)pdfで保存して、(4)そのファイルをフォルダから探して、(5)メールに添付して、(6)シートごとに決まった宛名を入れて送信。。。はできないので非常に助かりました。 複数の人がこの作業をやるのですが、1人の人には上記の6つの作業はハードルが高く、1人の人は入力ミスが多いので本当に助かりました。
補足
いつもお世話になっております。 早々かつ度々のご回答ありがとうございます。 朝一で「動かない」と指摘されて、最初のBookでは何度やっても問題なく動くことから、セル番地だけの問題と何度も試行錯誤していたのが全く無駄だったことに無力感、とすんなり解決したことに感謝です。