2016-12-29 20 views
-1

私のチームが使用する電子メール機能を自動化しようとしています。私はこのようなことに新人ですので、基本的なコーディングをここで許してください。私は、エラーメッセージ91のオブジェクト変数を取得またはWithブロック変数がここオブジェクト変数またはブロック変数が設定されていない(エラー91)

を設定しておりませんコードです:

Sub Notification() 
    Dim outobj, mailobj 
    Dim objUserPrmt1 As Object 
    Dim strUserPrmt1 
    Dim message, title, defaultValue As String 

    message = "Enter your issue" 
    title = "InputBox Demo" 
    defaultValue = "No Issue" 

    Set outobj = CreateObject("Outlook.Application") 
    Set mailobj = outobj.CreateItem(0) 
    Set strUserPrmt1 = objUserPrmt1.CreateItem(InputBox(message, title, defaultValue, 25, 45)) 

    With mailobj 
    .To = "[email protected]" 
    .Subject = "Notification:" strUserPrmt1 
    .Body = "Test" 
    '.Send 
    .Display 
    End With 

    'Clear the memory 
    Set outobj = Nothing 
    Set mailobj = Nothing 
    Set strUserPrmt1 = Nothing 
    Set objUserPrmt1 = Nothing 
End Sub 

は私が失敗したところ、誰かが私を見ることができます願って。

+3

これはVBScriptではなくVBAです。 objUserPrmt1は使用されますが、初期化されません。 –

+0

あなたの問題はおそらく 'strUserPrmt1'です。それを 'string'として宣言し、' strUserPrmt1 = InputBox(message、title、defaultValue、25、45) 'を使用します。 –

+0

どこを初期化する必要があるかわからない場合は、例を挙げることができますか? –

答えて

1

問題は、オブジェクト変数objUserPrmt1を宣言しましたが、何も設定していないということです。そのため、デフォルト値のNothingと表示されます。それにもかかわらず、あなたはラインで何ものこのビットを使用してみました:

Set strUserPrmt1 = objUserPrmt1.CreateItem(InputBox(message, title, defaultValue, 25, 45)) 

間違いなくエラー(あなたが質問では、約明示されている必要があります何かを)投げたラインです。

OutlookオブジェクトモデルのCreateItemメソッドを使用しようとしているようです。 Documentationは、これがApplicationオブジェクトのメソッドであることを示しています。 はすでににこのようなオブジェクト(outobj)があるので、objUserPrmt1がどのような目的を持っているのかはまったくわかりません。単にoutobjを使用しないのはなぜですか?

これを言って、あなたがして、問題の行を交換する場合:

Set strUserPrmt1 = outobj.CreateItem(InputBox(message, title, defaultValue, 25, 45)) 

あなたはおそらくまだエラー(いえない同じエラー)を取得します。これは、私がリンクしているドキュメントには、CreateItemメソッドがOlItemType constantと予想されていますが、文字列を渡しているためです。

InputBoxは、文字列を返すので、私は@AlexPは何がしたいことは、単に、おそらくあることを正しいと思う:

strUserPrmt1 = InputBox(message, title, defaultValue, 25, 45) 

文字列は、それがSetである必要はありませんオブジェクトではないので - - ちょうど割り当てられました。

コードからobjUserPrmt1を削除することをお勧めします。存在理由がなく、コードにエラーが発生しているだけです。あなたは、2本のラインを取り除くことを確認します。また

Set strUserPrmt1 = Nothing 
Set objUserPrmt1 = Nothing 

、それは変種として、現在の暗黙の宣言は十分であるものの、文字列変数としてstrUserPrmt1を宣言するために損はありません。

+0

ありがとうジョン、エラー91の問題を回避するために働いた。 –

+0

次のようなときに実行時エラー13 - 型の不一致が発生しました:.Subject = "Notification:"そしてstrUserPrmt1、アドバイス? –

+0

心配しないで、申し訳ありません、私はそれを理解しました、私は単語の代わりに&を使用する必要があります –

関連する問題