Aus WindowsForm Wordvorlage mit Makro öffnen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von shaun.

    Aus WindowsForm Wordvorlage mit Makro öffnen

    Erstmal Hallo von mir ans Forum :)

    Ich beschäftige mich seit einiger Zeit mit verschiedenen Formen der VBA Programmierung in Excel und Word, klappt auch soweit ganz gut.

    Jetzt dachte ich ich gehe einen Schritt weiter und probier es mal mit VB2010.

    Komm auch gut voran, programmiere gerade eine Windowsform mit integrierten Resourcen.

    Aktiviert durch Checkboxen werden verschiedene Word und Excel Vorlagen geöffnet und die Felder bzw bookmarks mit Daten der Eingabefelder beschrieben.

    So, jetzt mein Problem:

    Ich habe eine Word Vorlage mit einem Makro, dieses Makro funktioniert auch einwandfrei. Habe ein Modul1 drinn und eine Form die ich starte mit:


    Quellcode

    1. Sub autonew()
    2. schmal.Show
    3. End Sub


    in meiner WindowsForm rufe ich die Vorlage auf mit:

    Quellcode

    1. If CheckBox11.Checked = True Then
    2. 'IO.File.WriteAllBytes(IO.Path.Combine(Environment.GetEnvironmentVariable("temp"), "Ordnerschmal.dotm"), My.Resources.Ordnerschmal)Dim Word As Object
    3. Word = CreateObject("Word.Application")
    4. Word.Visible = True
    5. ordner_schmal = Word.Documents.Open(IO.Path.Combine(Environment.GetEnvironmentVariable("temp"), "Ordnerschmal.dotm"))
    6. End If


    Leider startet das Makro in der Vorlage nicht :(


    Was mir auch aufgefallen ist, starte ich die Wordvorlage direkt im Explorer aus dem Ordner Resourcen dann öffnet das Makro, öffne ich die Datei aus dem Resourcenordner innerhalb des Resourcen Ordner im Projektmanager dann startet das Makro auch nicht.


    Fehlts da vll nur an einer Einstellung ?


    Gruß shaun



    Mach mal Option Strict auf On. Dann wirst du ein paar Fehler bekommen, unter anderem wegen dem CreateObject. Warum? Weil das nicht in VB.Net gehört. In .NET arbeitet man ganz anders als mit VBA/VB6/VBScript oder anders gesagt: Vergiss alles, was du bisher übers Programmieren weißt und les ein Buch (vorzugsweise das Microsoft Visual Basic 2005 - Das Entwicklerbuch (gratis als eBook verfügbar), danach entweder das 2010er (auch gratis) oder das 2012er (kostet) um die neusten Techniken zu lernen, die einem vieles erleichtern). Dann bist du wahrscheinlich bereit, mit bestem Stil das Programmieren anzufangen. Wenn du denkst, dass du es nicht brauchst, OK, dann lass es. Es dauert dann aber ne halbe Ewigkeit, bis du auf dem gleichen Level bist.

    PS: Zu deinem Problem noch: reicht nicht auch

    VB.NET-Quellcode

    1. Process.Start("Pfad/Zur/Datei.dotm")
    Hallo nafets3646,

    vielen Dank für deine Antwort. :thumbup:

    Werde deine Ratschläge beherzigen und mich in die entsprechende Lektüre einlesen.

    Ich habe halt einfach mal begonnen kleine Projekte mit Makros in Word und Excel mit VBA zu realisieren und hab Spass drann gefunden.

    Dass es ohne Grundkenntnisse nicht weitergeht habe ich auch schnell bemerkt. :wacko:


    Dein Tipp mit dem Prozess.Start war hilfreich, jetzt startet auch die Datei incl Makro.

    Quellcode

    1. If CheckBox11.Checked = True Then
    2. IO.File.WriteAllBytes(IO.Path.Combine(Environment.GetEnvironmentVariable("temp"), "Ordnerschmal.dotm"), My.Resources.Ordnerschmal)
    3. Dim Word As Object
    4. Word = CreateObject("Word.Application")
    5. Word.Visible = True
    6. ordner_schmal = Word.Documents.Open(IO.Path.Combine(Environment.GetEnvironmentVariable("temp"), "Ordnerschmal.dotm"))
    7. ordner_schmal = Process.Start(IO.Path.Combine(Environment.GetEnvironmentVariable("temp"), "Ordnerschmal.dotm"))
    8. 'Textmarken beschreiben
    9. ordner_schmal.Bookmarks().Item("schmal_kunde1").Range.Text = TextBox4.Text
    10. ordner_schmal.Bookmarks().Item("schmal_kunde2").Range.Text = TextBox4.Text


    Allerdings stehe ich nun vor dem nächsten Problem, ich möchte ja bookmarks mit Daten aus der Eingabemaske beschreiben.


    Dies hat bisher funktioniert, nun aber nicht mehr :whistling:



    Die Datei die ich öffnen will ist eine Vorlage für Ordnerrücken, also für die Klebeschilder.
    Es sind 5 Spalten drauf. Innerhalb der Vorlage habe ich ein Makro um die zu bedruckende Spalte auszuwählen.
    Diese Auswahl funktioniert auch, die nicht benötigten Spalten setze ich die Schrift und Tabellenfarbe einfach auf weis ;)

    Allerdings möchte ich die Vorlage auch noch mit Daten der Eingabemaske füllen. Hierzu habe ich in allen Spalten bookmarks die ich mit Eingaben der TextBoxen füllen will.

    Einzeln für sich klappen beide Vorgänge, nur nicht zusammen :S


    War nun schon am überlegen ob ich die Vorlage im Hintergrund öffne, die bookmarks beschreibe, abspeichere und danach dann mit dem Process.Start aufrufe.
    Dann sollte ich mein gewünschtes Ergebnis hinbekommen.
    Allerdings ist diese Art der Programmierung bestimmt nicht die schönste...
    so...hab´s hinbekommen :thumbsup:

    hab einfach nach dem füllen der bookmarks noch ein

    Quellcode

    1. Word.Run("autonew")


    eingefügt.

    Jetzt machts genau das was es soll, die bookmarks werden beschrieben, danach startet das makro im Word Dokument zur Spaltenauswahl.


    Danke euch