質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1382閲覧

メールのテンプレートの書式設定を保存したまま宛名などを変えたい

imbzer

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/04 05:38

編集2021/10/04 06:52

質問

win32comでメール自動送付のプログラムを作っていますが、メールの先頭に書く宛名を変えるためにformatメソッドを使いました。

しかしformatメソッドの直後、テンプレートで設定されていた書式(文字の色、フォント、太さなど)やタブなどが初期化されてしまいました。

format以外で宛名など特定の文字列を変える方法はあるのでしょうか?
教えていただけたら幸いです。

該当のソースコード

Python

1name = "imbzer" 2 3outlook = win32com.client.Dispatch("Outlook.Application") 4mail = outlook.createItemFromTemplate(temp_path) 5 6mail.body = mail.body.format(name) 7#mail.HTMLbody = mail.HTMLbody.format(name)

実行結果

テンプレート

{} 様
締め切りは××日です。
よろしくお願いします。

失敗例1

imbzer 様
締め切りは××日です。
よろしくお願いします。

失敗例2

imbzer 様

締め切りは××日です。

よろしくお願いします。

試したこと

mail.Bodyの代わりに、mail.HTMLBodyのほうにFormatメソッドを使ってみましたが失敗例2の通り、一文ごとに不要な改行がされていました。

補足情報(FW/ツールのバージョンなど)

・使用言語はPythonです。
・win32comを用いてOutlookのVBAを実行しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hex309

2021/10/04 06:27 編集

formatの引数のnameの内容はどうなっていますか? Pythonは詳しくないのですが、OutlookVBAでメール本文に書式設定するのであれば、HTMLBodyの使用が基本となります。 ですので、余分な改行の原因を調べるのが早いのでは、と。
hex309

2021/10/04 13:38

私の不勉強だと思うのですが、提示いただいた「imbzer」は何を示しているのでしょうか。 テンプレートの内容をどのようにFormatメソッドで変換しているのか、その過程で改行がどのように扱われているのかがわからないと、正直なんとも言えません。 テンプレートファイルをHTML形式にできればそれで良いような気もしますが。
hex309

2021/10/04 22:37

すみません。「imbzer」は宛名でしたね。 失礼しました。
guest

回答1

0

自己解決

テンプレートファイル(msg形式)からcreateItemFromTemplateで読み込んでいましたが取りやめ、ソースコード上でテンプレートのHTMLコードを書くことで解決しました。

HTML形式でメールを編集したほうが、フォントなどの設定もできるので便利でした。

Python

1name = "imbzer" 2 3outlook = win32com.client.Dispatch("Outlook.Application") 4mail = outlook.createItem(0) 5 6mail_temp = ''' 7<html> 8<body> 9{} 様<br> 10締め切りは<b>××日</b>です。<br> 11よろしくお願いします。 12<body> 13<html> 14 15''' 16 17mail.HTMLbody = mail_temp.format(name) 18

投稿2021/10/05 04:51

imbzer

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問