Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Word Makro von Excel ausführen

Betrifft: Word Makro von Excel ausführen von: Barbara
Geschrieben am: 13.10.2014 22:35:41

hallo

habe ein Excel-Dokument mit einem Makro, das ein bestimmtes Word-Dokument öffnet und ein dort stehendes Makro startet. Dabei werden auch Daten übergeben.

Das funktioniert.

Nun würde ich gerne die Sache dahin gehend ändern, dass auch das Word-Makro im Excel-Makro steht. Geht das irgend wie?

Der Vorteil wäre, dass im Word-Dokument kein Makro mehr steht und alles vom Excel-Makro gesteuert werden kann.

Hier habe ich das Excel-Sheet hochgeladen, damit man sieht, wie Word aufgerufen wird.
https://www.herber.de/bbs/user/93146.xlsm

Und hier das Word-Makro (in etwas abgespeckter Form wegen der Übersichtlichkeit).

Sub NamenDict(oNamen As Object)
Dim r As Range
Dim i, j As Integer
Dim sExcelname, sWordtag As String
On Error GoTo fehler
With ActiveDocument
   'Alle Textmarken durchgehen
   For i = 1 To .Bookmarks.Count
        sWordtag = .Bookmarks(i).Name
        .Bookmarks(i).Select
        If oNamen(sWordtag) = "Wahr" Then
            .Bookmarks(i).Range.Font.StrikeThrough = 0
            .Bookmarks(i).Range.HighlightColorIndex = wdTurquoise
        End If
    Next i
End With
Exit Sub
fehler:
MsgBox "F: " & Err.Description & " - " & Err.Number
End Sub
würde mich über konkrete Hilfe sehr freuen.

LG,
Barbara

  

Betrifft: AW: Word Makro von Excel ausführen von: mumpel
Geschrieben am: 13.10.2014 23:16:22

Hallo!

Stichwort: CreateObject("Word.Application")

Gruß, René


  

Betrifft: AW: Word Makro von Excel ausführen von: Barbara
Geschrieben am: 13.10.2014 23:50:31

OK, das habe ich schon mal gelesen, kann es aber nicht einsetzen. Da fehlt es mir an VBA-Kenntnissen.

Könntest Du da bitte Deine Hilfe etwas konkretisieren, an Hand meines Beispiels?

Danke.


  

Betrifft: AW: Word Makro von Excel ausführen von: fcs
Geschrieben am: 14.10.2014 10:12:45

Hallo Barbara,

die Integration des Wordmakros in das Excelmakro kann wie folgt aussehen.
Setze zusätzlich im Excel VBA-Editor unter Extras--Verweise den Verweis auf "Microsoft Word x.y Object Library". Das erleichtert die Übernahme des Wordmakros.

Gruß
Franz

Sub namenDict_nach_word()

'Alle Namen werden im Dictionary oDic gespeichert
'Dann wählt der Anwender eine Word-Datei, in der dann "NamenDict" mit oDic
'durchgeführt wird.

  Dim oDic As Object  'Dictionary-Verzeichnis
  Dim nName As Name
  Dim sDatei As String
  Dim oWordInstanz, oWordDoku As Object
  
  On Error GoTo fehler
  Set oDic = CreateObject("Scripting.Dictionary")
  
  
  'Word-sDatei wählen
  With Application.FileDialog(msoFileDialogOpen)
      .InitialFileName = ThisWorkbook.Path & "\"
      .Filters.Clear
      .Filters.Add "Word-vorlagen", "*.dot; *.dotx;*.dotm", 1
      .AllowMultiSelect = False
          If .Show = -1 Then
              sDatei = .SelectedItems(1)
          Else
              Exit Sub
          End If
  End With
  
  'Neues Word-Dokument auf Basis der Vorlage  öffnen
  Set oWordInstanz = CreateObject("Word.Application") 'Word-Instanz erstellen
  oWordInstanz.Visible = True
  Set oWordDoku = oWordInstanz.Documents.Add(Template:=sDatei)
  
  'Excel-Namen in Word-Textmarken übertragen
  Call NamenDict(oWordDoku, oDic)
  
  Set oWordDoku = Nothing
  Set oWordInstanz = Nothing
  MsgBox "Excel-Übertragung Fertig. "
  Exit Sub
  
fehler:
  Set oWordDoku = Nothing
  Set oWordInstanz = Nothing
  MsgBox Err.Number & " - " & Err.Description
End Sub

'Für korrekte Funktion im VBA-Editor unter Extras -- Verweise... den Verweis auf
' die Microsoft Word x.y Object Library aktivieren.
'oder alle Word-Objekte als As Object deklarieren und Word-Variablen durch _
    ihre Werte ersetzen
Sub NamenDict(oWordDoku As Object, oNamen As Object)
  Dim r As Word.Range 'alternativ deklarieren: As Object
  Dim i As Integer, j As Integer
  Dim sExcelname As String, sWordtag As String
  On Error GoTo fehler
  With oWordDoku
     'Alle Textmarken durchgehen
     For i = 1 To .Bookmarks.Count
          sWordtag = .Bookmarks(i).Name
          .Bookmarks(i).Select
          If oNamen(sWordtag) = "Wahr" Then
              .Bookmarks(i).Range.Font.Strikethrough = 0
              .Bookmarks(i).Range.HighlightColorIndex = 3 ' 3 = wdTurquoise
          End If
      Next i
  End With
  Exit Sub
fehler:
  MsgBox "F: " & Err.Description & " - " & Err.Number
End Sub



  

Betrifft: AW: Word Makro von Excel ausführen von: Barbara
Geschrieben am: 15.10.2014 20:21:49

Vielen lieben Dank, Franz, für Deine ausführliche Unterstützung.

Es funktioniert und hilft mir sehr.

LG,
Barbara


 

Beiträge aus den Excel-Beispielen zum Thema "Word Makro von Excel ausführen"