Excel VBA質問箱 IV

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

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


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

【30478】メールの本文がうまくいかない・・・ 綿棒 05/10/28(金) 14:09 質問[未読]
【30479】Re:メールの本文がうまくいかない・・・ Kein 05/10/28(金) 14:38 発言[未読]
【30489】Re:メールの本文がうまくいかない・・・ 綿棒 05/10/28(金) 16:36 質問[未読]
【30491】Re:メールの本文がうまくいかない・・・ Kein 05/10/28(金) 17:06 発言[未読]
【30482】Re:メールの本文がうまくいかない・・・ awu 05/10/28(金) 15:50 回答[未読]
【30490】Re:メールの本文がうまくいかない・・・ 綿棒 05/10/28(金) 16:47 お礼[未読]
【31107】Re:メールの本文がうまくいかない・・・ 綿棒 05/11/11(金) 16:57 質問[未読]
【31130】Re:メールの本文がうまくいかない・・・ awu 05/11/11(金) 23:04 回答[未読]
【31141】Re:メールの本文がうまくいかない・・・ 綿棒 05/11/12(土) 10:25 発言[未読]
【31142】Re:メールの本文がうまくいかない・・・ かみちゃん 05/11/12(土) 10:33 発言[未読]
【31148】Re:メールの本文がうまくいかない・・・ 綿棒 05/11/12(土) 15:13 発言[未読]

【30478】メールの本文がうまくいかない・・・
質問  綿棒  - 05/10/28(金) 14:09 -

引用なし
パスワード
   いつも参考にさせていただいております。

実は以下の表をメールの本文として送りたいのです。

店舗    数量    備考
名古屋店   2     直送
大阪店    1     なし
東京店    5     直送

そこで、CDOのHPを参考にさせていただいて、MailBodyを以下のように書き換えたのですが、うまくいきません。ご教授願いたいと思います。

Dim MyR As Range, C As Range
Dim i As Long

Set MyR = Activesheet.UsedRange
For i = 1 To MyR.Rows.Count
  For Each C In MyR.Rows(i)
   If Not IsEmpty(C.Value) Then
     MailBody = MailBody & C.Text & " "
   End If
  Next
  If MailBody <> "" Then
   MailBody = MailBody & vbCrLf
  End If
Next i

【30479】Re:メールの本文がうまくいかない・・・
発言  Kein  - 05/10/28(金) 14:38 -

引用なし
パスワード
   うまくいかないというのは、どのようにうまくいかないのでしょーか ?
具体的に書いて下さい。
それからこの質問は、以前のスレッドに繋げて書いた方が良かったと思いますよ。

【30482】Re:メールの本文がうまくいかない・・・
回答  awu  - 05/10/28(金) 15:50 -

引用なし
パスワード
   たぶん、こういうことでないかと思いますが・・・

如何でしょうか。


Dim MailBody As String
Dim LineBody As String
Dim MyR As Range, C As Range
Dim i As Long
Set MyR = ActiveSheet.UsedRange
For i = 1 To MyR.Rows.Count
  LineBody = ""
  For Each C In Intersect(MyR, Rows(i))
   If Not IsEmpty(C.Value) Then
     LineBody = LineBody & C.Text & " "
   End If
  Next
  If LineBody <> "" Then
   MailBody = MailBody & LineBody & vbCrLf
  End If
Next i

【30489】Re:メールの本文がうまくいかない・・・
質問  綿棒  - 05/10/28(金) 16:36 -

引用なし
パスワード
   配慮がいたらずすみませんでした。

メールは送信できたのですが、メール本文が空で送信されてしまいます。

【30490】Re:メールの本文がうまくいかない・・・
お礼  綿棒  - 05/10/28(金) 16:47 -

引用なし
パスワード
   うまくいきました!!
ありがとうございました!!

【30491】Re:メールの本文がうまくいかない・・・
発言  Kein  - 05/10/28(金) 17:06 -

引用なし
パスワード
   あ、他の人の回答でうまくいったのですね。それならもう回答は不要ですね。

【31107】Re:メールの本文がうまくいかない・・・
質問  綿棒  - 05/11/11(金) 16:57 -

引用なし
パスワード
   すみません。先日教えていただいたVBAをちょっと修正したいのですが、
スキルが足らず、どうしていいかわかりません。

  A   B  C
1  店舗  数  備考
2  大阪  1  直送
3  東京  2  特になし
4  名古屋 3  臨時


セルの枠を線で囲み、それもメールの本文にするにはどうしたらよいのでしょうか。(表を本文に挿入する)
以前教えていただいた方法だと、セルの枠線が反映されず、また字数によって
(でこぼこして)きれいにならなくなってしまうのです・・・。

【31130】Re:メールの本文がうまくいかない・・・
回答  awu  - 05/11/11(金) 23:04 -

引用なし
パスワード
   > セルの枠線が反映されず、また字数によって
> (でこぼこして)きれいにならなくなってしまうのです・・・。

まぁ、簡単な方法としては、Tab を入れるか、1セルの文字数を揃える方法
だと思います。

例えば、文字数を揃えるのであれば、こんな感じで如何でしょうか。


Dim MailBody As String
Dim LineBody As String
Dim MyR As Range, C As Range
Dim i As Long
Dim N As Integer
Dim Spn
Spn = Array(10, 5, 10, 10, 20) ' <--- 各列の文字数を指定
Set MyR = ActiveSheet.UsedRange
For i = 1 To MyR.Rows.Count
  LineBody = ""
  N = 0
  For Each C In Intersect(MyR, Rows(i))
    LineBody = LineBody & _
      Left(StrConv(C.Text & String(20, " "), vbWide), Spn(N))
    If N < UBound(Spn) Then N = N + 1
  Next
  If LineBody <> "" Then
    MailBody = MailBody & LineBody & vbCrLf
  End If
Next i

【31141】Re:メールの本文がうまくいかない・・・
発言  綿棒  - 05/11/12(土) 10:25 -

引用なし
パスワード
   ▼awu さん:
ありがとうございます〜。早速やってみました。
多少のずれはありましたが、非常に改善されました。
知識不足であのような関数(StrConv)があることを知りませんでした・・・
初心者で申し訳ありません。勉強します。

セル枠線についても何かVBAがあるのでしょうか・・・探してみます。

【31142】Re:メールの本文がうまくいかない・・・
発言  かみちゃん  - 05/11/12(土) 10:33 -

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

横から失礼します。

>セル枠線についても何かVBAがあるのでしょうか

そもそも添付ファイルで送信してはいけないのでしょうか?
何か、勘違いしていたら、すみません。

【31148】Re:メールの本文がうまくいかない・・・
発言  綿棒  - 05/11/12(土) 15:13 -

引用なし
パスワード
   ▼かみちゃん さん:

なるべくなら添付という選択肢ははずしたいのです。
受信が遅くなるのと、ファイル数がかさむ可能性があるからです・・・

Excelで出荷案内書を作ろうとするほうがおかしいのですが(苦笑

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