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

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

ただいまの
回答率

90.52%

  • VBA

    1783questions

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

  • Outlook

    57questions

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

VBAを使って異なったメールを複数送信する際にエラーが出ます。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 134

putimaru

score 2

Enum 列
宛先 = 1
企業名
氏名
件名
添付ファイル1
添付ファイル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("c:\work\test.oft")
m.To = Cells(i, 列.宛先).Value
m.Subject = Cells(i, 列.件名).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル1).Value
m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル2).Value

m.HTMLBody = Replace(m.HTMLBody, "□□", Cells(i, 列.企業名).Value)
m.HTMLBody = Replace(m.HTMLBody, "●●", Cells(i, 列.氏名).Value)
m.SaveAs "c:\work\" & Cells(i, 列.氏名).Value & ".msg"
Next i
End Sub

某サイト参考にさせて頂き実行してみました。
何度やってもコンバイルエラーと出ています。

原因が分かりません。

サイト上と同じExcelファイルを例として作成し
VBAを書いてみています。
どこに原因があるのか、わかる方いらっしゃいましたら
教えて頂きたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ttyp03

    2018/07/10 11:59

    どの行で何のエラーが出るのが詳細を書いてください。

    キャンセル

回答 2

0

何度やってもコンバイルエラーと出ています。

VBAの場合、コンパイルエラーはそもそも処理として成り立っていない場合に起きるエラーです。
何度「実行」しようが、実行自体出来ないので意味がありません。

otnさんの回答にもあるようにエラーメッセージを元にコードを修正してください。
修正すべき点がわからないのであれば、具体的なエラーメッセージ、どこがハイライトされるのか、など詳細な情報を記載してください。

恐らく「某サイト」の記載通りに操作していないのが原因だと思われますが。


また、コードの前後に行を追加しバッククォート(Shift + @ で入力できる文字)を3個挿入してください(コード部を選択して<code>ボタンでも良いです)。

挿入することで以下のような表示になり、コードが見やすくなります。

Enum 列
    宛先 = 1
    企業名
    氏名
    件名
    添付ファイル1
    添付ファイル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("c:\work\test.oft")
        m.To = Cells(i, 列.宛先).Value
        m.Subject = Cells(i, 列.件名).Value
        m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル1).Value
        m.Attachments.Add "c:\work\" & Cells(i, 列.添付ファイル2).Value

        m.HTMLBody = Replace(m.HTMLBody, "□□", Cells(i, 列.企業名).Value)
        m.HTMLBody = Replace(m.HTMLBody, "●●", Cells(i, 列.氏名).Value)
        m.SaveAs "c:\work\" & Cells(i, 列.氏名).Value & ".msg"
    Next i
End Sub

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

-1

コンパイルエラーなら、どこにどういうエラーがあるかはメッセージを見れば分かるので、それを直せば良いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Excel vbaの振り分けについての質問

    excelのvbaに関しての質問です。 以下は、A列の要素を4つに適当に分け、B列〜E列に表示するプログラムです。 このプログラムを、 ・B10〜Cells(Rows.Count

  • 解決済

    全シートに対して連続実行する方法について

    追加したいこと。  1、グラフ選択機能(グラフの名前がそれぞれ違うのでそれ  をどう解決すれば良いのか…)  2、次シートへの自動移動 これは、全11シートしかないのですがもう

  • 解決済

    VBA 実行時エラー ’1004’ アプリケーション定義またはオブジェクト定義のエラーです

    前提・実現したいこと ここに質問したいことを詳細に書いてください VBAでタスクをガントチャートに表示して管理するアプリを作っています。 「タスク1つにつきエクセル方眼紙3マ

  • 解決済

    excelの文字列に違う文字列を挿入する

    A列にhtmlの文字列が入っており、<img src="">というも文字列の中に B列のランダムなURLを5000行一気に挿入したいと考えています。 他の列に記載したものをA列

  • 受付中

    VBAを用いてバッチファイルを作成するツール

    前提・実現したいこと 業務でVBAを用いてバッチファイルを作成するツールが必要となりました。 ActiveDirectoryのUID棚卸しの為に使用します。 添付画像のような

  • 受付中

    VBAで別のブックのシートに記録する

    前提・実現したいこと 複数の月ごとになっているシートにデータが2列同行数記録されています。その2列のデータを用いてある計算をして、別ブックの月ごとのシートに計算結果を次々に記録して

  • 解決済

    VBA高速化について

    20個のエクセルファイルを読み込み、特定のシートにあるテーブルから特定の値を探し出し、その右横にあるセルの値を取り出します。 集計用のエクセルのテーブルでも、同じ特定の値をテーブル

  • 解決済

    VBA Dictionary 取り出し方にて質問

    VBAにて下記実装を行いました。 Dim dictionary As Variant Set dictionary = CreateObject("Scripting.Dict

同じタグがついた質問を見る

  • VBA

    1783questions

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

  • Outlook

    57questions

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