アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロ初心者です。
マクロで範囲選択したセルをOutlookのメールの本文に貼り付けたいのですがなかなか上手くいきません。

コードは画像のものを使っていて、赤く線を引いたところで躓いてます。
1つのセルを指定した時はちゃんと反映するのに、複数のマクロを指定してマクロを起動させると本文に【-1】と出ます。

他サイトで聞いた時に

>objAppt.body = Range("DU7:DW10").Select



objAppt.display objAppt.BodyFormat = 1 Range("DU7:DW10").Copy objAppt.getInspector.WordEditor.Windows(1).Selection.Paste

とに変えるといいと教えてもらったのですが、
開かれたメール画面のアドレス欄と送信ボタンが消え、
objAppt.BodyFormat = 1の箇所が黄色くなります。
本文の欄にも何も表示されません。

なんのコードを入れたら上手くいくかアドバイスください…。

「マクロ初心者です。 マクロで範囲選択した」の質問画像

A 回答 (2件)

こんにちは、


ご質問と添付図の内容が合わないように思うのですが、、

添付図について
Selectは選択なので、TextやValueにする必要があるのでは?
また、範囲に対して前でのプロパティは、一度に取得できないので
範囲内をForなどでループしてString型の変数に値を集約して(必要に応じ改行も)Body=String型の変数にすれば良いと思います。

例えばこんな感じ、、
Dim myBody As String, myCell
For Each myCell In Range("DU7:DW10")
If myBody = "" Then
myBody = myCell.Value & vbCrLf
Else
myBody = myCell & myCell.Value & vbCrLf
End If
Next
objAppt.Body = myBody
この場合の取得セル方向はDU7ー>DV7ー>DW7、DU8>>>です

ご質問文について
objAppt.display objAppt.BodyFormat = 1 Range("DU7:DW10").Copy objAppt.getInspector.WordEditor.Windows(1).Selection.Paste
これ改行は?
まぁ、すべて改行されていなければ、コンパイルエラーだと思いますが、
objAppt.display objAppt.BodyFormat = 1 って、、改行あります?

objAppt.display メールアイテム(新規作成中メール)を表示
objAppt.BodyFormat = 1 テキスト形式を指定
Range("DU7:DW10").Copy objAppt.getInspector.WordEditor.Windows(1).Selection.Paste
セル範囲をコピーしペースト、.Selection.Pasteが通るのかは知りません。

先ずは、気になった点です。

Outlookを使用していないのと、コードが画像なので検証はしていません。
    • good
    • 0

こんにちは



OUTLOOKのVBAはまったく存じませんけれど・・・
予定表の送信をしようとしているのでしょうか?

エラーになるという1行に関してですが、
リファレンスによれば、AppointmentItem.Bodyは文字列のはずです。
ですので、右辺のRange.Selectはどうみてもおかしく感じられます。
https://docs.microsoft.com/ja-jp/office/vba/api/ …

>本文に【-1】と出ます。
Selectの戻り値が何か知りませんけれど、論理値の-1が返されているのではなかろうかと推測します。


セル範囲をどのように文字列にしたいのか不明ですけれど、単純に連結すればよいだけなら、各セルの内容を連結すればすむのでははないでしょうか?
(エクセルで空きセルに連結結果を作成しておいて、そのセルを参照するようにしてもよさそうに思います。)
仮に、TextJoin関数が使える環境であるとして、単純連結であるなら
 Application.TextJoin("", 1, Range("DU7:DW10"))
などでも同様の結果が得られるのではと推測します。

なお、ご質問には関係ありませんけれど、少々気になったのは、
>CreateItem(1)
となっていますが、AppointmentItemの場合は、リファレンスによるとOlItemTypeは「1」ではなく「1-d」(またはolAppointmentItem)だと思われるのですが・・・?
https://docs.microsoft.com/ja-jp/office/vba/api/ …

※ リファレンスを見ただけで未検証ですので、はずしていたら無視してください。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A