CALC: Rechnungsnummer erzeugen und als Dateiname abspeichern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: CALC: Rechnungsnummer erzeugen und als Dateiname abspeichern

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von justy » Mi, 18.07.2012 15:06

Hallo zusammen,

die Lösung war Ereignis: "neues dokument" NICHT "dokument erzeugen" für die Vorlage.

jetzt habe ich allerdings das Problem, dass ich im neuen dokument (unbenannt) das Abspeichern unter der neuen Reklamationsnummer nicht hinbekomme. Ich finde kein Ereignis das mit dem Makro:

REM ***** BASIC *****

sub SpeichernUnter
oDoc=thisComponent
Sheet = oDoc.Sheets(0)
Cell = Sheet.getCellByPosition(0, 0) '<= Das ist Zelle A1
Filename = Cell.String
Path = "file:///C:/Hier Deinen Speicherordner eingeben/"
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
args1(0).Value = "StarOffice XML (Calc)"
oDoc.storeasurl(Path & Filename & ".ods",args1())
end sub

funktioniert.

PLS help

THX

justy

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von justy » Mi, 18.07.2012 11:30

Hallo Karo,

hab das Ereignis auf Dokument erzeugen angepasst. Funktioniert aber leider nicht. RKL_Nr bleibt unverändert. :-(

gruß

justy

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von Karolus » Mi, 18.07.2012 11:04

Hallo
Ja, du kannst das auf einer Vorlage anwenden, in dem Fall muss das Makro dem Ereignis "Dokument erzeugen" in der Vorlage zugeordnet werden.

Karo

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von justy » Mi, 18.07.2012 10:53

Hallo TorSo,

super hat jetzt geklappt. Vielen Dank!!!

Nur ergibt sich jetzt daraus folgendes Problem. Wenn ich eine Reklamation nochmals öffne um Daten nachzutragen, dannn ändert sich jetzt die Reklamationsnummer:

zum Einen weil ja schon eine Datei im Verzeichnis vorhanden ist (also +1 bei RKL Nr)
zum Anderen weil eine temporäre Datei erzeugt wird ( nochmal +1 bei RKL Nr)

Kann man das Makro ev. auf eine Vorlage anwenden? so das dieses Problem nicht entsteht?

beste grüße

justy

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von TorSo » Di, 17.07.2012 10:02

Guten Morgen,

ich vermute jetzt mal, dass Deine Makros nicht in "Meine Makros" liegen, sondern evtl. in der entsprechenden Arbeitsmappe. Dann müsstest Du natürlich diese anwählen um deine Makros zuzuordnen.


Gruß TorSo

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von justy » Mo, 16.07.2012 16:36

hab ich jetzt verstanden.

Leider geht's nicht.

1. ich kann nur: Extras>Makros>Makros verwalten>OpenOffice.org> meine makros>zuordnen.....

bei deinem weg ist "zuordnen" ausgegraut.

wenn ich meinen weg wähle kommt folgender Fehler: Laufzeitfehler Eigenschaft oder Methode nicht gefunden: sheets

an der Stelle: oSheet = oDoc.sheets(0)

komisch. Eigentlich müsste das doch gehn.

verflixt :-(

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von TorSo » Mo, 16.07.2012 15:43

Also 5 ist doch dann die nächste laufende Nummer. dann stimmt´s doch.

Öffne einfach Deine Reklamationsdatei

Extras>Makros>Makros verwalten>OpenOffice.org>zuordnen>Laden des Dokuments beendet>Makro>jetzt das Makro auswählen "DateienZaehlen">OK

Nun sollte beim Öffnen der Datei automatisch die laufende Nummer in Zelle A1 stehen.


Das zweite Makro kannst Du dann beim schliessen der Datei ausführen lassen. Dann muss niemand ein Makro von Hand ausführen.


Gruß TorSo

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von justy » Mo, 16.07.2012 15:13

Hi TorSo,

besten Dank schon mal!!! Bin mir nicht ganz sicher wie ich es einbinden soll:

Makro 1: für die fortlaufende Nummer:

wenn ich das Makro "Dateien zählen" ausführe bekomme ich: 5 in zelle A1 / es sind aber nur 4 dateien im Ordner

wenn ich das Makro function " getdirs2 ausführe bekomme ich Fehler: BASIC Laufzeitfehler Argument ist nicht optional

wenn ich in Zelle A1 eingebe: =getdirs() dann bekomme ich den selben Fehler. Wenn ich dann OK drücke kommt die Zahl 4
------------------------
weitere Fragen: bin echt nicht mehr so fit in Makros wenn ich denn schonmal war :-)

wie ist es zu verstehen:

Nun würde ich den ersten Code mit dem Öffnen des entsprechenden Dokuments verknüpfen.?

Das zweite kannst Du dann ganz normal ausführen.?

Es sollte so sein, dass beim öffnen sich die Reklamationsnummer automatisch um +1 erhöht und automatisch beim speichern diese Nummer als Dateiname verwendet wird. Der Nutzer soll keine Makros manuell ausführen müssen.

Besten Dank für deine Hilfe

Grüße

justy

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von TorSo » Mo, 16.07.2012 14:23

Das ist für Deine fortlaufende Nummer

Code: Alles auswählen

REM  *****  BASIC  *****

sub DateienZaehlen
        dim liste(10000) as string
        m=getdirs(liste(),0,"C:\Hier den Ordner mit Deinen Reklamationen")
           For i=0 to m-1
           next i
          oDoc = ThisComponent
oSheet = oDoc.sheets(0)
oZelle = oSheet.getCellbyPosition(0,0)
oZelle.Value = m + 1
        end sub



        function getdirs( liste(),z, folder) as integer
           sFolderUrl = ConvertToUrl( Folder )
           oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
           aFolders = oSimpleFileAccess.getFolderContents( sFolderUrl,true )
           For i = LBound( aFolders ) To UBound( aFolders )
             sFile = aFolders( i )
             If oSimpleFileAccess.isFolder( sFile ) Then
                getdirs( liste(),z, sFile)
              Else
                liste(z)=sfile
                z=z+1
             end if   
           next i       
           getdirs=z
        end function
Das ist zum Speichern Unter

Code: Alles auswählen

REM  *****  BASIC  *****

sub SpeichernUnter
oDoc=thisComponent
Sheet = oDoc.Sheets(0)
Cell = Sheet.getCellByPosition(0, 0) '<= Das ist Zelle A1
Filename = Cell.String
Path = "file:///C:/Hier Deinen Speicherordner eingeben/"
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
args1(0).Value = "StarOffice XML (Calc)"
oDoc.storeasurl(Path & Filename & ".ods",args1())
end sub

Nun würde ich den ersten Code mit dem Öffnen des entsprechenden Dokuments verknüpfen.

Das zweite kannst Du dann ganz normal ausführen.


Gruß TorSo

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von justy » Mo, 16.07.2012 13:19

Hallo TorSo,

Danke für die Antwort. Hab das gerade mal versucht. Leider kommt jetzt in Zelle A1 #NAME?.

Bin mir auch nicht sicher wie ich das Makro aufzeichen soll. Habe makro aufzeichnen gestartet-> dann beide Makros hintereinander ausgeführt-> und unter einem neuen Namen gespeichert.

Wie gehts dann weiter?

Grüße

justy

Re: CALC: Rechnungsnummer erzeugen und als Dateiname abspeic

von TorSo » Mo, 16.07.2012 13:03

Hallo Justy,

ich bin sicher auch noch nicht der Experte hier, aber wenn ich Dich richtig verstanden habe, funktionieren beide Makro einzeln.
Dann würde ich einfach ein Makro aufzeichnen, in dem ich die Makros in der gewünschten Reihenfolge starte.

Ist jetzt nur ein Gedanke der mir spontan einfiel. Aber vielleicht reicht Dir das ja schon.


Gruß TorSo

CALC: Rechnungsnummer erzeugen und als Dateiname abspeichern

von justy » Mo, 16.07.2012 12:53

Hallo an alle,

Problem 1: Es soll eine fortlaufende Reklamationsnummer erzeugt werden (zelle A1).

Dies habe ich gelöst mit:

Code: Alles auswählen

function GetAndSetNumber as string
   dim f as Integer
   dim rechnungsdatei as string   
   dim renummer as string
  rechnungsdatei="d:/RKLnr.txt"
   if FileExists("file:///"&rechnungsdatei) then
         f = FreeFile()
         Open "file:///"&rechnungsdatei for Input as #f
               Line Input #f, renummer
               close #f
               f = FreeFile()
               Open "file:///"&rechnungsdatei for output as #f
               Print #f, val(renummer)+1
               close #f
        else
            renummer=0
        endif
    GetAndSetNumber=renummer  
end function
Problem 2: Die Reklamation soll unter dem Namen (wert zelle A1) in einem bestimmten ordner abgespeichert werden.

gelöst habe ich dies mit:

Code: Alles auswählen

Sub ReNummer_Speichern
   dim dummy()
   oDoc = ThisComponent
   oSheet = oDoc.Sheets.getByName("Tabelle1") 'Tabellenblattname
   oCell = oSheet.getCellRangeByName("A1") 'Zelle A1, in der Rechnungsnummer steht
   sReNummer = oCell.String 
   sLaufwerk = "d:/" 'Achtung: Für den Speicherort den Laufwerkspfad anpassen
   Filename = sReNummer
   neuerpfad = sLaufwerk + Filename + ".ods"
   dateiurl=converttourl(neuerpfad)
   odoc.storeAsUrl(dateiurl,dummy())
End Sub
problem 3: Nun soll das ganze kombiniert werden. Das klappt aber nicht da ich funktion und sub habe.

Ziel: Es soll eine fortlaufende nummer in A1 geschrieben werden und nschließend die Datei unter der fortlaufenden Nummer abgespeichert werden.

Kann mir da jemand weiterhelfen?

Besten Dank

Sven

P.S. die angegebenen Lösungen habe ich hier aus dem Forum bzw. von http://www.dannenhoefer.de

(System: oo 3.4.0 win7 x 64)



Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst; CODE tags gesetzt

Nach oben