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

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

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

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

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

3685閲覧

VBAで複数作成したHTML形式のメールがテキスト形式に変換される

UOAprogram

総合スコア0

VBA

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

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/08/24 05:42

編集2021/08/24 08:01

プログラミング等に関しては初心者です。素人知識でVBA等を利用しています。
事象の原因がわからず、質問です。
Outlookテンプレートから、複数同じ文面でメール作成されるように、以下のエクセルVBAを設定しています。
作成されたリストからできたメールはドライブのフォルダに保存されます。
保存された際、元のテンプレートはHTML形式で作成されているのですが、出来上がったメールファイルはテキスト形式に変更されて保存されしまう事象に困っています。
フォントやテキストの色などが反映されず、HTML形式にならない原因を探っています。
ただ、出来上がったメールファイルをOutlookの送信トレイに入れると、元テンプレートのフォントが反映されます。
フォントが正確に反映できているか送信トレイにいれないと確認できないため、ドライブ内に出来上がった時点でその通りに反映できるようにしたいと考えています。
Outlookの設定の問題でしょうか?VBAで何か指定を入れると解決されますでしょうか?
基本的な知識の問題かもしれませんが、よろしくお願いいたします。

Enum 列
宛先 = 1
CC
BCC
部屋番号
請求番号
件名
リンク
リンク2(差し込みするものが増えれば、ここを増やします)
End Enum

Sub メール作成()
Dim ol As New Outlook.Application
Dim m As mailItem

Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row
For i = 2 To MaxRow
Set m = ol.CreateItemFromTemplate("\●●-SV\△△\INVOICE\A_TEXT_JP\INVOICE_JP_A.oft") 
m.To = Cells(i, 列.宛先).Value
m.CC = Cells(i, 列.CC).Value
m.BCC = Cells(i, 列.BCC).Value
m.Subject = Cells(i, 列.件名).Value
m.Subject = Replace(m.Subject, "(Unit)", Cells(i, 列.部屋番号).Value) 
m.Subject = Replace(m.Subject, "(Month)", Cells(i, 列.請求番号).Value)
m.HTMLBody = Replace(m.HTMLBody, "(リンク)", Cells(i, 列.リンク).Value)
m.HTMLBody = Replace(m.HTMLBody, "(リンク2)", Cells(i, 列.リンク2).Value)

m.SaveAs \●●-SV\△△\INVOICE\A_TEXT_JP\作成済_Created" & Cells(i, 列.部屋番号).Value & ".msg"

Next i
End Sub

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

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

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

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

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

guest

回答2

0

こちらでは事象が再現しなかったのですが、試しに以下の一文を入れてみたら改善しないでしょうか。

VBA

1 m.BodyFormat = olFormatHTML

投稿2021/08/24 10:44

jinoji

総合スコア4585

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

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

UOAprogram

2021/08/25 00:33

ご回答ありがとうございます。 ご提案の一文を入れてみましたが、改善しないようです。 VBAには問題がないと思われるので、Outlookの設定を詳しく確認してみようと思います。
guest

0

説明すべきところを箸折ってる印象を受ける。
何を聞かれてるかイマイチ分からないけど、保存先のmsgファイルからテンプレートが参照出来ないからとかどうでしょう?

テンプレートのリンクをフルパスにしてみては。

ドライブのフォルダという意味がわからないのですが、どういう意味で言ってますか?

投稿2021/08/24 07:09

Mupipi

総合スコア6

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

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

UOAprogram

2021/08/24 07:48

ご回答ありがとうございます。質問の仕方が至らなく足りないところがあり、すみません。 テンプレートはパソコンのC:ドライブのフォルダ内にあり、以下の通りとしていました。 Set M = objOL.CreateItemFromTemplate("C:\テスト\INVOICE_JP_A.oft") としておりました。 実際のところは、職場で他の人も操作する必要があるため、社内サーバーの共用フォルダ内に置き指定しています。 現在、テンプレートのパスは以下のように設定しています Sub メール作成() Dim ol As New Outlook.Application Dim m As mailItem Dim MaxRow: MaxRow = Range("A1").End(xlDown).Row For i = 2 To MaxRow Set m = ol.CreateItemFromTemplate("\〇〇-SV\●●\△△\INVOICE\A_TEXT_JP\INVOICE_JP_A.oft") また、作成されたメールの保存先の指定は m.SaveAs "\●●-SV\△△\INVOICE\A_TEXT_JP\作成済_Created\" & Cells(i, 列.部屋番号).Value & ".msg" となっております。 VBAは機能し、メールは指定した保存先に作成されますが、質問で書きましたように、テンプレートファイルがHTML形式であるにも関わらず、テキスト形式で作成されてしまいます。 知識不足で、原因の特定ができないため、知識をお借りできればと思っています。 素人質問で申し訳ありませんが、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問