Czyli np. wiersze od 3 do 6 i w każdym z tych wierszy znaki na pozycji (w kolumnie) od 5 do 8.
Jak to zrealizować w przedstawionym w przytoczonym temacie makrze?
Kod: Zaznacz cały
'const FILEOPEN_SIMPLE = 0
'const FILESAVE_SIMPLE = 1
sub czytajUstawienia()
' wybiera plik przez okno dialogowe i wczytuje z niego wybrane wiersze do arkusza '
nazwapliku = OOoFileOpenDialog("", "Czytaj plik")
if nazwapliku <> "" then
czytajUstawieniaZPliku(nazwapliku)
endif
end sub
function OOoFileOpenDialog(fname, title) as string
' definiuje okno dialogowe wyboru pliku via OOo '
picker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
picker.setDisplayDirectory("file:///" & fname)
picker.setTitle(title)
if picker.execute() then
fname = picker.Files(0)
else
fname = ""
endif
OOoFileOpenDialog = fname
end function
sub listaNaArkusz(lista, pierwszy, ostatni, arkusz, kolumna, wiersz)
' wstawia elementy listy do wybranej kolumny arkusza, począwszy od wskazanego wiersza '
for i = pierwszy to ostatni
x = lista(i)
arkusz.getCellByPosition(kolumna, wiersz).setString(x)
wiersz = wiersz + 1
next i
end sub
sub czytajUstawieniaZPliku(nazwapliku)
' wczytuje wybrane wiersze ze wskazanego pliku do arkusza
' nazwapliku: url czytanego pliku
p = FreeFile
open nazwapliku for input as #p
zawartosc = ""
Do While not eof(p)
Line Input #p, msg
zawartosc = zawartosc & msg & "#13"
Loop
close #p
zawartosc = split(zawartosc, "#13")
' # zakres wierszy do uwzględnienia
pierwszy = 3
ostatni = 6
' # na który arkusz
ark = thisComponent.Sheets.getByIndex(0)
' # w które miejsce arkusza
kol = 0
wiersz = 1
listaNaArkusz(zawartosc, pierwszy, ostatni, ark, kol, wiersz)
end sub