7

ネットワーク共有に.dotmテンプレートファイルがあります。Word、Office、およびOutlookオブジェクトライブラリへの参照を含むマクロがあります。WindowsXPとWindows7、およびMicrosoft Office2007とOffice2010の2つの異なるプラットフォームを使用します。ユーザーがテンプレートファイルを開くと、WordとOfficeの参照が自動的に調整され、それに応じて調整されます(つまり、Microsoft Word 12オブジェクトに設定されます)。ライブラリまたは必要に応じてMicrosoftWord14オブジェクトライブラリ)、およびマクロは問題なく実行されます。

Microsoft Outlook Object Libraryは、バージョン12から14に正しく切り替わりません。バージョン14から12に正しく切り替わりません。その場合、ライブラリが見つからないというエラーが表示されます。これはバグですか?回避策はありますか?私が見落としているものは?

4

1 に答える 1

3

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

于 2012-07-27T22:05:02.087 に答える