Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife einbinden

Schleife einbinden
08.02.2019 15:30:41
Anja
Hallo,
ich habe einen Excel-Code zum Erstellen von Serienbriefen über einen Command Button, der schon gut funktioniert, aber ich habe damit noch ein Problem:
Momentan wird der Code nur auf ein Word-Dokument angewandt, das sb1.docx heißt. Und nur dann wenn in Spalte A (sie heißt "Anz") die Zahl > 0 ist.
Nun soll aber je nachdem welche Zahl (1-5) in Spalte A (Anz) steht das entsprechende Word Doc (sb1 - sb5) genommen werden.
Geht das irgendwie?
Explicit
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim StrMMSrc As String, StrMMDoc As String, StrMMPath As String, StrName As String
Dim i As Long, j As Long
Const StrNoChr As String = """*./\:?|"
Dim wdApp As New Word.Application, wdDoc As Word.Document
wdApp.Visible = False
wdApp.DisplayAlerts = wdAlertsNone
StrMMSrc = ThisWorkbook.FullName
StrMMPath = ThisWorkbook.Path & "\"
StrMMDoc = StrMMPath & "sb1.docx"
Set wdDoc = wdApp.Documents.Open(Filename:=StrMMDoc, AddToRecentFiles:=False, ReadOnly:=True,  _
Visible:=False)
With wdDoc
With .MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource Name:=StrMMSrc, ReadOnly:=True, AddToRecentFiles:=False, _
LinkToSource:=False, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;" & _
"Data Source=StrMMSrc;Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
SQLStatement:="SELECT * FROM `Sheet1$` where (Anz>0)"
For i = 1 To .DataSource.RecordCount
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("ID")) = "" Then Exit For
StrName = .DataFields("ID")
End With
.Execute Pause:=False
For j = 1 To Len(StrNoChr)
StrName = Replace(StrName, Mid(StrNoChr, j, 1), "_")
Next
StrName = Trim(StrName)
With wdApp.ActiveDocument
.SaveAs Filename:=StrMMPath & StrName & ".docx", FileFormat:=wdFormatXMLDocument,  _
AddToRecentFiles:=False
.Close SaveChanges:=False
End With
Next i
.MainDocumentType = wdNotAMergeDocument
End With
.Close SaveChanges:=False
End With
wdApp.DisplayAlerts = wdAlertsAll
wdApp.Quit
Set wdDoc = Nothing: Set wdApp = Nothing
Application.ScreenUpdating = False
End Sub
pre>


		

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife einbinden
08.02.2019 15:31:33
Anja
Hier noch mein Code, das hat grad nicht so geklappt....
ption Explicit
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim StrMMSrc As String, StrMMDoc As String, StrMMPath As String, StrName As String
Dim i As Long, j As Long
Const StrNoChr As String = """*./\:?|"
Dim wdApp As New Word.Application, wdDoc As Word.Document
wdApp.Visible = False
wdApp.DisplayAlerts = wdAlertsNone
StrMMSrc = ThisWorkbook.FullName
StrMMPath = ThisWorkbook.Path & "\"
StrMMDoc = StrMMPath & "sb1.docx"
Set wdDoc = wdApp.Documents.Open(Filename:=StrMMDoc, AddToRecentFiles:=False, ReadOnly:=True,  _
Visible:=False)
With wdDoc
With .MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource Name:=StrMMSrc, ReadOnly:=True, AddToRecentFiles:=False, _
LinkToSource:=False, Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;" & _
"Data Source=StrMMSrc;Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _
SQLStatement:="SELECT * FROM `Sheet1$` where (Anz>0)"
For i = 1 To .DataSource.RecordCount
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("ID")) = "" Then Exit For
StrName = .DataFields("ID")
End With
.Execute Pause:=False
For j = 1 To Len(StrNoChr)
StrName = Replace(StrName, Mid(StrNoChr, j, 1), "_")
Next
StrName = Trim(StrName)
With wdApp.ActiveDocument
.SaveAs Filename:=StrMMPath & StrName & ".docx", FileFormat:=wdFormatXMLDocument,  _
AddToRecentFiles:=False
.Close SaveChanges:=False
End With
Next i
.MainDocumentType = wdNotAMergeDocument
End With
.Close SaveChanges:=False
End With
wdApp.DisplayAlerts = wdAlertsAll
wdApp.Quit
Set wdDoc = Nothing: Set wdApp = Nothing
Application.ScreenUpdating = False
End Sub

Anzeige
AW: Schleife einbinden
08.02.2019 17:13:00
onur

Irgendwie sehe ich im Code nirgendwo die Prüfung: "Und nur dann wenn in Spalte A (sie heißt "Anz") die Zahl > 0 ist."

hier auch noch die Bitte....
08.02.2019 17:41:56
Werner
Hallo,
...zum Verlinken der Beiträge in den verschiedenen Foren.
Gruß Werner
AW: Schleife einbinden
09.02.2019 09:27:33
Anja
Danke für die Hilfe lol.
Wozu etwas verlinken wenn ich niegendwo eine Antwort bekomme? Das Thema ist wohl zu hoch für die Leute...
Die Bedingung steht im Übrigen unten im sql Statement.
AW: Schleife einbinden
09.02.2019 12:14:53
onur
"Das Thema ist wohl zu hoch für die Leute..." - Klar, das muss ja an deinem genialen Code liegen, den ja keiner kapiert.
Am genialsten finde ich ja, dass der Code mit:
Application.ScreenUpdating = False

beginnt und mit
Application.ScreenUpdating = False

aufhört.
Auch daran, daß du nicht mal auf Antworten reagierst, kann es ja nicht liegen.
Anzeige
AW: Schleife einbinden
09.02.2019 13:30:19
Anja
Ich habe dir bereits in meinem letzten Post geantwortet:
Die Bedingung steht im Übrigen unten im sql Statement.
Aber hier gerne noch einmal ganz ausführlich für dich:
SQLStatement:="SELECT * FROM `Sheet1$` where (Anz>0)"
Und jetzt wirst Du mir sicherlich eine Antwort geben können, ansonsten hättest du ja bestimmt nicht die Frage völlig überflüssiger Weise und wohl wissend dass du trotzdem nicht antworten kannst gestellt, oder etwa doch?
AW: Schleife einbinden
09.02.2019 13:36:38
onur
Du hast ja nicht mal eine Ahnung, WIE man in diesem Forum antwortet. Das einzige, was du gemacht hast, ist dir selbst zu antworten und ich lese keine Antworten, die NICHT mir gelten.
"Und jetzt wirst Du mir sicherlich eine Antwort geben können" - nein, da ich erstens zu blöd bin für deinen genialen Code und zweitens dieser Zug bereits abgefahren ist.
Anzeige
bevor du dir...
09.02.2019 13:50:18
Werner
Hallo Anja,
...Gedanken über die fachliche Kompetenz von Helfern in diversen Foren machst, solltest du dir eher Gedanken um deine soziale Kompetenz zu machen.
Trotz mehrfacher Hinweise hast du es ja nicht für nötig gehalten die verschiedenen Beiträge zu verlinken. Dir ist es also egal, dass u.U. verschiedene Helfer in verschiedenen Foren an deinem Problem arbeiten, ohne voneinander zu wissen. Ist ja wohl auch egal, dass da möglicherweise jemand für den Papierkorb arbeitet - kostet ja nichts.
Gruß Werner
AW: bevor du dir...
12.02.2019 12:54:24
Anja
Wenn ihr eure Energie mal darauf lenken würdet, anderen Leuten tatsächlich zu antworten anstatt die Möchtegern-Forenpolizei zu spielen und sich über - nicht einmal verbotene - Crosspostings aufzuregen, wäre damit sicherlich allen geholfen :)
Aber so bleibt mir nur eines zu sagen: es gibt schon echt traurige Gestalten hier...
Ich verkrümel mich dann mal in die englischen Foren, dort sind nämlich tatsächlich noch nette und fähige Leute anzutreffen, die sich nicht so dämlich aufspielen wie die Deutschen :D
Adios!
Anzeige
AW: bevor du dir...
12.02.2019 12:55:28
SF
Immerhin beherrscht du Copy/Paste noch immer. Glückwunsch.
Verstanden worum es geht hast du allerdings nicht.
Tschüss.
Gruß,
steve1da
Da bin ich jetzt aber traurig...
12.02.2019 12:58:15
Werner
Hallo,
...dass du dich jetzt "verkrümelst".
Gott sei Dank, gibt es hier im Forum ja auch noch nette Fragesteller.
Gruß Werner
AW: bevor du dir...
12.02.2019 13:01:02
onur
Wenn dein Englisch so gut ist, wie dein VBA, hast du dort wahrscheinlich auch den „Mitleidsbonus“ und kannst dir mehr erlauben.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige