seit einige Jahren nutze ich ein von mir geschriebenes LO/OO Basic Script um meine Rechnungsformulare zu befüllen.
Seit ein paar Tagen bekomme ich beim Start die Fehlermeldung "unerwartetes Symbol : end sub" , was dazu führt, dass ich die Makros nicht mehr verwenden kann. Ich kann auch keinen Grund für diese Fehlermeldung ermitteln. Vor allem, da ich außer einer Erweiterung auf das Linux Pfadsystem keine Veränderung am Code vorgenommen habe.
Hier ist das Problemkind und LO nölt direkt im ersten Sub rum, dass da ein unerwartetes End Sub auftaucht - verstehe ich nicht, da das erste Sub ja auch mal beendet werden muß.
Code: Alles auswählen
Global ReNr as string
Global Path as string
Global PathLFN as string
Global Auswahl as integer
Global KDmax as integer
Global KDselect(1)
Global Data(1)
Global KDAuswahl as object
Global KDdata as object
Global Adressen as string
Global Kunden(1,1)
Global KDwork(1)
Global MaxData as integer
Global LFN as string
Sub onStart
Globalscope.BasicLibraries.LoadLibrary("Tools")
DialogLibraries.LoadLibrary( "Standard" )
KDAuswahl = CreateUnoDialog(DialogLibraries.Standard.KD)
KDdata = CreateUnoDialog(DialogLibraries.Standard.KDdat)
Dim Zeile as String
dim temp as variant
dim otemp as object
Dim Z as integer
' Datensatzanpassung
MaxData = 16 ' Anzahl der Spalten
Redim Data(MaxData)
Tabelle = ThisComponent.Sheets(0)
if FileExists("C:\Users\megat\HiDrive\11_Gewerbe\") then
Path = "C:\Users\megat\HiDrive\11_Gewerbe\"
else
if FileExists("/home/daniel/NFS_Clouds/MasterDrive/11_Gewerbe/") then
Path="/home/daniel/NFS_Clouds/MasterDrive/11_Gewerbe/"
end if
Adressen = ConvertToURL(Path & "Adressen.csv")
PathLFN = ConverttoURL(Path & right(str(year(now)),4) & "\LFN.txt")
' Wenn noch keine LFN Datei existiert, Datei erzeugen und mit 1 Starten
if not(fileexists(PathLFN)) then
open (PathLFN) for output as #2
Print #2 "1"
close #2
end if
oInputStream = CreateUnoService("com.sun.star.ucb.SimpleFileAccess").openFileRead(Adressen)
oFileRead = createUnoService("com.sun.star.io.TextInputStream")
oFileRead.InputStream = oInputStream
oFileRead.Encoding = "ISO-8859-15"
' -----------------------------------------------------------------------
' ---------- Ermitteln der Laufenden Rechnungsnummer --------------------
' -----------------------------------------------------------------------
open PathLFN for Input as #2
input #2 temp
close #2
LFN =val(temp) + 1
' -----------------------------------------------------------------------
' -------------- Ermitteln der Kundenanzahl -----------------------------
' -----------------------------------------------------------------------
open Adressen for input as #1
KDmax = -1
while not EOF(1)
Line input #1 Zeile
KDmax = KDmax+1
wend
close #1
' -----------------------------------------------------------------------
' -------------- Erstellen der Kundendatenbank---------------------------
' -----------------------------------------------------------------------
REdim KDselect(KDmax)
Redim Kunden(KDmax+1,MaxData)
Redim KDwork(KDmax+1)
for Z = 0 to KDmax
Zeile = oFileRead.readLine
KDwork(Z) = Zeile
for i=0 to MaxData-1
semi = instr(Zeile,";")
Kunden(Z,i) = left(Zeile,semi)
Kunden(Z,i) = deletestr(Kunden(Z,i),";")
Zeile = right(Zeile,len(Zeile)-semi)
next
Kunden(Z,MaxData) = Zeile
next
oInputStream.closeInput
oFileRead.closeInput
' -----------------------------------------------------------------------
' -------------- Datensatz für die Rechnung erstellen -------------------
' -----------------------------------------------------------------------
For i = 1 to KDMax
Kunden(i,0) = right("0"&Kunden(i,0),2)
if Kunden(i,4) <>"" then
temp = "("&Kunden(i,0)&") "& Kunden(i,4) &";"& Kunden(i,7)
Else
temp = "("&Kunden(i,0)&") "& Kunden(i,2) &" "& Kunden(i,3)
end if
if (Kunden(i,16)="aktiv") then KDAuswahl.getControl("Auswahlbox").addItem(temp,i-1)
next
KDAuswahl.execute()
If Auswahl >0 then
' -----------------------------------------------------------------------
' -------------- Übertragen des ausgewählten Kunden ---------------------
' -----------------------------------------------------------------------
KDselect(0) = left(Kunden(Auswahl,3),1)&left(Kunden(Auswahl,2),1)&left(Kunden(Auswahl,5),1)&left(Kunden(Auswahl,6),3)&left(Kunden(Auswahl,7),1)
if Kunden(Auswahl,4)<>"" then
KDselect(1) = Kunden(Auswahl,4)
Else
KDselect(1) = Kunden(Auswahl,1)
end if
if Kunden(Auswahl,4)<>"" then
KDselect(2) = "z.Hd." & Kunden(Auswahl,1) & " " & left(Kunden(Auswahl,2),1) & ". " &Kunden(Auswahl,3)
Else
KDselect(2) = Kunden(Auswahl,2) & " " & Kunden(Auswahl,3)
end if
if Kunden(Auswahl,1)="Herr" then
KDselect(6) = "Sehr geehrter Herr " & Kunden(Auswahl,3) & ","
else
if Kunden(Auswahl,1)="Frau" then KDselect(6) = "Sehr geehrte Frau " & Kunden(Auswahl,3) & ","
end if
temp = str(month(now))
temp = right(temp,len(temp)-1)
temp = right("0"&temp,2)
KDselect(7) = right(str(year(now)),1) &_
temp & "/" &_
right(str(year(now)),2) &_
right("000" & right(str(LFN),len(str(LFN))-1),4)
Kunden(Auswahl,14) = CDbl(Kunden(Auswahl,14))
Kunden(Auswahl,15) = CDbl(Kunden(Auswahl,15))*.25/1.19
' -----------------------------------------------------------------------
' -------------- Übertragen des ausgewählten Kunden ---------------------
' -----------------------------------------------------------------------
Tabelle.getCellbyPosition( 1, 3).string = KDselect(0) ' Kundennummer
Tabelle.getCellbyPosition( 1, 4).String = KDselect(1) ' Firma oder Anrede
Tabelle.getCellbyPosition( 1, 5).String = KDselect(2) ' Name
Tabelle.getCellbyPosition( 1, 6).String = Kunden(Auswahl,5) ' Straße
Tabelle.getCellbyPosition( 1, 7).String = Kunden(Auswahl,6) ' PLZ
Tabelle.getCellbyPosition( 2, 7).String = Kunden(Auswahl,7) ' Ort
Tabelle.getCellbyPosition(11, 5).String = KDselect(7) ' Rechnungsnummer
Tabelle.getCellbyPosition(11, 4).value = Datevalue(now) ' Rechnungsdatum
Tabelle.getCellbyPosition(10,34).value = Kunden(Auswahl,14) ' Stundensatz
Tabelle.getCellbyPosition(10,35).value = Kunden(Auswahl,14) ' Stundensatz Anfahrt
end if
end sub
'==================================================================================
Sub fin
Auswahl = val(Mid(KDAuswahl.getControl("Auswahlbox").text,2,2))
if Auswahl = 0 then
KDAuswahl.getControl("Auswahlbox").setFocus()
goto noend
end if
KDAuswahl.endexecute()
noend:
end sub
'==================================================================================
Besten Dank schonmal im Vorraus ..
Daniel