我正在編寫需要在許多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
'應用.Options.UseLocalUserInfo'-你從哪裏得到它?我無法在[此列表]上看到此內容(http://msdn.microsoft.com/zh-cn/library/dn353005.aspx) –
檢查[此](http://stackoverflow.com/questions/6325486/ if-else-end-if-what-do-hash-signs-mean-in-vba)out。我見過其他人在VBA中使用* directive *命令來說明不同的版本。 –
@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