Herbers Excel-Forum - das Archiv
Makro einzeln laufen, zusammen nicht????

|
Betrifft: Makro einzeln laufen, zusammen nicht????
von: Sascha
Geschrieben am: 08.11.2003 19:12:58
Hallo,
hab hier zwei Makro die einzeln wunderbar funktionieren. Nur zusammen leider
nicht.
1. Word
Beim Start des Dokuments s_brief.doc wird ein Serienbrief erzeugt,
ausgedruckt, Word beendet. Die Daten zum Serienbrief erhält Word aus einer
2.xls
2. Excel
Aufruf einer Worddatei mittels Makro. Auch das Funktioniert einwandfrei.
Wenn ich aber nun aus 1.xls mittels Makro s_brief.doc mit ebenfalls Makro
(Daten aus 2.xls) aufrufe, passiert folgendes.
Word wird gestartet. Dann passiert erstmal garnichts. In der Statusleiste
steht: "Microsoft Excel wird gestartet". Nach ca 1min fragt Word: "Dieser
Vorgang dauert länger als vorgesehen. Soll er trotzdem fortgesetzt werden?
Ja/Nein" Bei Nein wird meine Word-Datei gestartet, Makro ausgeführt und
wieder geschlossen.
Wie kann ich diese Abfrage verhindern??? Auf was wartet Word???
Makro Excel: 1.xls
------------------------
Option Explicit
Private Declare
Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As
String, ByVal lpDirectory As String, _
ByVal lpnShowCmd As Long) As Long
Public
Sub WordMakroStarten()
Dim intIndex As Integer
With Application.FileSearch
.FileType = msoFileTypeWordDocuments
.LookIn = ThisWorkbook.Path
If .Execute > 0 Then
For intIndex = 1 To .FoundFiles.Count
ShellExecute 0, "open", Right(.FoundFiles(intIndex),
InStr(1, StrReverse(.FoundFiles(intIndex)), "\") - 1), "", ThisWorkbook.Path
& "\", 3
Next
End If
End With
End Sub
------------------------
Makro Word: s_brief.doc -> steht im Autostart
------------------------
Sub S_Druck()
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
ActiveDocument.PrintOut Background:=False
Application.Quit SaveChanges:=wdDoNotSaveChanges
End Sub
Danke für die Hilfe
Mfg
Sascha Drömer
Betrifft: Makrosicherheit
von: Ramses
Geschrieben am: 08.11.2003 21:25:43
Hallo Sascha
vermutlich hängt sich das Makro auf, weil EXCEL die Datei öffnet in der ein Makro drin ist, und beim öffnen auf die Benutzereingabe wartet, ob die Makros aktiviert werden sollen oder nicht.
Lösung:
Erstelle dir ein Zertifikat ( siehe EXCEL Hilfe ) und aktiviere beim öffnen der Datei die Abfrage "Soll diesem Zertifikat vertraut werden" die Option "Diesem Zertifikat immer vertrauen".
Dann sollte es gehen.
Gruss Rainer
Betrifft: AW: Makrosicherheit -> Leider nicht
von: Sascha
Geschrieben am: 08.11.2003 21:55:25
Hallo,
besten Dank !!!
aber das wars leider nicht. Alle 3 Dateien sind zertifiziert.
Hat jemand noch eine andere Idee???
Danke trotzdem
Gruß Sascha
Betrifft: Probier mal...
von: Ramses
Geschrieben am: 08.11.2003 22:13:16
Hallo Sascha,
Dim FFile As String
For intIndex = 1 To .FoundFiles.Count
FFile = .FoundFiles(intIndex)
Debug.Print FFile
ShellExecute 0, "open", Right(.FoundFiles(intIndex),
InStr(1, StrReverse(.FoundFiles(intIndex)), "\") - 1), "", ThisWorkbook.Path
& "\", 3
.....
Damit solltest du zumindest die Datei rauskriegen bei der das Makro hängt.
Denn offensichtlich läuft dein Makro ja nach der Beantwortung der MsgBox.
Ist es vielleicht die Datei die du gerade in EXCEL geöffnet hast ?
Gruss Rainer
Betrifft: AW: Probier mal...
von: Sascha
Geschrieben am: 08.11.2003 22:22:43
Hallo,
danke für Deine Hilfe.
Wo soll ich Deine Zeilen einfügen? Am Anfag oder am Ende des Excel-Code oder Word-Code?
Verstehe den Code leider nicht.
Mfg
Sascha
Betrifft: Versteh ich nicht....
von: Ramses
Geschrieben am: 08.11.2003 22:52:50
Hallo
du gibst EXCEL Gut - VBA Gut an, hast ein komplexes Makro und verstehst nicht was ich da schreibe ?
Das ist doch wohl eindeutig genug, wo der Code hin soll.
Die Code Sequenz hast du doch nur einmal
Gruss Rainer
Betrifft: AW: Versteh ich nicht....
von: Sascha
Geschrieben am: 08.11.2003 23:05:04
Hallo,
erstmal großes Dankeschön das Du Dich meines Problems annimmst.
Excel/VBA Gut ist sicher übertrieben aber keine oder nur mit Makrorecorder ist sicherlich auch nicht die richtige Beschreibung meines Wissensstandes.
Beschäftige mich jetz seit ca. 4 Wochen mit VBA und habe ´ne Menge Information aus dem Internet mir angelesen bzw. aus Newgroups bekommen.
Was allerdings nicht bedeutet das ich jeden Code verstehe auch wenn er funktioniert. Ich versuche natürlich, wenn ich Informationen bekommen die auch zu verstehen.
Hoffe das mir dennoch weiterhin hilfst.
Grüße
Sascha
Betrifft: Du musst nur...
von: Ramses
Geschrieben am: 08.11.2003 23:12:10
Hallo
den fett geschriebenen Code in dein erstes Makro an die entsprechende Stelle kopieren.
Das sollte mit etwas lesen zu schaffen sein.
Im Direktfenster wird derjenige Dateiname dann angezeigt, der das Problem verursacht.
Du machst da ja eine ganze Menge an Dateien auf.
Es wäre besser, wenn du sowas vorher sagst. Aus dem Code lese ich nämlich, dass derjenige grosse Erfahrung hat, sonst würde er keine API - Funktionen einsetzen.
Es wird also schwierig sein, das Problem so zu lösen.
Gruss Rainer
Betrifft: AW: Du musst nur...
von: Sascha
Geschrieben am: 08.11.2003 23:19:56
Hallo,
>Das sollte mit etwas lesen zu schaffen sein.
Da hast Du natürlich Recht !!! Das hätte ich auch ohne Nachfragen hinbekommen sollen. Sorry.
Hab das jetzt mal gemacht. Code eingefügt, Direktfenster geöfnet und Makro gestartet. Bekomme dann Kmpilierungsfehler. Markierung "FFile ="
Gruß
Sascha
Betrifft: Das funktioniert schon...
von: Ramses
Geschrieben am: 08.11.2003 23:26:05
Hallo
Option Explicit
Private Declare
Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As _
String, ByVal lpDirectory As String, ByVal lpnShowCmd As Long) As Long
Public
Sub WordMakroStarten()
Dim FFile As String
Dim intIndex As Integer
With Application.FileSearch
.FileType = msoFileTypeWordDocuments
.LookIn = ThisWorkbook.Path
If .Execute > 0 Then
For intIndex = 1 To .FoundFiles.Count
FFile = .FoundFiles(intIndex)
Debug.Print FFile
ShellExecute 0, "open", Right(.FoundFiles(intIndex), _
InStr(1, StrReverse(.FoundFiles(intIndex)), "\") - 1), "", ThisWorkbook.Path & "\", 3
Next
End If
End With
End Sub
Bei mir läuft das Makro ohne Probleme.
Aber jetzt werde ich mich erstmal ins Bett abmelden.
Gute Nacht.
Gruss Rainer
Betrifft: die 2.xls ist Schuld
von: Sascha
Geschrieben am: 09.11.2003 12:25:46
Hallo,
das problem ist die Datei aus der Word die Daten für den Serienbrief nimmt.
Wenn ich das ganze als *.csv mache läuft alles.
Werd mal schauen wie ich jetzt einen Zellbereich aus 1.xls in 2.csv exportiere.
Danke
Grüße
Sascha
Betrifft: Merci für's Feedback :-) o.T.
von: Ramses
Geschrieben am: 09.11.2003 13:54:38
...