• 締切済み

outlookでマクロエラー

メールを複数人に送信する場合、受信者に知られないように「B.C.C.」で送らなければならないのですが、 ついうっかり「To」や「C.C.」にアドレスを入れてしまい、相手からクレームをもらうということがありました。 それを未然に防ぐため、「To」や「C.C.」にアドレスに150文字以上入れたらアラートを出す、というマクロを以下のように作り、Visual Basic Editorに組み込みました。 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim strSubject As String strTo = Item.To strCC = Item.CC If Len(strTo) >= 150 Or Len(strCC) >= 150 Then Prompt$ = "ToかCCが150文字を超えています。本当に送信しますか?" If MsgBox(Prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "注意!") = vbNo Then Cancel = True End If End If End Sub このマクロは正常に動作するんですが、 問題は会議出席依頼を送信か承諾するときに 実行時エラー'438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。 というエラーが出るようになりました。 「終了」「デバッグ」「へルプ」が選択でき、 そこで「終了」を押すと普通に会議依頼は完了するのでし仕事上の問題はありません。 そこで「デバッグ」をすると strTo = Item.To のところが黄色くハイライトされます。 マクロも正常に動き、会議依頼もできるのですが、 毎回このエラーがでるので、なんとか直したいと思っています。 何か解決する方法ありますでしょうか。 環境はwindows XP、outlook2007です。 ご教授よろしくお願いします。

みんなの回答

回答No.1

会議出席依頼のオブジェクト (MeetingItem) には To や Cc はありません。 単に会議出席依頼でのチェックを無視するだけでよいなら、以下のようなコードにすればよいでしょう。 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) Dim strSubject As String If Item.MessageClass Like "IPM.Meeting.*" Then Exit Sub End If strTo = Item.To strCC = Item.CC If Len(strTo) >= 150 Or Len(strCC) >= 150 Then Prompt$ = "ToかCCが150文字を超えています。本当に送信しますか?" If MsgBox(Prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "注意!") = vbNo Then Cancel = True End If End If End Sub

benziee
質問者

補足

すばやい回答ありがとうございます。 コピペして使ってみましたが、同じエラーが出て、 strTo = Item.To のところがハイライトされます。 なにか根本的な設定がまちがっているのでしょうか。 引き続きよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • excelのマクロで2007だとエラーが。

    excel2003では動いていたマクロが2007では、エラーになってしまいます。 中断→デバッグ→再開→中断→デバッグ→再開、、、、 と中断しながらも10~20行ずつ進みます。 解決法がありましたら教えてください。 ※デバッグで確認すると「end if」で中断します。 Sub 仕分() Dim n As Long Dim nRow As Long Worksheets("シート名").Activate nRow = Range("A1").End(xlDown).Row For n = 2 To nRow If Cells(n, 6) = "条件1" Then Cells(n, 22) = "仕分け" ElseIf Cells(n, 6) = "条件2" Then Cells(n, 22) = "仕分けしない" ElseIf Cells(n, 6) = "条件1" And Cells(n, 7) = "条件2" Then Cells(n, 22) = "仕分け2" Else Cells(n, 22) = "OK" End If Next n End Sub

  • マクロのエラーの原因がわかりません。

    マクロ初心者です。 下記のような簡単なマクロを書きましたが、「型が一致しません」のエラーが出てしまいます。 原因と修正方法をご教授お願いいたします。 For Each c In Range("a1:du82") If c = 1 Then  ←この構文でエラーとなります。 c.ClearContents End If Next c End Sub

  • Excelのマクロについて

    文字列から数値だけを抽出するマクロを見つけたのですが、抽出するデータを選択してから実行しなければなりませんでした。 抽出するデータはAセル以下にしかないので、データを選択しないでも実行できるようにするにはどうしたら良いのでしょうか? 宜しくお願いします。 以下見つけたマクロです。  Sub test()  Dim mydata As String  Dim c As Range  Dim i As Integer  For Each c In Selection   mydata = ""  For i = 1 To Len(c)   If Mid(c, i, 1) >= 0 And Mid(c, i, 1) <= 9 Then   mydata = mydata & Mid(c, i, 1)    End If   Next   c.Offset(0, 1) = mydata   Next  End Sub

  • マクロがエラーになります

    下記のようなマクロ使いたいのですがエラーになり   動作しません 実行時エラー'1004': アプリケーション定義またはオブジェクト定義エラー のエラーになりますどのように直せばよいのでしょうか? よろしくお願いします。 Sub test() Dim ReturnMessage As VbMsgBoxResult ReturnMessage = MsgBox("VBEを閉じますか?", vbYesNo, "確認") If ReturnMessage = vbYes Then Application.VBE.MainWindow.Visible = False End If End Sub

  • エクセルマクロのCallとコンパイルエラー

    エクセルマクロのCallとコンパイルエラー よく、教えていただくのですが作ったマクロを呼び出すのに、 ・Call 作成したマクロ とか教えてもらいますが 標準モジュールのツリーには ・Module1 ・Module2 ・オートオープン ・リセット とかがあって ・Call リセット とかにして実行すると ・コンパイルエラー (モジュールではなく、変数またはプロシージャを指定してください) となってしまいます。 Callの後にはどういう風にすればいいのでしょうか? -------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$5" And Len(Range("B5").Value) > 1 Then Call 印刷←印刷はModule2です。 End If End Sub ------------- で印刷のマクロの一部に Call リセット をつけたたしたらなりました。 よろしくお願いします。

  • エクセルのマクロについて

    Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "ア") = 0 Then If InStr(.Cells(i, "D"), "ア(半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub このエクセルマクロはC列に「ア」があって、D列に「ア(半角)」の文字がない場合はメッセージというマクロなのですが、このマクロをア~ンまで同じ作業をしたいのですが、ひとまとめにマクロを組む事はできるのでしょうか?できる場合どのようにすれば良いでしょうか? 下記のようにして見たのですができませんでした。 Sub ア_Click() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.count, "C").End(xlUp).Row If InStr(.Cells(i, "C"), "[ア-ン]") = 0 Then If InStr(.Cells(i, "D"), "[ア-ン](半角)") = 0 and .Cells(i,"D")<>"" Then MsgBox i & "行目" Cells(i, 2).Offset(0, -1).Value = "★" End If End If Next i End With End Sub

  • WORDマクロエラー

    Wordでテキストボックスをレイアウト枠に変換するマクロを作りました。 簡単なコードだと思うのですが、「オブジェクト変数またはブロック変数が設定されていません」というエラーが出てしまいます。 どこに原因があるのでしょうか? Sub テキストボックス変換() Dim i Dim sp As Shape For i = 1 To ActiveDocument.Shapes.Count If sp.Type = msoTextBox Then sp.ConvertToFrame End If Next End Sub

  • Outlookの再送信フォームにてマクロで宛先を取得する方法について

    Outlookの再送信フォームにてマクロで宛先を取得する方法について メールサーバーにEXCHANGE SERVER、メールクライアントにOutlook 2003を利用しています。 TOとCCに社外ドメインのアドレスが含まれていないか送信前にチェックするマクロを作成しました。 通常のメールの送信時には問題なく動作しているのですが、 配信不能のメールを再送信する際にエラーが出ます。 再送信フォームにて、メールの送信前に宛先を取得する方法をご存知の方がいらっしゃれば、 ご回答をお願いいたします。 【ソース】 ThisOutlookSessionにマクロを記述 Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)   Dim i As Integer   For i = 1 To Item.Recipients.Count   ← この行でエラーが出ます。     With Item.Recipients.Item(i)     ~ 省略 ~     End With   Next End Sub 【エラーメッセージの内容】 実行時エラー '438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。

  • Excel  VBAのマクロについて

    以下のようなマクロを作りました。 P4に開始番号P6に終わりの番号があるのですが、P4=P6、つまり、一つだけのシートを作成する分には問題なく動きます。しかしP4に1、P6に5と範囲を増やすとエラーが出て動きません。どこをなおしたらよろしいでしょうか? Option Explicit Sub 一括() Dim I As Worksheet Dim SheetName As String Dim Prompt As String Dim Col As Integer Dim Cell As Range Dim Row As Long Dim hani As Long For hani = Range("P4").Value To Range("P6").Value Set I = ActiveSheet SheetName = Cells(hani + 4, "K").Value & "(" & Cells(hani + 4, "B") & ")" Prompt = SheetName & "が存在します。" Sheets("基本シート").Copy After:=Sheets("基本シート") On Error GoTo 100 ActiveSheet.Name = SheetName On Error GoTo 0 Range("X3") = I.Cells(hani + 4, "B") Range("E8") = I.Cells(hani + 4, "C") Range("A13") = I.Cells(hani + 4, "D") For Col = 0 To 8 Step 4 Set Cell = I.Cells(hani + 4, "D").Offset(, Col) If Cell > 0 Then Prompt = "該当する日付がありません。" & Cell.Address On Error GoTo 100 Row = WorksheetFunction.Match(Cell, [A:A], 0) On Error GoTo 0 Cells(Row, "E") = I.Cells(hani + 4, "E").Offset(, Col) Cells(Row, "H") = I.Cells(hani + 4, "F").Offset(, Col) If Col < 8 Then Cells(Row, "Y") = I.Cells(hani + 4, "G").Offset(, Col) End If End If Next Col Next hani End 100 If Err <> 1004 Then Error Err End End If MsgBox Prompt, vbCritical Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Sheets(1).Select End Sub

  • マクロエラー処理

    下記のマクロを実行すると、If (.Range のところでコンパイルエラー参照が不正または不完全です。というメッセージが出るのですが、どこを修正すればよいのでしょうか 教えてください。 Sub 再表示1() Dim SheetName As String Dim i As Integer Dim LastRow As Integer Dim rng As Range LastRow = 3000 '最終行の番号 Sheets("ACT").Select For i = 6 To LastRow If (.Range("D" & i) = "A310" Or .Range("D" & i) = "A505") And .Range("V" & i) < 0 Then .Cells(i, "W").Resize(1, 3).ClearContents End If Next Stop End With End Sub

このQ&Aのポイント
  • 5年使ったノートPCを買い替える際のおすすめポイントと予算について解説します。
  • ノートPCの選び方や予算に悩んだときの解決策や中古品の利用方法についてご紹介します。
  • ノートPCの新品購入には予算が足りない場合、オークションや中古専門店の利用を検討することもおすすめです。
回答を見る

専門家に質問してみよう