2017-05-29 7 views
0

Excelシートのcolumn:Aのすべての電子メールアドレスにOutlookを使用して電子メールを送信し、本文にWord文書を挿入しようとしています。私は、次のコードを書かれているが、それは私が実行時エラー91を私はあなたがエラーが発生した行についての情報を提供している場合に役立つことが容易になるだろうオフィス2013Vbaランタイムエラー:91

Public Sub Create_Outlook_Email() 

Dim OutApp As Object, OutMail As Object, OutWordEditor As Object 
Dim WordDoc As Object 
Dim wordfile As String 
Dim rng As Range 
Dim row As Range 
Dim cell As Range 

'Create new Outlook email 
Set rng = Range("a2:a50") 
Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 
Set OutWordEditor = OutMail.GetInspector.WordEditor 

For Each row In rng.Rows 
    For Each cell In row.Cells 

     With OutMail 
      .To = cell.Value 
      .Subject = "Your emails are moving on " & Range("e2").Value & "- don't get left behind  " 

      wordfile = Application.GetOpenFilename(Title:="Select MS Word file", MultiSelect:=False) 
      Set WordDoc = GetObject(wordfile) 
      WordDoc.Content.Copy 
      WordDoc.Close 
      OutWordEditor.Content.Paste 

      'See if Outlook is using Word to edit messages 

      .display 
      .send 
     End With 

     Set OutApp = Nothing 
     Set OutMail = Nothing 

     Set OutWordEditor = Nothing 
     Set WordDoc = Nothing 

    Next cell 
Next row 

End Sub 

答えて

1

を使用していいます。たとえば、次のエラーを持って、それはそれはあなたの問題の原因である可能性が非常に高いです:

Set OutWordEditor = Nothing 

あなたは、ループ内でこれをやっているが、その後、あなたは次の反復でOutWordEditor変数を設定してはいけません。したがって、2番目の反復では、オブジェクトに「オブジェクトが設定されていません」と表示されます。すべてでは

For Each row In rng.Rows 
For Each cell In row.Cells 
... 
Next 
Next 

Set OutMail = OutApp.CreateItem(0) 
Set OutWordEditor = OutMail.GetInspector.WordEditor 
ほかに

、次の2つのネストされたループを必要といけない、ちょうど1:

私が提案する解決策は、あなたがループ内にこれらのステートメントを移動することですあなたの(単一ループ)は次のようになります:

For Each cell In rng.Cells 
    If Len(Trim(cell.Value)) = 0 Then Exit For ' <-- to stop at emty cell 
    Set OutMail = OutApp.CreateItem(0) 
    Set OutWordEditor = OutMail.GetInspector.WordEditor 
    ... 'Rest of the loop 
Next 
+0

@ YowE3K IIRC過去にこれについての議論がありました:)このように単語を開いたりファイルを解析したりするこの方法も正しいです。適切なアプリケーションがレジストリに見つかります。 –

+0

いいえ - それについての私との議論はありません。 (私は** **とにかく覚えています)しかし、私はあなたを信じるでしょう。 – YowE3K

+0

@ YowE3Kそれはおそらくあなたと一緒ではなかったが、私は正確に覚えていないが、私たちがお互いに "会った"初期の時代であったと確信している:P –

関連する問題