首先,感谢您分享的高质量信息。我感谢所有问题和答案,我发现这些问题和答案非常有用。现在我在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
答案 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