Excel VBA 質問スレッド No.197 (解決済)

thunderbird で エクセルのセルを範囲指定してコピー→本文へ貼り付け

投稿者 : mskz     投稿日時 : 2021/03/21(Sun) 04:25:19     OS : Windows 10     EXCEL : Excel 2016
Sub 夜メール作成()
'
' 夜メール作成 Macro
'
Dim mailadto As String
Dim substring As String
Dim bodystring As String

sPath = """C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"" -compose "

mailadto = "11111@outlook.jp"
substring = Day(Date) & "." & "タイトル"
Range("A21:E69").Select
Selection.Copy
bodystring=

End With


Shell sPath & "to=" & mailadto & "," & "subject=" & substring & "," & "body=" & bodystring

End Sub


thunderbirdで範囲指定したセルをコピーして、本文に貼り付けをしたいのですが
うまくいきません。

bodystring=Range(A21:E69).value

だとA21のみが本文に表示されます。
わかる方がいたら教えて頂きたいです。

[返信 1] Re : thunderbird で エクセルのセルを範囲指定してコピー→本文へ貼り付け
投稿者 : ヘンリー     投稿日時 : 2021/03/21(Sun) 10:37:28
やりたい事がコピー&ペーストなのか
転記なのかはっきりしませんが、
転記でよければ、以下の様に
「文字列を組み立てる」
という方法でどうでしょうか。

Function CreateBody(rngRange As Range) As String
Dim lngRow As Long
Dim lngCol As Long

With rngRange
For lngRow = .Row To .Row + .Rows.Count - 1
For lngCol = .Column To .Column + .Columns.Count - 1
CreateBody = CreateBody & Cells(lngRow, lngCol) & vbCrLf
Next lngCol
Next lngRow
End With

End Function


この方法は、コピー&ペーストではないので、
罫線等の情報は貼りつきません。

当方、thunderbirdを使用したことがなく、
また、テスト環境もないですが、参考になれば幸いです。

[返信 2] Re : thunderbird で エクセルのセルを範囲指定してコピー→本文へ貼り付け
投稿者 : ヘンリー     投稿日時 : 2021/03/21(Sun) 10:52:24
■[返信 1] ヘンリーさん(2021-03-21 10:37:28)の記事
> やりたい事がコピー&ペーストなのか
> 転記なのかはっきりしませんが、
> 転記でよければ、以下の様に
> 「文字列を組み立てる」
> という方法でどうでしょうか。

> Function CreateBody(rngRange As Range) As String
> Dim lngRow As Long
> Dim lngCol As Long

> With rngRange
> For lngRow = .Row To .Row + .Rows.Count - 1
> For lngCol = .Column To .Column + .Columns.Count - 1
> CreateBody = CreateBody & Cells(lngRow, lngCol) & vbCrLf
> Next lngCol
> Next lngRow
> End With

> End Function

> この方法は、コピー&ペーストではないので、
> 罫線等の情報は貼りつきません。

> 当方、thunderbirdを使用したことがなく、
> また、テスト環境もないですが、参考になれば幸いです。


■追記です。

>bodystring=Range(A21:E69).value
この命令は、貼り付けの命令文ではありません。
値の代入命令です。

細かいようですが、コンピュータは「おばかさん」なので、
「貼り付け」という命令と、「代入」という命令は別物です。
このような事を常に意識しておくと、
プログラミングの力がついてきます。

例えば、「貼り付け」という命令を実行したい場合、
人がやる場合、thunderbirdというメールソフトを立ち上げて、
そのメールソフトの上で右クリックメニューにある「貼り付け」という
命令を選択することになります。

それを、プログラムで実行したければ、
同じように同じ順番で記述しなければなりません。

つまり、thunderbirdを起動して
thunderbird上で右クリックをするという命令になるわけです。

その場合、以下のようなことをする必要があると思います。
thunderbirdというメールソフトをObject変数として製作する(CreateObject)
そして、その製作されたオブジェクトの貼り付けメソッドを使用する

このように考えて、それぞれネットで調べながら作成すると、
プログラミング力がついてくると思います。

[返信 3] Re : thunderbird で エクセルのセルを範囲指定してコピー→本文へ貼り付け
投稿者 : mskz     投稿日時 : 2021/03/22(Mon) 02:09:05

> このように考えて、それぞれネットで調べながら作成すると、
> プログラミング力がついてくると思います。



大変ご丁寧にありがとうございます。
当方プログラミング知識0ですが、社内の事情で先週からマクロ作成をおこなっております。
基礎的な考え方までご指導いただいて、ありがたいです。
結果的にはThunderbirdでは動作せず、outlookであれば成功したので
そちらで運用してみます。

当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2021-04-21 08:44:27 )

Page
Top