VisualBasic Aufruf von Private Sub VB 6.0

Unwissend23

Cadet 1st Year
Registriert
Aug. 2012
Beiträge
8
Habe ein Macro geschrieben, dass auf der Basis Normal.dot eine Dokumentenvorlage einfügt und danach ein kopiertes Formular einfügt.
Das Auslesen dieses Formulars gelingt nur, wenn ich den entsprechenden Code hierzu in das neue Projekt (z.B Project Document(2) ) in VB Explorer unter ThisDocument und dort unter Document New (Private Sub Document-New() wird vorgegeben, hinnein kopiere.

Wie kann ich nun mein unter Normal aufgerufenes Macro (Z.B. Sub Auslesen() ), das nach Atvierung als Aktive.Document z.B. Document 2 ausweist, dazu bringen, in Project (Document2) , dort in ThisDokument die Private Sub Document_New() mit dem Code zu erstellen und auszuführen.

Hatte auch schon versucht, nachdem ich dies alles von Hand gemacht hatte, danach ThisDocument (incl. der erstellten Private Sub Document_New() ) zu exportieren und bei der Erstellung eines neuen Dokuments zu importieren. Hierbei wird dann in dem neuen Dokument z.B. Project (Dokument3), ein neues ThisDocument1 angelegt. Aber auch so erhalte ich keinen Zugriff.
Wenn einer antwortet, bitte so, dass auch ich als Anfänger verstehe, worum es geht.
Schon jetzt Danke für die Hilfe.
 
Sehr geehrter Unwissender,

VB6 wurde schon zu Zeiten von WinXP RTM nur noch mit Hängen und Würgen unterstützt. Ich habe zwar auch mit VB4 angefangen, seit es .NET Framework gibt (VB > 7) hat das mit der alten, begrenzten Runtime nichts mehr zu tun.

Wie wärs mal mit einem Update? Dann lernst du nicht den alten Mist!

VS2010: http://www.microsoft.com/germany/express/

Dort findest du eine Express Edition jeweils für Visual Basic Desktopanwendungen und eine Express for Web Edition mit der du VB/C# ASP.NET Webanwendungen erstellen / erlernen kannst.

Tonnenweise MSDN Artikel, Referenzen und Samples inklusive.
 
Vermutlich hast Du recht, aber mir sind da die Hände gebunden, da es sich um einen Firmenrechner mit Office 2003 (VB 6.5) handelt und update nicht durchgeführt werden können.
Ich muss also versuchen, mit den Gegebenheiten etwas zu stricken.
 
Leider ist deine Beschreibung des Codes und des Problems für mich unverständlich :freak: Ich spreche über Code gerne ebenfalls in Code... Wenn du die relevanten Auszüge posten kannst, kann ich dir vllt. weiter helfen.
 
also, versuche ich mal mein Glück.
Wie bereits gesagt, öffnet das Hauptmakro, als Dokumentenvorlage ein neues Dokument. Die .dot enthält Textmarken, die zu einer späteren Zusammenfassung dienen sollen.

Über Einfügen wird dann in Word ein aus dem Internet kopiertes Formular zugefügt. Dieses Formular hat div. HTML.Forms.Text Felder.
Nur in einer Private Sub kann ich diese Felder (fortlaufend nummeriert z.B. "DefaultOcxName16" auslesen und einer Variabel jeweils inhaltlich zuweisen, da in Word selber mit Copy/Paste die gesamte Textbox kopiert wird und der Inhalt einer Box (z.B. "DefaultOcxName16 Value den Inhalt des Nachnames ausweist, den ich als String für die Funktion "save As" benötige.

Das anlegen einer "Private Sub Document_New()" z.B. mit dem Code "Name = DefaultOxcName16" unter "Normal" im VB Explorer bringt nicht den Erfolg, da nach dem Anelegen des neuen Dokument, dieses als Ative.Document ausgewiesen wird und wohl auch deshalb, weil in diesem Ative.document sich das auszulesende Formular befindet.

Füge ich nun in diesem Ative.Document im VB-Explorer unter ThisDocument mit Declaration = Document ein wird "Private Sub Document_New()" automatisch vorgegeben. Kopiere ich dann den Inhalt der gleichnamigen Sub aus Normal hinein und starte ausführen, wird diese neue Private Sub anstandslos ausgeführt.

Bei jedem neuen Dokument muss ich als von Hand im Explorer unter Normal, ThisDocument den Inhalt der Private Sub Document_New() kopieren und dann im Ative.Document unter ThisDocument, Document New in die dort vorgegebene Private Sub Document_New() einfügen.
Dies ist meine StartSub:
Sub AuftragDLauslesen()
'
' AuftragDLauslesen Makro
' Makro aufgezeichnet am 17.08.2012 von xxxx 'Vorlage DLAuftrag aufrufen
Documents.Add Template:="D:\Data\xxx\Office\Vorlagen
\DLAuftrag.dot", _
NewTemplate:=False, DocumentType:=0
'2 Enter nach unten und kopierten Auftrag einfügen
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.TypeParagraph
Selection.PasteAndFormat (wdPasteDefault)'Einfügen des kopierten Formulars
With Active.Dokument
End With

End Sub
Private Sub Document_New()
'z.B. Auslesen des Feldes und in Name speichern
Name = DefaultOxcName16
'Test MsgBox
MsgBox Name 'der Inhalt der Formularbox DefaultOxcName16 z.B. Mustermann wird ausgegeben
End Sub

Ich hoffe, ich konnte mein Problem erklären. Ich möchte aus dem Startmakro die Private.Sub anlegen, dort den Inhalt aus der gleichnamigen Private Sub unter Normal kopieren, in die neue Private Sub einfügen und das ganze laufen lassen.
Für rasche Hilfe wäre ich dankbar.

Habe übrigens den Inhalt der Private Sub als RTF-Datei angelegt. Ggf. ist diese einfacher anzusprechen.
 
Hallo,

sorry dein Problem scheint schon sehr speziell zu sein, dafür habe ich mich nicht lange genug mit old school Office / VBA beschäftigt.

Einziger Hinweis könnte sein, dass du dein Makro in deiner Vorlage speichern musst, also nicht in Normal.dot.

Die Private Sub Document_New hört sich schwer nach einem Ereignis an, dessen Namen von Office vorgegeben wird. Das Ereignis musst du also nicht in Normal.dot (leeres Dokument) definieren, sondern in deiner Vorlage (wo die Felder existieren).

Gruß
 
Zurück
Oben