Makro legt Tabellenblätter an.. warum???

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro legt Tabellenblätter an.. warum???

GELÖST Re: Makro legt Tabellenblätter an.. warum???

von Bernhard » So, 04.01.2009 17:02

SUPER JÜRGEN! danke.. das wars.. die Datei hatt wirklich nur eine Tabelle - hab den Code geändert und jetzt gehts wunderbar!

SUPER HERZLICHEN DANK!!!!!

Re: Makro legt Tabellenblätter an.. warum???

von turtle47 » So, 04.01.2009 16:53

Hi Bernhard,

ich vermute, dass das angesprochene Tabellenblatt nicht gefunden wird.
Hilfreich ist es immer die Zeile anzugeben welche markiert wird.

Bleibt der Code hier hängen:

Code: Alles auswählen

oRange1 = oDocSrc1.Sheets().getByIndex(1).getCellRangeByName("A1:K300") 'Tabelle2 (Index 1)
?
Dann gibt es in dem Dokument nur ein Tabellenblatt.
Ändere wie folgt:

Code: Alles auswählen

oRange1 = oDocSrc1.Sheets().getByIndex(0).getCellRangeByName("A1:K300")

War es das?

Zu Erklärung zum Tabellenindex in einem Dokument mit drei Tabellen:
erste Tabelle = Index 0
zweite Tabelle = Index 1
dritte Tabelle = Index 2

Jürgen

Re: Makro legt Tabellenblätter an.. warum???

von Bernhard » So, 04.01.2009 16:43

Hallo Jürgen,

den Code hab ich jetzt reinkopiert.. bekomm aber jetzt ne fehlermeldung.. die wie folgt lautet:

Basic-Laufzeitfehler
Es ist eine Exception aufgetreten
Type: com.sun.star.lang.IndexOutofBoundsException
Message:.

kann diese mit OK bestätigen..

was heißt das? ich habe den Ort wo die Datei liegt schon verglichen.. die stimmt...

Re: Makro legt Tabellenblätter an.. warum???

von turtle47 » So, 04.01.2009 15:28

Hallo Zusammen,

der "Aufdemschlausteher" war wohl ich. :(

Das mit der exteren Datei hatte ich übersehen.

Folgender Code, der in dem Zieldokument eingebaut ist, holt einen Datenbereich aus einem externen Dokument und schreibt diesen in das Zieldokument.

Code: Alles auswählen

Sub Copy_Aeras
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	Dim oDummy()
	Dim oDoc as Object
	oComponents = StarDesktop.getComponents()
	oUrlSrc  = "file:///C:/Users/kinder/Documents/Günter/Beruflich/Arbeitsstunden/Anlagen.ods"'Pfad zum Dokument eventuell anpassen
	dim myFileProp(0) as New com.sun.star.beans.PropertyValue
	myFileProp(0).name="Hidden" 'im Hintergrund öffnen
	myFileProp(0).value= true
	oDocSrc1 = StarDesktop.loadComponentFromURL(oUrlSrc, "_blank", 0, myFileProp())'Dokument öffnen
	oRange1 = oDocSrc1.Sheets().getByIndex(1).getCellRangeByName("A1:K300") 'Tabelle2 (Index 1)
	RangeCopy()= oRange1.getDataArray()' Bereich lesen
	oDocSrc1.close (True) 'Dokument wieder schliessen
	oRange1 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:K300")'Tabelle1 ansprechen
	oRange1.setDataArray(RangeCopy())'Array schreiben
	msgbox "Die Übertragung ist abgeschlossen" , 64 , "Daten übertragen"	
End sub
Ich hoffe das war's.

Jürgen

Re: Makro legt Tabellenblätter an.. warum???

von turtle47 » So, 04.01.2009 14:31

Hallo Bernhard,
Bernhard hat geschrieben:Zellen aus Tabelle 1 mit Zellen aus Tabelle 2 verknüpfen (damit ich die aktuellen werte dort bekomme)
In Tabelle 1 die verknüpften zellen markieren - kopieren - und als unformatierten Text wieder einfügen (damit die Verknüpfung wieder weg ist die aktuellen werte aber vorhanden sind).
Für mich liest sich das so:
In Tabelle2 stehen die Werte. Diese werden in Tabelle1 mit einer Formel verknüpft, danach kopiert und als unformatierter Text wieder eingefügt.

Danach habe ich das Makro ja aufgebaut.
Bereich in Tabelle2 kopieren und in Tabelle1 einfügen.

Wenn es aber andersrum sein soll, also Werte aus Tabelle1 kopieren und dann in Tabelle2 einfügen dann versuche folgenden Code:

Code: Alles auswählen

Sub Daten_kopieren
   oRange  = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:K300")   
   oData() = oRange.getDataArray()
   oRange1 = ThisComponent.Sheets().getByIndex(1).getCellRangeByName("A1:K300")
   oRange1.setDataArray(oData())
End Sub
Ausserdem bin ich jetzt etwas verwirrt denn Du schreibst jetzt:
Bernhard hat geschrieben:1. Datei 1 aufruft
2. Daten in Datei 1 kopiert
3. Zurückgeht in Tabelle 2
4. Daten unformatiert einfügt!
Also, ich stehe da jetzt wohl irgendwie auf dem Schlauch.

Jürgen

Re: Makro legt Tabellenblätter an.. warum???

von Bernhard » So, 04.01.2009 14:11

hallo jürgen,

irgendwie macht dein Makro nix (oder zumindest für mich nix erkennbar)

Vielleicht kann mir auch jemand sagen wie ich im Makro vermerken kann das er.

1. Datei 1 aufruft
2. Daten in Datei 1 kopiert
3. Zurückgeht in Tabelle 2
4. Daten unformatiert einfügt!
(ich bekomms net hin... einfach zu dumm für)

DANKE!

Re: Makro legt Tabellenblätter an.. warum???

von turtle47 » Sa, 03.01.2009 21:34

Hi Bernhard,
Bernhard hat geschrieben:kann man das irgendwie unterdrücken das die Tabellen angelegt werden???
Einfach mit Ja zu beantworten.
balu hat geschrieben:Nur ist die Frage ob es dann nicht vielleicht besser ist gleich eine passendere Makro-Function zu nehmen.
Der Meinung bin ich auch.
Folgender Code sollte Deine Erwartungen erfüllen:

Code: Alles auswählen

Sub Daten_kopieren
   oRange  = ThisComponent.Sheets().getByIndex(1).getCellRangeByName("A1:K300")   
   oData() = oRange.getDataArray()
   oRange1 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:K300")
   oRange1.setDataArray(oData())
End Sub
Ist das OK?

Viel Erfolg.

Jürgen

Re: Makro legt Tabellenblätter an.. warum???

von balu » Sa, 03.01.2009 20:37

Hallo Bernhard,
Bernhard hat geschrieben: kann man das irgendwie unterdrücken das die Tabellen angelegt werden???
In Gewisser hinsicht, Ja!
Nur ist die Frage ob es dann nicht vielleicht besser ist gleich eine passendere Makro-Function zu nehmen. Ich bin kein Makro-Mensch, aber in Calc würde ich als passende Alternative nämlich =DDE() empfehlen. Nur ob es sinnvoll ist DDE direkt in ein Makro einzusetzen, kann ich nicht beantworten.


Gruß
balu

Re: Makro legt Tabellenblätter an.. warum???

von Bernhard » Sa, 03.01.2009 19:41

kann man das irgendwie unterdrücken das die Tabellen angelegt werden??? findi ch ja irgendwie komisch das calc sowas macht.. oder gibts da nen tieferen sinn???

Makro legt Tabellenblätter an.. warum???

von Bernhard » Sa, 03.01.2009 17:18

Hallo, ich habe folgendes problem mit u.g. Makro: Immer wenn ich Ihn ausführe dann wird ein neues Tabellenblatt angelegt - aber nicht sichtbar sondern es erscheint nur unten links: "Tabelle 2/3" angezeigt werden nur 2.

Der Code macht im kurzen folgendes:

Zellen aus Tabelle 1 mit Zellen aus Tabelle 2 verknüpfen (damit ich die aktuellen werte dort bekomme)
In Tabelle 1 die verknüpften zellen markieren - kopieren - und als unformatierten Text wieder einfügen (damit die Verknüpfung wieder weg ist die aktuellen werte aber vorhanden sind).


Kann mir jemand sagen warum????

Hier der code :

Code: Alles auswählen

sub Aktualisieren
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 = "StringName"
args1(0).Value = "=Wenn('file:///C:/Users/kinder/Documents/Günter/Beruflich/Arbeitsstunden/Anlagen.ods'#Anlagen.A1="+CHR$(34)+CHR$(34)+";"+CHR$(34)+CHR$(34)+";'file:///C:/Users/kinder/Documents/Günter/Beruflich/Arbeitsstunden/Anlagen.ods'#Anlagen.A1)"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "EndCell"
args3(0).Value = "$K$1"

dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$A$1:$K$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "EndCell"
args5(0).Value = "$K$300"

dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$A$1:$K$300"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$A$1"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args10(0) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Flags"
args10(0).Value = "A"

dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(0) as new com.sun.star.beans.PropertyValue
args11(0).Name = "SelectedFormat"
args11(0).Value = 1

dispatcher.executeDispatch(document, ".uno:ClipboardFormatItems", "", 0, args11())


end sub[/[/

Nach oben