私はMSDNのチュートリアルから、Outlook用のマクロの作成方法を学びました。Type mismatch
エラーでハングアップするこのサブルーチンがあります。エラー処理をステップ実行する際の後Stop
とResume
それがに戻りNext
、クエリを終了します。
Immediateの結果セットを見ると、通常の連絡先ではなく、実際には配布メーリングリストである1つのアイテムが欠落しています。テストのために連絡先からメーリングリストを移動しましたが、エラーは発生しませんでした。
これは仕事用なので、他のメーリングリストも用意する予定です。それらを別の場所に保存する以外に、それを回避する方法のような回避策はありますか?
コードは次のとおりです。
Sub ContactName()
On Error GoTo ErrHandler
Dim ContactsFolder As Folder
Set ContactsFolder = Session.GetDefaultFolder(olFolderContacts)
MsgBox ("Contacts found: " & ContactsFolder.Items.Count)
Dim Contact As ContactItem
For Each Contact In ContactsFolder.Items
Debug.Print Contact.CompanyName
Next
Exit Sub
ErrHandler:
Debug.Print Err.Description
Stop
Resume
End Sub
リストと連絡先を区別するために、コードを次のように変更できます。
Sub ContactName()
On Error GoTo ErrHandler
Dim ContactsFolder As Folder
Set ContactsFolder = Session.GetDefaultFolder(olFolderContacts)
MsgBox ("Contacts found: " & ContactsFolder.Items.Count)
Dim Contact As ContactItem
Dim distList As DistListItem
Dim i As Integer
For i = 1 To ContactsFolder.Items.Count
If TypeOf ContactsFolder.Items(i) Is DistListItem Then
Set distList = ContactsFolder.Items(i)
Debug.Print distList.DLName
ElseIf TypeOf ContactsFolder.Items(i) Is ContactItem Then
Set contact = ContactsFolder.Items(i)
Debug.Print contact.FullName
Else
Debug.Print "Item is something else"
End If
Next i
Exit Sub
ErrHandler:
Debug.Print Err.Description
Stop
Resume
End Sub
すべての連絡先にCompanyNameがないため、テスト用にアクセスしているプロパティをCompanyNameからFullNameに変更したことに注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加