Как запрограммировать файл excel для сбора флажков из списка?

Вопрос:

Прежде всего, спасибо за хорошее качество информации, которую вы делитесь. Я ценю все вопросы и ответы, которые я нашел очень полезными. Теперь у меня проблема с программированием vba в excel.

У меня длинный список разных документов и названий/кодов документов в 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

Лучший ответ:

Вы можете зацикливаться на этом и распечатать, открыв worddoc и распечатав его через winWord. Есть варианты по этому поводу, поэтому ознакомьтесь с документацией по MSDN, но это должно указывать вам направление.

Я не рекомендую использовать VBA для этого больше, а скорее использую winform и.net(vb или С#) и 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

Оцените статью
TechArks.Ru
Добавить комментарий