如何编写excel文件以从列表中收集复选框文档?

时间:2014-07-22 11:54:55

标签: excel list vba checkbox external

首先,感谢您分享的高质量信息。我感谢所有问题和答案,我发现这些问题和答案非常有用。现在我在excel中遇到vba编程问题。

我在Excel中有很长的不同文档和文档名称/代码列表,我希望通过复选框选择哪些文档和文档名称/代码。 文档已经在同一个文件中,可以用作源文件。因此,复选框,文档代码和来源应链接在一起。 我在列表旁边创建了两个命令按钮,其中一个用于打印和创建组合报告,另一个用于重置(取消选中所有选中的复选框)。

我希望我能清楚地知道我在寻找什么,以及是否有可能获得如何继续前进的建议。

到目前为止,我设法对重置按钮进行编程,但为了创建打印功能,我发现它真的很难而且不清楚。

编辑:

到目前为止,我一直在尝试创建一些宏,它将列表中的所有复选行收集到另一张表(PRINT),然后使用以下未完成的代码启动它:

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

1 个答案:

答案 0 :(得分: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