2016-12-23 43 views
0

我最近發佈了主題Manipulating content in Microsoft Word with VBScript or VBA,並獲得瞭解決我的問題的巨大幫助。除了這個話題之外,我需要能夠使用我學到的東西並且結合新的任務。vbscript驗證Microsoft Word中的複選框

我有一個類似於上面鏈接的文檔。但唯一的區別是有複選框正在使用,代碼需要根據用戶的選擇來選擇/取消選擇。這裏是我到目前爲止的代碼:

Sub Check_Document() 

    objWord.Visible = True 
    Set objDoc = objWord.Documents.Open(UserProfile & "\Desktop\lettermiscreason - original.docx") 

    Set objRange = objDoc.Bookmarks("TodaysDate").Range 
    objRange.Text = TodaysDate 
    Set objRange = objDoc.Bookmarks("ProvName").Range 
    objRange.Text = ProvName 
    Set objRange = objDoc.Bookmarks("ProvAddress").Range 
    objRange.Text = ProvAddress 
    Set objRange = objDoc.Bookmarks("ProvCity").Range 
    objRange.Text = ProvCity 
    Set objRange = objDoc.Bookmarks("ProvState").Range 
    objRange.Text = ProvState 
    Set objRange = objDoc.Bookmarks("ProvZip").Range 
    objRange.Text = ProvZip 
    Set objRange = objDoc.Bookmarks("Check6").Range 
    If objRange.Value = False Then 
     objRange.Value = True 
    End If 
    Set objRange = objDoc.Bookmarks("Check5").Range 
    If objRange.Value = True Then 
     objRange.Value = False 
    End If 
    Set objRange = objDoc.Bookmarks("ProcInit").Range 
    objRange.Text = ProcInit 

End Sub 

Check6是我想選擇和Check5是我要取消選擇框中的複選框。隨着代碼的位置,我收到一條錯誤消息:Microsoft VBScript runtime error: Object doesn't support this property or method: 'objRange.Value'。當我查看我用來輸入數據的其餘部分時,它們會顯示爲書籤。有什麼建議麼?我應該使用objRange以外的東西嗎?或者我可以使用它,但使用.Value以外的東西嗎?

+0

我看到你回答了你自己的問題,然後我可以發佈[此鏈接](https://msdn.microsoft.com/de-de/library/office/ff839720.aspx) – LotPings

+0

我認爲這是相同的鏈接我鋸。我嘗試了確切的編碼,並意識到它與VBScript不同的地方在於它不起作用。經過一些修改,我得到了完美的工作。感謝您花時間尋找鏈接。如果我沒有自己想出來,那麼你的研究會有很大的幫助。 – Lou

回答

1

在嘗試了一些我記得從驗證HTML表單的隨機想法之後,我找到了一個解決方案。我使用了文檔對象的VBA FormFields,並利用每個複選框的書籤來定位和更改這些值。

Sub Check_Document() 

    objWord.Visible = True 
    Set objDoc = objWord.Documents.Open(UserProfile & "\Desktop\lettermiscreason - original.docx") 
    ' Created a FormFields object 
    Set objFrmFld = objDoc.FormFields 

    Set objRange = objDoc.Bookmarks("TodaysDate").Range 
    objRange.Text = TodaysDate 
    Set objRange = objDoc.Bookmarks("ProvName").Range 
    objRange.Text = ProvName 
    Set objRange = objDoc.Bookmarks("ProvAddress").Range 
    objRange.Text = ProvAddress 
    Set objRange = objDoc.Bookmarks("ProvCity").Range 
    objRange.Text = ProvCity 
    Set objRange = objDoc.Bookmarks("ProvState").Range 
    objRange.Text = ProvState 
    Set objRange = objDoc.Bookmarks("ProvZip").Range 
    objRange.Text = ProvZip 
    ' Used the FormFields object to change the value from unchecked to checked 
    If objFrmFld("Check6").CheckBox.Value = False Then 
     objFrmFld("Check6").CheckBox.Value = True 
    End If 
    ' Used the FormFields object to change the value from checked to unchecked 
    If objFrmFld("Check5").CheckBox.Value = True Then 
     objFrmFld("Check5").CheckBox.Value = False 
    End If 
    Set objRange = objDoc.Bookmarks("ProcInit").Range 
    objRange.Text = ProcInit 

End Sub 

我希望這可以幫助別人。我很抱歉沒有做一點額外的研究,並在提出問題之前提出解決方案。