2016-11-02 5 views
0

これは私のコードです。私は重複する名前を持つ列Cと一意のIDを持つ列Bを持っています。どの固有IDがどの名前と一致するかを調べ、名前に電子メールを送信して電子メールに一意のIDを貼り付ける必要があります。最初のMe.Cellsにエラーが表示されます。辞書を作成しています。 Meキーワードの無効な使用エラー

サブsendEmails()

Dim dict_emails As Scripting.dictionary 
Set dict_emails = New Scripting.dictionary 
Dim objOutlook As Object 
Dim objMailMessage As Object 
Set objOutlook = CreateObject("Outlook.Application") 
Dim row As Range 
Dim table As ListObject 
Dim row_index As Long 
Dim strEmail As String 
Dim strExeptionID As String 

ActiveWorkbook.Sheets("New 0-30").Select 

Set table = ActiveSheet.ListObjects("New_030_Table") 

For row_index = 1 To table.DataBodyRange.Rows.Count 
    strEmail = table.DataBodyRange(row_index, 3).Value 
    strExceptionID = table.DataBodyRange(row_index, 2).Value 

    If Not dict_emails.Exists(strEmail) Then 
     ' first time we have seen this name 
     dict_emails.Add strEmail, strExceptionID 
    Else 
     dict_emails(strEmail) = dict_emails(strEmail) & vbCrLf & strExceptionID 
    End If 
Next 

Dim var_key As Variant 
For Each var_key In dict_emails.Keys 
Set objMailMessage = objOutlook.CreateItem(0) ' create new mail 
    With objMailMessage 
     .To = "" & var_key 
     .CC = "" 
     .BCC = "" 
     .Subject = "Exceptions Set to Expire in Less Than 30 Days" 
     .Body = "You have the following exceptions set to expire: " & vbCrLf & dict_emails(var_key) 
     .Save ' save as draft 
    End With 
Next 

End Subの

+6

あなたのコードがシートモジュール(そこに含まれているワークシートを参照する)にあり、通常のモジュールではない場合、 'Me'が動作します。 'Me'はオブジェクトコードが"自身 "(それが実行しているオブジェクトインスタンス)を参照する方法です。通常のモジュールのコードはそのような環境にはありません(つまり、オブジェクトインスタンスで実行されていません)。 –

+1

どこでも変数 'Row'を定義していません。 (おそらく、モジュールやプロジェクトレベルの範囲で定義していて、質問にそのコードの一部が含まれていないのではないでしょうか?) – YowE3K

答えて

1

私は同じ問題にあったと私は解決策をfoung !! しかし、誰も参照リスト "Microsoft Scripting Runtime"を信じていないと判断し、優先順位をトップ3に設定します。それは動作を開始し、エラーはなくなります。

関連する問題