2012-06-25 27 views
7

Ağ paylaşımında .dotm şablon dosyası var. Word, Office ve Outlook nesne kitaplıklarına başvurulan makrolar vardır. Microsoft Office 2007 ve Office 2010 ile birlikte iki farklı platform, Windows XP ve Windows 7 kullanıyoruz. Kullanıcılar şablon dosyasını açtıklarında, Word ve Office için başvurular otomatik olarak ve buna göre ayarlanır (yani, Microsoft Word 12 Nesnesi'ne ayarlanırlar) Kütüphane veya Microsoft Word 14 Object Library gerektiği gibi) ve makrolar sorunsuz bir şekilde çalışır.Outlook Nesne Kitaplığı Sürüm 12 ve 14 arasında geçiş yapmıyor

Microsoft Outlook Nesne Kitaplığı 12'den 14'e kadar düzgün bir şekilde geçiş yapar. 14'den 12'ye kadar düzgün bir şekilde geçiş yapmaz. Bu durumda, libary'nin bulunamadığı hatası verilir. Bu bir hata mı? Bir çözüm var mı? Baktığım bir şey mi?

+5

'EarlyBinding'i kullandığınıza inanıyorum 'LateBinding (LB)' yi kullanmayı düşündünüz mü? LB'nin avantajı, farklı bilgisayarlarda çalıştırılan farklı sürümler hakkında endişelenmenize gerek olmamasıdır. Kod her zaman kodun çalıştığı pc'de mevcut olan sürümle bağlanacaktır. Linkine bakınız: http://support.microsoft.com/kb/245115 –

+0

Teşekkürler. Bu seçeneği yedekte saklıyorum. Daha ziyade, diğer iki referansın neden her iki yönde otomatik olarak güncellendiğini soruyorum, ancak Outlook'un özellikle bu özelliği yoktur. Bu şekilde olsaydı, Excel VBA kullanarak aynı soruna koştum, – ForEachLoop

+0

geç bağlama kullanmanız gerekir. Ayrıca, Microsoft Office ve Microsoft Excel kitaplıklarına yapılan başvuruların (eski ciltli) 12 ve 14 sürümleri arasında otomatik olarak değiştirildiğini, ancak Microsoft Outlook'a yapılan başvurunun da yapmadığını da not ediyorum. Yani, 12'den 14'e kadar auomatik olarak değişiyor, ancak asla 12'ye geri dönüyor. – comecme

cevap

3

ForEachLoop,

Sorunuzun ölçüde cevap alınmış görünüyor. Netlik için sadece biraz bilgi ekleyeceğim ve bu soruyu bir cevap ile vereceğim. Microsoft Forum, Ossiemac'taki bir kullanıcı, Siddarth Rout tarafından belirtildiği gibi LateBinding was the way to go olduğunu belirtti. Siddarth'ın ima ettiği gibi, bu, referanslar hakkında endişelenmenize gerek olmadığı anlamına gelir. -

~ Jol

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 

Jimmy Pena contrast of EarlyBinding and LateBinding tartışırken bir makale vardır:

Ossiemac ben reformasyon ve burada yerleştirdiğiniz, bir e-postanın gönderilmesi halinde LateBinding kullanmak için bazı örnek kodlar sağlanan

+1

Teşekkürler . Geç bağlayıcı kullanarak bitirdim. Bu harika bir yazı! Editörün pek çok harika özelliğini kaybettiğiniz için çözüm garip. Ayrıca, bir derleyiciyi (Visual Studio gibi) kullanırsanız, örneğin, Word ve Excel 2007 ve 2010'u yan yana yükleyerek ve hangi sürümü derlemek istediğinizi seçerek, bu sorunu çözebilirsiniz. Ne yazık ki, Outlook'un iki sürümü yan yana yüklenemez, bu yüzden her nasılsa geç bağlama ile sıkışmış konum. – ForEachLoop

+0

Büyüleyici! Çalıştığına sevindim ve VS kullanarak derlemenin farklı sürümleri arasında geçiş kavramı ileride daha fazla araştırma yapmayı gerektiriyor ... Uygulamaya dair detaylar için teşekkürler! ~ JOL – JackOrangeLantern

+0

Bunun için teşekkürler, bu çok yardımcı oldu. Gerekli olan tüm sabitler için Google'a posta öğeleri yerine takvim randevuları ile uğraştığım için başvurdum, ancak bu da beni tekrar çalıştırdı. Bunu, Outlook'un farklı sürümleri nedeniyle yapmak zorundayım. –

İlgili konular