Normálně otevřít z Calcu FilePickerem, zvolit filter kde se dají nastavit separátory.
Další možnost je načíst to schránkou a vložit jinak - neformátovaný text.
Další možnost je načíst to jako zavřený sešit :
Sub TextDoCalcu_BezFiltru
Dim FileNo As Integer
Dim CurrentLine As String
Dim File As String
Dim Msg as String
Dim I as Long
' Nastaví buňku v aktuálním listu.
currentSheet=ThisComponent.CurrentController.ActiveSheet
fileName = currentSheet.getCellRangeByName("A1").getString
' Vytvoří nový file handler a otevře cestu
FileNo = FreeFile
Open fileName For Input As #FileNo
I = 0
' číst soubor, dokud není dosaženo konce (EOF)
Do While not eof(FileNo)
' Čte řádek
Line Input #FileNo, CurrentLine
' definuje rozsah, aby údaje šly do A2 : A9999 '
curentCell = currentSheet.getCellRangeByName("A2:A9999").getCellByPosition(0,I)
' Vybere I-tou buňku v definovaném rozmezí, a dá tam řádek souboru
curentCell.String = CurrentLine
'Inkrementuje I o jednu
I = I + 1
Loop
Close #FileNo
End Sub
Nebo tohle - kdysi jsem to testoval, ale už dlouho ne.
Sub ImportCSVIntoTableUTF '(oDoc as object, tableName as String, fileName as String)
Rem http://www.oooforum.org/forum/viewtopic.phtml?p=365860
Dim oDoc as object
Dim oSheet as Object
Dim oPlan as Object
Dim fileName as string
Doc = ThisComponent
oSheet = Doc.Sheets(1)
fileName = "D:\Office\Adresáře\Podklady těžby XML\VstupyNeupravené\adresy8.txt"
oPlan = Doc.Sheets(1) '.getByIndex(1)
sURL = ConvertToURL ( fileName )
sOrigin = ""
sFilter = "Text - txt - csv (StarCalc)"
sOpc = "44,34,76,1,1/2/2/1/3/2"
' following use "|" as delimiter - ("|" = 124)
' sOpc = "124,,0,1,1/2/2/1/3/2"
nModo = com.sun.star.sheet.SheetLinkMode.NORMAL
' link file
oPlan.link(sURL, sOrigin, sFilter, sOpc, nModo)
' reset link
oPlan.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)
End Sub
Častěji používám tohle
Sub NactiTxtDoCalcu 'Chodí supr
oCell = thisComponent.Sheets.getByIndex(0).getCellByPosition(0,0)
iNumber = freefile()
open "/tmp/dummy.txt" for input as iNumber
While not eof(iNumber)
Line Input #iNumber, sLine
If sLine <>"" then
sMsg = sMsg & sLine & chr(10)
end if
wend
Close #iNumber
oCell.setString(sMsg)
End Sub
Pak ještě existují makra pro Writer. Dá se načíst obsah podle dílů (odstavce, věty ap.). Při tom ale musíte znát předem strukturu. Ta se dá zjistit i makrem, ale stejně nepoznáte nic pokud nevíte, že je to jen nějak modifikovaný známý text.
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ