Założyłem temat, ponieważ mam ogromny problem przy konwersji makra z VBA na Basic. Do tej pory z poziomu makro w VBA byłem w stanie otworzyć plik .dbf (dBase IV), wczytać przy pomocy ADODB do recordset'u i dokonać dalszych zadań. Problem polega na tym, że w OpenOffice, z tego co zdążyłem zauważyć, należy zarejestrować bazę danych by z niej korzystać - niestety w moim przypadku jest to niemożliwe (z pozycji narzędzi ukrytych pod F4 przynajmniej), skoroszyt jest przenoszony, korzysta z różnych baz, na różnych komputerach, itp. Jedynym rozwiązaniem moim zdaniem jest zarejestrowanie w trakcie działania aplikacji, bazy danych przy użyciu makro (dialog otwarcia pliku -> nazwa -> otwarcie i rejestracja bazy) i następnie prace na takiej bazie.
Mój dotychczasowy kod (próbowałem przy użyciu RowSet wczytać jakoś dane z pliku, ale nie wiem czym powinno być Data Source Name i jaką nazwę tabeli podać w zapytaniu, skoro plik sam w sobie jest tabelą):
Kod: Zaznacz cały
Dim FilePicker As Object
Dim FilePath() As String
FilePicker=createUnoService("com.sun.star.ui.dialogs.FilePicker")
fResult = FilePicker.execute
FilePath()=FilePicker.GetFiles
dispdir=FilePicker.DisplayDirectory
If fResult > 0 Then
fPath = Right(Filepath(0), Len(Filepath(0)) - InStr(Filepath(0), "///") - 2)
fName = Right(fPath, Len(fPath) - InStrRev(fPath, "/"))
fPath = Left(fPath, InStrRev(fPath, "/"))
rst = CreateUnoService("com.sun.star.sdb.RowSet")
With rst
.DataSourceName=fPath
.CommandType=2 'table
.Command="Select * From " & fName
.execute()
End With
Else
MsgBox "No file has been chosen!", vbExclamation, "Error"
Exit Sub
End If