Benutzer mit den meisten Antworten
Makro Office 2010 > Visual Basic Code

Frage
-
Ich habe in Office 2010 ein Makro mit Seriendruck gestartet. Diesen Code habe ich mit Änderungen in Visual Basic (Studio 2005) übernommen. Nur eine Codezeile kann ich nicht ändern.
Makro:
ActiveDocument.Fields.Add Range:=Selection.Range, Type:= _
wdFieldAddressBlock, Text:= _
"\f ""<<_COMPANY_" & Chr(13) & ">><<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" & Chr(13) & "<<_STREET1_" & Chr(13) & ">><<_STREET2_" & Chr(13) & ">><<_POSTAL_ >><<_CITY_>><<" & Chr(13) & "_COUNTRY_>>"" \l 1031 \c 2 \e ""Deutschland"" "Visual Basic:
Try Me.WordApp.ActiveDocument.Fields.Add(Range:=Selection.Range, Type:=Word.WdFieldType.wdFieldAddressBlock, Text:= _ "\f ""<<_COMPANY_" & Chr(13) & ">><<_TITLE0_ >><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" & Chr(13) & "<<_STREET1_" & Chr(13) & ">><<_STREET2_" & Chr(13) & ">><<_POSTAL_ >><<_CITY_>><<" & Chr(13) & "_COUNTRY_>>"" \l 1031 \c 2 \e ""Deutschland"" ") Catch End Try
Die Fehlermeldung lautet: Selection nicht definiert. Was kann ich tun, wie sieht die Codierung aus?
Freundliche Grüße
- Bearbeitet Robert BreitenhoferModerator Freitag, 25. März 2011 16:27 Formatierung
Antworten
-
Hallo,
Me.WordApp.ActiveDocument.Fields.Add(Range:=Selection.Range, Type:=Word.WdFieldType.wdFieldAddressBlock, Text:= _
Die Fehlermeldung lautet: Selection nicht definiert. Was kann ich tun, wie sieht die Codierung aus?
Selection ist eine Eigenschaft des Application Objekts, folglich führt folgende Anweisung zum Ziel:
Me.WordApp.ActiveDocument.Fields.Add(Range:=Me.WordApp.Selection.Range, ...
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort markiert Robert BreitenhoferModerator Freitag, 25. März 2011 16:28
Alle Antworten
-
Hallo,
Me.WordApp.ActiveDocument.Fields.Add(Range:=Selection.Range, Type:=Word.WdFieldType.wdFieldAddressBlock, Text:= _
Die Fehlermeldung lautet: Selection nicht definiert. Was kann ich tun, wie sieht die Codierung aus?
Selection ist eine Eigenschaft des Application Objekts, folglich führt folgende Anweisung zum Ziel:
Me.WordApp.ActiveDocument.Fields.Add(Range:=Me.WordApp.Selection.Range, ...
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de- Als Antwort markiert Robert BreitenhoferModerator Freitag, 25. März 2011 16:28
-
Guten Morgen Herr Dörfler,
zunächst ein herzliches Dankeschön für die schnelle Beantwortung. Das "Problem" ist gelöst. Nun habe ich aber etwas anderes :)
Mit dem Makro werden die Etiketten (ca. 440) hintereinander gedruckt (ca. 7 Blatt). Aber mit dem Code in Visual Basic wird jeweils eine Adresse pro Blatt gedruckt, also ca. 440 Blatt. Da ich kein Profi-Programmierer bin, wäre ich Ihnen sehr dankbar, wenn Sie mir noch einen Tipp geben könnten.
Hier noch einmal die Code-Beispiele:
Sub Makro1() ' ' Makro1 Makro ' ' ActiveDocument.MailMerge.MainDocumentType = wdMailingLabels ActiveDocument.MailMerge.OpenDataSource Name:= _ "C:\SEMK\San Jaime\Datenbanken\SanJaimeDaten.mdb", ConfirmConversions:= _ False, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _ PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _ WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _ Connection:= _ "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\SEMK\San Jaime\Datenbanken\SanJaimeDaten.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;" _ , SQLStatement:="SELECT * FROM `Eigentümer`", SQLStatement1:="", SubType _ :=wdMergeSubTypeAccess ActiveDocument.Fields.Add Range:=Selection.Range, Type:= _ wdFieldAddressBlock, Text:= _ "\f ""<<_COMPANY_" & Chr(13) & ">><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" & Chr(13) & "<<_STREET1_" & Chr(13) & ">><<_STREET2_" & Chr(13) & ">><<_POSTAL_ >><<_CITY_>><<" & Chr(13) & "_COUNTRY_>>"" \l 1031 \c 2 \e ""Deutschland"" \d" With ActiveDocument.MailMerge .Destination = wdSendToPrinter .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=False End With End Sub
Private Sub AdresseDrucken() Me.WordApp.ActiveDocument.MailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdMailingLabels Me.WordApp.ActiveDocument.MailMerge.OpenDataSource(Name:= _ "C:\SEMK\San Jaime\Datenbanken\SanJaimeDaten.mdb", ConfirmConversions:= _ False, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _ PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _ WritePasswordTemplate:="", Revert:=False, Format:=Word.WdOpenFormat.wdOpenFormatAuto, _ Connection:= _ "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\SEMK\San Jaime\Datenbanken\SanJaimeDaten.mdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=4;Jet OLEDB:Database Locking Mode=0;" _ , SQLStatement:="SELECT * FROM `Eigentmer`", SQLStatement1:="", SubType _ :=Word.WdMergeSubType.wdMergeSubTypeAccess) Try Me.WordApp.ActiveDocument.Fields.Add(Range:=Me.WordApp.Selection.Range, Type:=Word.WdFieldType.wdFieldAddressBlock, Text:= _ "\f ""<<_COMPANY_" & Chr(13) & ">><<_FIRST0_>><< _LAST0_>><< _SUFFIX0_>>" & Chr(13) & "<<_STREET1_" & Chr(13) & ">><<_STREET2_" & Chr(13) & ">><<_POSTAL_ >><<_CITY_>><<" & Chr(13) & "_COUNTRY_>>"" \l 1031 \c 2 \e ""Deutschland"" \d") Catch End Try With Me.WordApp.ActiveDocument.MailMerge .Destination = Word.WdMailMergeDestination.wdSendToNewDocument .SuppressBlankLines =True With .DataSource .FirstRecord =Me.WordApp.ActiveDocument.MailMerge.DataSource.FirstRecord() .LastRecord =Me.WordApp.ActiveDocument.MailMerge.DataSource.LastRecord() End With .Execute(Pause:=False) End With End Sub
Für Ihre Bemühungen vorab ein herzliches Dankeschön!
Mit freundlichen Grüßen
Manfred Keuter
- Bearbeitet Robert BreitenhoferModerator Freitag, 25. März 2011 16:36 Formatierung