ForEachLoop、
あなたの質問はおおむね答えられたようです。わかりやすくするために、またこの質問に回答を提供するために、少しだけ情報を追加します。MicrosoftフォーラムのユーザーであるOssiemacは、 Siddarth Routが述べているように、LateBindingが進むべき道であると述べました。Siddarthが示唆しているように、これは参照について心配する必要がないことを意味します。
Ossiemacは、電子メールの送信にLateBindingを使用するためのサンプルコードをいくつか提供しました。これを再フォーマットして、ここに配置しました。
Private Sub btnLateBindMethod_Click()
' Variables used for LateBinding
Dim objOutlook As Object 'Outlook.Application
Dim objEmail As Object 'Outlook.MailItem
Dim objNameSpace As Object 'Outlook.NameSpace
Const OutLookMailItem As Long = 0 'For Late Binding
Const OutLookFolderInbox As Long = 6 'For Late Binding
Const OutLookFormatHTML As Long = 2 'For Late Binding
Dim strSubject As String
Dim strAddress As String
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
On Error GoTo 0
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.Application")
Set objNameSpace = objOutlook.GetNamespace("MAPI")
objNameSpace.GetDefaultFolder(OutLookFolderInbox).Display
End If
Set objEmail = objOutlook.CreateItem(OutLookMailItem)
strSubject = "Hello World"
With objEmail
'.To = strToAddress 'Commented to prevent accidental send
.Subject = strSubject
.BodyFormat = OutLookFormatHTML
.Display
'Full Name of window can change depending on Tools -> Options -> Mail Format
'Changing this option for outgoing mail changes the window name.
'However, AppActivate appears not to require entire name but needs up to end
'of - Message which is included in heading following the Subject string
'irrespective of the Mail Format option chosen.
AppActivate (strSubject & " - Message")
End With
End Sub
ジミーペナは、EarlyBindingとLateBindingの対比について議論している記事を持っています-
〜JOL