[gelöst] ODS öffnen und per Makro darauf zugreifen
Moderator: Moderatoren
[gelöst] ODS öffnen und per Makro darauf zugreifen
Hallo Ihr!
Möchte Daten und Makros in getrennten CALC-Dateien haben.
Also :
1.) starte Makro in "A.ods" -> funktioniert
2.) diese öffnet "B.ods" -> funktioniert
3.) wechsle die Ansicht wieder auf "A.ods" -> mit welchem Befehl?
4.) Makro holt die Daten aus "B.ods" -> mit welchem Befehl bzw. wie schaut die Adressierung von Zellen Dateiübergreifend aus?
Bitte um Tipps für 3.) und 4.)
Danke!
Oktogrüße
Möchte Daten und Makros in getrennten CALC-Dateien haben.
Also :
1.) starte Makro in "A.ods" -> funktioniert
2.) diese öffnet "B.ods" -> funktioniert
3.) wechsle die Ansicht wieder auf "A.ods" -> mit welchem Befehl?
4.) Makro holt die Daten aus "B.ods" -> mit welchem Befehl bzw. wie schaut die Adressierung von Zellen Dateiübergreifend aus?
Bitte um Tipps für 3.) und 4.)
Danke!
Oktogrüße
Zuletzt geändert von oktobaer am Mi, 28.01.2009 23:14, insgesamt 2-mal geändert.
Servus
Claus
Claus
Re: ODS öffnen und auf per Makro darauf zugreifen
Hallo!
Um auf zwei Dokumente zugreifen zu können, musst für diese Namen zuweisen.
Dokument A
Bei Dokument B musst du die Zuweisung beim Öffnen machen:
[
Mit dem Dokumentennamen kannst du zwischen beiden Dokumenten hin und herspringen und hast einen Zugriff auf die jeweiligen Zellen.
Gruß
Charly
Um auf zwei Dokumente zugreifen zu können, musst für diese Namen zuweisen.
Dokument A
Code: Alles auswählen
Doc_A = ThisComponent
[
Code: Alles auswählen
dim dummy()
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Url = "C:\Pfad\B.ods"
Url = ConvertToUrl(Url)
Doc_B = oDesktop.loadComponentFromURL( Url, "_blank", 0,dummy() )
Gruß
Charly
Re: ODS öffnen und auf per Makro darauf zugreifen
Hallo Charly!
Danke für den Tipp.
Öffnen funktioniert, allerdings kann ich nicht auf die Ansicht von Dokument "A" zurückschalten -> Fehler: Objektvariable nicht belegt
Was mache ich falsch - bitte um Vorschläge!
Oktogrüße
Danke für den Tipp.
Öffnen funktioniert, allerdings kann ich nicht auf die Ansicht von Dokument "A" zurückschalten -> Fehler: Objektvariable nicht belegt
Code: Alles auswählen
DOC_A = ThisComponent
dim dummy()
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Url = "C:\Daten\MDB\MDB-TestDatei.ods"
Url = ConvertToUrl(Url)
Doc_B = oDesktop.loadComponentFromURL( Url, "_blank", 0,dummy()
DOC_A.CurrentController.setActiveSheet("Setup")
'auch: DOC_A.CurrentController.setActiveSheet(1) geht nicht!
Oktogrüße
Servus
Claus
Claus
Re: ODS öffnen und auf per Makro darauf zugreifen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: ODS öffnen und auf per Makro darauf zugreifen
Hallo Jürgen!
du bist Spitze: Mein Punkt 3.) ist gelöst!
bleibt noch Zugriff auf eine Zelle der anderen Datei (Punkt 4.) :
Ergibt einen Fehler! Warum?
Oktobaer
du bist Spitze: Mein Punkt 3.) ist gelöst!
Code: Alles auswählen
DOC_A.CurrentController.Frame.getContainerWindow().setFocus
bleibt noch Zugriff auf eine Zelle der anderen Datei (Punkt 4.) :
Code: Alles auswählen
wert$= DOC_B.Sheets.GetByName("MDB").getCellByPosition(3,2)
Oktobaer
Servus
Claus
Claus
Re: ODS öffnen und auf per Makro darauf zugreifen
Nabend Oktobaer,
sollte gehen.
Gut's Nächtle.
Jürgen
Na, weil Du keine Wert holst!oktobaer hat geschrieben: Ergibt einen Fehler! Warum?
Code: Alles auswählen
Wert$ = DOC_B.Sheets().GetByName("MDB").getCellByPosition(3,2).value
Gut's Nächtle.
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: ODS öffnen und auf per Makro darauf zugreifen
Hallo Jürgen!
Danke, Du hast wieder mal Recht - in meinem Fall hat nicht ".value" sondern ".string" gefehlt!
Hier für alle die kpl. Lösung:
Vielen Dank !!!
OktoBaer
Danke, Du hast wieder mal Recht - in meinem Fall hat nicht ".value" sondern ".string" gefehlt!
Hier für alle die kpl. Lösung:
Code: Alles auswählen
DOC_A = ThisComponent
dim dummy()
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Url = "C:\Daten\MDB\MDB-TestDatei.ods"
Url = ConvertToUrl(Url)
DOC_B = oDesktop.loadComponentFromURL( Url, "_blank", 0,dummy() )
DOC_A.CurrentController.Frame.getContainerWindow().setFocus
zeile%=1 ' = 2. Zeile
spalte%=2 ' = 3. Spalte
wert$= DOC_B.Sheets.GetByName("MDB").getCellByPosition(spalte%,zeile%).string
print wert$
Vielen Dank !!!
OktoBaer
Servus
Claus
Claus
Re: [gelöst] ODS öffnen und per Makro darauf zugreifen
Hi Oktobaer,
warum öffnest Du das Quelldokument sichtbar und wechselst dann mit dem Focus?
Öffne doch das Quelldokument im Hintergrund, hole den Wert und schliesse es wieder.
Hier mal ein Beispielcode dafür:
Oder brauchst Du "DOC_B" noch zum bearbeiten?
Jürgen
warum öffnest Du das Quelldokument sichtbar und wechselst dann mit dem Focus?
Öffne doch das Quelldokument im Hintergrund, hole den Wert und schliesse es wieder.
Hier mal ein Beispielcode dafür:
Code: Alles auswählen
Sub Main
DOC_A = ThisComponent
oDesktop = createUnoService("com.sun.star.frame.Desktop")
Url = ConvertToUrl ("C:\Daten\MDB\MDB-TestDatei.ods")
dim p(0) as new com.sun.star.beans.PropertyValue
p(0).Name = "Hidden"
p(0).Value = true
Doc_B = StarDesktop.loadComponentFromURL(Url, "_default", 0, p())
zeile%=1 ' = 2. Zeile
spalte%=2 ' = 3. Spalte
wert$= DOC_B.Sheets.GetByName("MDB").getCellByPosition(spalte%,zeile%).string
print wert$
Doc_B.close (True)
End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: [gelöst] ODS öffnen und per Makro darauf zugreifen
Hallo Jürgen!
Das ist ja schon hypergenial!
Es funktioniert und damit hat sich auch noch ein anderes Problem erledigt!
Ich spendiere Dir ein Bier - Prost!
Danke!
Oktobaer
Das ist ja schon hypergenial!
Es funktioniert und damit hat sich auch noch ein anderes Problem erledigt!
Ich spendiere Dir ein Bier - Prost!
Danke!
Oktobaer
Servus
Claus
Claus