2013-10-24 126 views
0

我正在編寫需要在許多Word版本(2003到2013,減去2008)中工作的模板的代碼。我已經接受,它不會在所有這些版本中編譯。我主要在Word 2010中編寫我的代碼。到目前爲止,我一直能夠在2010年編譯它,但現在我已經遇到了一個絆腳石。如何在VBA模板中使用Word 2013參數並在Word 2010中編譯

我需要使用我定義的特定用戶名爲文檔添加評論。我通過在變量中保存當前用戶名和用戶初始化來設置它們,將它們設置爲我想要的,添加我的評論,然後重置參數。夠簡單。但是,在Word 2013中,必須設置一個附加參數才能使其工作:Application.Options.UseLocalUserInfo。由於這在Word 2010中不存在,我無法編譯。我認識到這主要只是一個不便(我可以註釋掉代碼,檢查編譯問題,然後取消註釋)。但我想檢查一下,看看是否有更好的,不太狡猾的解決方案。我對跨版本兼容性的大部分經驗是使用編譯器常量和後期綁定,這兩者在這裏都沒有幫助(據我所知)。

基本代碼如下。謝謝!

With Application 
     sDocAuthorName = .UserName 
     sDocAuthorInitials = .UserInitials 
     If IsWord2013 = true Then bUseLocal = GetUseLocalUserInfo 
    End With 

    With Application 
     .UserName = sQAAuthorName 
     .UserInitials = sQAAuthorInitials 
     If IsWord2013 = true Then .Options.UseLocalUserInfo = True 
    End With 

    'Do something 

    With Application 
     .UserName = sDocAuthorName 
     .UserInitials = sDocAuthorInitials 
     If IsWord2013 = true Then .Options.UseLocalUserInfo = bUseLocal 
    End With 
+0

'應用.Options.UseLocalUserInfo'-你從哪裏得到它?我無法在[此列表]上看到此內容(http://msdn.microsoft.com/zh-cn/library/dn353005.aspx) –

+0

檢查[此](http://stackoverflow.com/questions/6325486/ if-else-end-if-what-do-hash-signs-mean-in-vba)out。我見過其他人在VBA中使用* directive *命令來說明不同的版本。 –

+0

@KazJaw奇怪。根據此線程(http://social.msdn.microsoft.com/Forums/office/en-US/09382026-5b75-4793-96a4-b0b4a6a097d7/always-use-these-values-regardless-of-sign-in -to-office?forum = worddev)它只是沒有記錄。也許是最後一個加法?我沒有2013年的方便,但根據鏈接它是在對象瀏覽器。 – Christina

回答

1

我沒有Word 2013,所以我不能在這種環境中測試,但我有Word 2010中,如果您使用此代碼編譯後期綁定:

Sub Foo() 
Dim wdApp As Object 
Dim IsWord2013 as Boolean 
    IsWord2013 = False 
    Set wdApp = Application 

    If IsWord2013 Then wdApp.Options.UseLocalUserInfo = True 


End Sub 
+1

哦,哇,我甚至沒有想到使用Application對象本身的後期綁定。我會測試,但我幾乎可以肯定這會工作。謝謝!一旦我完成了我的盡職調查,將會回覆並標記爲答案。 – Christina