merge field

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Mr.Doh
Beiträge: 1
Registriert: Mi, 17.04.2013 12:15

merge field

Beitrag von Mr.Doh »

hallo
ich habe frage folgende.
ich habe ein writer document mit merge field aus tabelle. ist moeglich die fields via macro zu fuellen.

bitte entschuldigen mein schlechtes deutsch. ich lernen erst seit 2 Jahre

in liebe
vladi
michaelf2k
Beiträge: 4
Registriert: Di, 02.04.2013 10:02

Re: merge field

Beitrag von michaelf2k »

ich hab mich in letzter zeit auch mit dem prolblem von mailmerge befasst, hier mal ein code um die felder zu füllen

Code: Alles auswählen

Sub merge
   Dim mm as Object
   mm = CreateUnoService("com.sun.star.text.MailMerge")
   
   With mm
      .DocumentURL = "file:///C:/document.odt"
      .DataSourceName = "datenbankname"     'name der Datenbank 
      .CommandType = 0    
      .Command = "tabellenname"                   'Name der Tabelle, nicht Datenbankname
      
      .OutputType = 2
       com.sun.star.text.MailMergeType.FILE 
      .OutputUrl = "file:///C:/testordner/"      '
      .FileNamePrefix = "serienbrief" 
      .SaveAsSingleFile=True
      .execute(Array())
      .dispose()
      'msgbox "Serienbrief erstellt"
   End With
'end sub 
da hätt ich eigentlich auch noch ne frage
der obige code schreibt den inhalt bzw den fertigen serienbrief in eine datei. ich hab aber jedoch vor den fertigen brief dann separat zu öffnen.
die ausgabedatei heißt bei mir dann serienbrief0.odt, serienbrief1.odt usw....
ich hab zwar das makro am ende hier um den serienbrief0.odt zu öffnen, aber da es ja automatidsiert sein soll habe ich an eine andere lösung gedacht.
so könnte ich den serienbrief1.odt nicht mehr öffnnen.

Code: Alles auswählen

Sub killAltenBrief
 Kill "C:\serienbrief0.odt"
end sub
das führt dazu, dass ich in dem ordner immer nur serienbrief0.odt hätte und ich den alten immer wieder lösche.
problem hier ist auch, wenn die serienbrief0.odt nicht vorhanden ist, kommt ein fehler im makro, dass er die datei nciht findet. wie kann ich das mit einer if bedingung abfangen?

eine möglichkeit wäre halt den serienbrief0.odt via makro zu löschen
und zwar den fertigen serienbrief nicht in eine datei umleiten sondern ein ein neues leeres document und das direkt anzuzeigen. wäre das iwie realisierbar?
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: merge field

Beitrag von F3K Total »

Moin,
michaelf2k hat geschrieben:wenn die serienbrief0.odt nicht vorhanden ist, kommt ein fehler im makro, dass er die datei nciht findet. wie kann ich das mit einer if bedingung abfangen?
das geht doch nicht so schwer:

Code: Alles auswählen

Sub killAltenBrief
    sUrl = "C:\serienbrief0.odt"
    If FileExists(sUrl) Then
        Kill sUrl
    else
        MsgBox "Datei nicht gefunden",48,"Fehler"
    End If
end sub
Gruß R
michaelf2k
Beiträge: 4
Registriert: Di, 02.04.2013 10:02

Re: merge field

Beitrag von michaelf2k »

wie müsste ich denn das macro umbauen damit ich kein output in eine datei bekomme sondern in ein neues leeres dokument bekomme (im gleichen ordner)?
und noch ne frage, ich habe den code hier wo ich die datei mit datum und uhrzeit speicher.
wie kann ich diese datei dann per makro öffnen?

Code: Alles auswählen

Function GetDateAsString as string
  Dim sdatum as String
  Dim szeit as String
  Dim snew1 as String
  Dim snew2 as String
   GlobalScope.BasicLibraries.LoadLibrary("Tools")
  sDatum=date
  sNew1=DeleteStr(sdatum,".")   
  szeit=time
  sNew2=DeleteStr(szeit,":") 
  GetDateAsString="_vom"+sNew1+"_Uhrzeit"+sNew2
end Function

Code: Alles auswählen

  com.sun.star.text.MailMergeType.FILE 
        .OutputUrl = "file:///C:/"      
        .FileNamePrefix = "serienbrief"+erstellungsdatum                'hier speicher ich das dokument mit dem datum und uhrzeit
        .SaveAsSingleFile=True
        .execute(Array())
        .dispose()
        msgbox "Serienbrief erstellt"

Code: Alles auswählen

 Dim sURL$                        
    Dim oSvc as object

    oSvc = createUnoService("com.sun.star.system.SystemShellExecute")           
    sURL = "file:////C:/serienbrief.odt"               'hier möchte ich das gespeicherte dokument mit datum und uhrzeit öffnen
    oSvc.execute(sURL, "", 0)
wie müsste ich den code ändern im letzten abschnitt?
Antworten