von saxo » Fr, 01.10.2021 13:29
Hallo,
versuche folgenden Code aus Excel in Libreoffice umzuschreiben. Bekomme Fehlermeldung:
Error 35: Prozedur Sub oder Function nicht definiert. In line: 13
Das Schräge ist, dass es unter Linux funktioniert, sobald ich im Quellcode auch nur irgend ein Zeichen in einem Kommentar verändere. Unter Windows scheint es auch zu funktionieren.
Es geht um .cells() und die With Sheets() Formulierung, die wohl in LO nicht richtig funktionieren.
Habe auch schon mit ThisComponent.CurrentController.ActiveSheet rumprobiert um die Tabelle und die Zelle zu adressieren, bekomme das aber nicht hin. Das Programm soll den Inhalt der ersten Zelle in eine utf-8 Textdatei im gleichen Ordner schreiben.
Vielen Dank
Sub Test()
Dim myTextFile As Object, mySf As Object, myFileStream As Object
Dim s As String
On Error Goto ErrorHandler
mySf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
myTextFile = createUnoService("com.sun.star.io.TextOutputStream")
myFileStream = mySf.openFileWrite(CurrentFolder() & "Test.csv")
myTextFile.OutputStream = myFileStream
myTextFile.Encoding = "UTF-8"
With Sheets("contacts")
s = .Cells(1, 1)
myTextFile.writeString(s & chr(13) & chr(10))
End With
MsgBox "exported to Test.csv in same folder"
myFileStream.closeOutput : myTextFile.closeOutput
Exit Sub
ErrorHandler:
MsgBox "Error " & Err & ": " & Error$ & chr(13) & "In line: " & Erl
myFileStream.closeOutput : myTextFile.closeOutput
End Sub
Sub CurrentFolder() As String
REM Funktioniert unter Windows und Linux
dim sUrl As String
dim sParts As Variant
sUrl = ThisComponent.getURL()
sParts = Split(sUrl, "/")
ReDim Preserve sParts(0 to UBound(sParts) - 1)
CurrentFolder = Join(sParts, "/") & "/"
'MsgBox(CurrentFolder)
End Sub
- Dateianhänge
-
- Test.ods
- (20.84 KiB) 69-mal heruntergeladen
Hallo,
versuche folgenden Code aus Excel in Libreoffice umzuschreiben. Bekomme Fehlermeldung:
Error 35: Prozedur Sub oder Function nicht definiert. In line: 13
Das Schräge ist, dass es unter Linux funktioniert, sobald ich im Quellcode auch nur irgend ein Zeichen in einem Kommentar verändere. Unter Windows scheint es auch zu funktionieren.
Es geht um .cells() und die With Sheets() Formulierung, die wohl in LO nicht richtig funktionieren.
Habe auch schon mit ThisComponent.CurrentController.ActiveSheet rumprobiert um die Tabelle und die Zelle zu adressieren, bekomme das aber nicht hin. Das Programm soll den Inhalt der ersten Zelle in eine utf-8 Textdatei im gleichen Ordner schreiben.
Vielen Dank
Sub Test()
Dim myTextFile As Object, mySf As Object, myFileStream As Object
Dim s As String
On Error Goto ErrorHandler
mySf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
myTextFile = createUnoService("com.sun.star.io.TextOutputStream")
myFileStream = mySf.openFileWrite(CurrentFolder() & "Test.csv")
myTextFile.OutputStream = myFileStream
myTextFile.Encoding = "UTF-8"
With Sheets("contacts")
s = .Cells(1, 1)
myTextFile.writeString(s & chr(13) & chr(10))
End With
MsgBox "exported to Test.csv in same folder"
myFileStream.closeOutput : myTextFile.closeOutput
Exit Sub
ErrorHandler:
MsgBox "Error " & Err & ": " & Error$ & chr(13) & "In line: " & Erl
myFileStream.closeOutput : myTextFile.closeOutput
End Sub
Sub CurrentFolder() As String
REM Funktioniert unter Windows und Linux
dim sUrl As String
dim sParts As Variant
sUrl = ThisComponent.getURL()
sParts = Split(sUrl, "/")
ReDim Preserve sParts(0 to UBound(sParts) - 1)
CurrentFolder = Join(sParts, "/") & "/"
'MsgBox(CurrentFolder)
End Sub