Ich möchte eine .dotm-Vorlage erstellen, aus der die Dokumentenbasis erstellt wird. Dann möchte ich es mit Visual Basic-Formularen füllen.Ist es möglich, ein neues Dokument aus einer Vorlage zu erstellen und dessen Füllung mit einem visuellen Basisformular zu automatisieren?
Zuerst habe ich versucht, es mit AutoExec und AutoOpen zu tun, aber es hat nicht geklappt. Also habe ich gegoogelt und eine Lösung gefunden - ich muss das Document_New-Verfahren verwenden. So im Moment sieht das alles so aus:
Ich habe eine dotm Vorlage. Im Templates-Projekt habe ich ein Makro für ThisDocument und das Formular mit dem Namen InputForm definiert. Makro sieht wie folgt aus
Private Sub Document_New()
InputForm.Show
End Sub
In Inputform Code erhalte ich einen Text von TextBox-Elemente, und wollen es bestimmte Felder in neu erstellte Dokument zuweisen.
Problem ist, dass das Dokument aus der Vorlage erstellt wird, bevor ich Formular ausfülle, so dass alle Änderungen, die in einem neuen Dokument vorgenommen werden sollen, in der Vorlage vorgenommen werden.
bearbeiten: Code für Inputform
Private Sub OkButton_Click()
If IsRight Then
ThisDocument.txt_Num.Value = txt_Num1.Value
ThisDocument.txt_Date.Value = txt_Date1.Value
ThisDocument.lbl_Num_Date.Caption = " ТКП № " & txt_Num1.Value & " от " & _
txt_Date1.Value & "г."
ThisDocument.txt_Project.Value = txt_Project1.Value
ThisDocument.lbl_Project.Caption = txt_Project1.Value
ThisDocument.txt_Author.Value = txt_Author1.Value
ThisDocument.txt_Org.Value = txt_Org1.Value
ThisDocument.lbl_Organization.Caption = txt_Org1.Value
ThisDocument.txt_Phone.Value = txt_Phone1.Value
ThisDocument.txt_Mail.Value = txt_Mail1.Value
InputForm.Hide
Else
MsgBox ("Неверно")
End If
End Sub
Public Function IsRight() As Boolean
If IsDate(txt_Date1.Value) Then
IsRight = True
Else
IsRight = False
End If
End Function
Private Sub CancelButton_Click()
InputForm.Hide
End Sub
Habe es einfach versucht, kein Glück. Es scheint, dass die Shapes-Auflistung leer ist (Größe = 0). Aber ActiveDocument ist wirklich das Dokument, das gerade erstellt wurde. –
Dann vielleicht in der 'ActiveDocument.ContentControls' oder der' ActiveDocument.Controls' Sammlung? – Slai
ContentControls ist ebenfalls leer. Ich denke über die Fields-Sammlung nach, aber es erlaubt nicht, irgendetwas anderes als Index als Argument zu verwenden ... –