2014-07-22 43 views
0

首先,感謝您分享的高質量信息。我感謝所有的問題和答案,我發現它非常有用。現在我在Excel中遇到了vba編程問題。如何編程excel文件以從列表中收集複選框文檔?

我在Excel中有很多不同的文檔和文檔名稱/代碼,其中我想使用複選框選擇哪些文檔將被打印。 文檔已經在同一個文件中,可以用作源文件。因此,複選框,文檔代碼和源代碼應該鏈接在一起。 我在列表旁邊創建了兩個命令按鈕,其中一個用於打印和創建組合報告,另一個用於重置(取消選中所有已選中的框)。

我希望我自己清楚我在找什麼,如果有可能得到建議如何前進。

到目前爲止,我設法編程重置按鈕,但爲了創建打印功能,我發現它真的很難和不清楚。

編輯:

到目前爲止,我一直在試圖創造一些宏觀其收集從列表中的所有checkboxed線到另一個工作表(打印)和我有以下未完成的代碼開始吧:

Private Sub CommandButton1_Click() 

    Dim cb As CheckBox 
    Dim rng As Range 
    Dim row As Range 

    Set rng = Range(A7, b153) 

    For Each row In rng.Rows 
     If cb = True Then Run (sbcopyrangetoanothersheet) 
    Else: Next row 

End Sub 

Sub sbcopyrangetoanothersheet() 

    Sheets(Documents).Range(A7,b153).Copy Destination:=Sheets(PRINT).Range(A7,B153) 

    Range(A7, b153).Copy 
    Range(A7, b153).Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True 

End Sub 

重置宏:

Sub Reset() 

Dim sh As Worksheet 
    For Each sh In Sheets 
     On Error Resume Next 
      sh.CheckBoxes.Value = False 
     On Error GoTo 0 
    Next sh 

End Sub 
+0

請分享正在使用的代碼循環遍歷文檔。沒有代碼的問題令人不悅。 – Archlight

+0

對不起,沒有正確標記上面的代碼,並感謝您的建議! – RoopeP

+0

歡迎來到SO,記得要把問題標記爲回答如果他們這樣做,還記得要提出任何其他有助於你的答案/問題。 – Archlight

回答

0

你也可以遍歷這個樣子,並打印通過打開worddoc並通過WINWORD打印。 這裏有許多選項,所以請查看MSDN上的文檔,但這應該指向一個方向。

我不推薦使用VBA,而是使用.net(vb或c#)winform和openXML來打印。

Anywho。這裏是代碼,它從我的腦海中撕下來,所以它可能不會編譯。

For Each control In ActiveSheet.OLEObjects 
    If control.Name Like "CheckBox*" Then 
    if control.Object.Value == true then PrintWinWord ("somehow infer word doc Path from eitherName of checkbox or id") 
    End If 
Next control 


Sub PrintWinWord(dim wordDocPath as string) 
    Set objWord = CreateObject("Word.Application") 
    Set objDoc = objWord.Documents.Open(wordDocPath) 
    objDoc.PrintOut 
    objDoc.Close 
    objWord.Quit 
End Sub 
相關問題