2015-09-10 3 views
0

Я пытаюсь определить переменную MailItem в VBA в Outlook, 2013. Тем не менее, каждый раз, когда я печатаю Dim почту AS MailItemMailItem обновляется до MailItem. Насколько я понимаю, это не правильный тип. Когда я попробую MsgBox TypeName (mail), он показывает Ничего.Перспективы VBA MailItem верблюжьего

У меня нет подсказки, почему это происходит. Любая помощь будет действительно оценена. Благодаря!

Весь код выглядит следующим образом

Private Sub Items_ItemAdd(ByVal newMail As Object) 

    'On Error Resume Next 
    On Error GoTo ErrorHandler 

    Dim mail As Outlook.mailItem 
    If TypeName(newMail) = TypeName(mail) Then  ***<-- I want this if block to execute. But it doesn't!*** 
     Set mail = newMail 
     SaveAttachments (newMail) 
    End If 
ProgramExit: 
    Exit Sub 
ErrorHandler: 
    MsgBox Err.Number & " - " & Err.Description 
    Resume ProgramExit 
End Sub 
+0

Вы знаете, что VBA не чувствителен к регистру, не так ли? Это означает, что «MailItem» и «mailItem» довольно похожи. – duDE

+0

да. Я это знаю. Однако почему TypeName не показывает ничего? –

+0

http://stackoverflow.com/help/mcve После ответа Димитрия вам может понадобиться что-то вроде Set mail = ActiveInspector.currentItem – niton

ответ

0

TypeName будет отображать имя типа живого объекта. Если он никогда не был инициализирован (null), вы увидите «Ничего»

Это, как говорится, когда вы видите, что инструкция dim изменилась? В редакторе Outlook VBA?

+0

Я все еще не уверен в решении. Я добавил код выше. Помогите мне взглянуть на это! –

+0

VBA не чувствителен к регистру, поэтому любая декларация будет работать. Вы получаете «Nothing» из TypeName, потому что переменная не была инициализирована. Это прекрасно. Вы должны изменить «If TypeName (newMail) = TypeName (mail)» на «If TypeName (newMail) =« MailItem »" –

Смежные вопросы