Seite 1 von 1
Makro um eine Tabelle anders zu formatieren
Verfasst: Di, 15.01.2008 09:47
von mel2503
Hallo,
also ich habe folgendes Problem:
ich möchte eine txt.datei einlesen, in der Tabelle ein paar Spalten und Zeilen löschen und zwei "wenn, dann, sonst" -Befehle anwenden. Die geänderte Datei dann wieder als txt.datei mit einem anderen Namen abspeichern! In Excel 2007 ist es mir gelungen, konnte das makro aufzeichnen und noch einen Befehl reinkopieren! ABER ich habe auf der Arbeit nur OpenOffice.org 2.3 und muss es dort jetzt realisieren!
Ich habe erst mal probiert die Tabelle nur automatisch formatieren zu lassen! Also habe ich habe die Formatierung mit dam Recorder aufgenommen und wenn ich dann das Makro auf die selbe Ursprungstabelle wieder ablaufen lasse, löscht er andere Zeilen und Spalten zusätzlich!
Leider habe ich von Basicprogrammierung nicht viel Ahnung!
Wäre euch sehr Dankbar für dir Hilfe!
LG
Re: Makro um eine Tabelle anders zu formatieren
Verfasst: Di, 15.01.2008 10:08
von komma4
wir helfen Dir schon gerne - nur wie?
Du hast eine Calc-Datei, die Du bearbeiten willst?
Welche WENN-DANN Befehle sollen ausgeführt werden?
Welche Formatierung(en) soll angewendet werden?
Unter welchem Dateinamen soll gespeichert werden?
Makro-Aufzeichnungen sind i.d.R. nicht vollständig und/oder zuverlässig....
Re: Makro um eine Tabelle anders zu formatieren
Verfasst: Di, 15.01.2008 10:26
von mel2503
genau ich habe eine calc.datei die ich bearbeiten will! In der vorhandenen Tabelle sollen die Zeilen 1-26 und die Spalte B gelöscht werden! In der Spalte A soll abgefragt werden ob die Zahl kleiner 100 ist und wenn ja mit 1000 multipliziert werden und ansonsten soll die Zahl stehen bleiben! Bei allen anderen Zellen Soll geprüft werden, ob die Zelle leer ist, wenn ja soll eine "0" eingetragen werden und ansonsten die Zahl die in der Zelle steht! Diese neue Tabelle sollte dann unter einem zum Beispiel daten.txt abgespeichert werden!
Ich habe das wie gesagt mit dem Recorder versucht:
(Aber erst mal nur das löschen der Spalten/Zeilen)
sub lll
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$B$3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$B$4"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$4"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
end sub
Sub HelloWorld
msgbox "Hello World!"
End Sub
sub datenfor
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Flags"
args1(0).Value = "SVDFN"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DeleteColumns", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())
end sub
Kann ich dort wo die Spalten/Zeilen gelöscht werden, auch fixe Spalten/Zeilen angeben?
LG
Re: Makro um eine Tabelle anders zu formatieren
Verfasst: Di, 15.01.2008 11:11
von komma4
Das Löschen ist einfach:
Code: Alles auswählen
oBlatt = ThisComponent.Sheets.getByName( "Tabelle1" )
oZeilen = oBlatt.Rows
' start-Index und Anzahl
oZeilen.removeByIndex( 0, 26)
oSpalten = oBlatt.Columns
oSpalten.removeByIndex( 1 , 1)
Der Werte-Vergleich (<100 oder leer) geht dann nur durch Bearbeiten aller Zellen,
Anweisungen hierzu (Positionsangabe variabilisieren und iterieren):
Code: Alles auswählen
oBlatt.getCellByPosition( 0,3 ).getValue() ' Wert aus A4
Das Speichern dann mit der Anweisung:
Code: Alles auswählen
neuURL = ConvertToURL( ThisComponent.URL & "_bearbeitet" )
ThisComponent.storeToURL( neuURL, Array() )
und anschliessendes Verwerfen der Änderungen an der Originaldatei
Alles ungetestet -aus der Hüfte-.
Hier [8°52'55"N 98°16'1" E] ist es immer noch zu warm [31°C] zum Testen (arbeiten)
Hilft das?