Zum Öffnen eines Writer- oder Calcdokuments per Makro gibt es den Befehl:
Code: Alles auswählen
Dokument = StarDesktop.loadComponentFromUrl(url,"_blank",0,myFileProb())
Gruß
Charly
Moderator: Moderatoren
Code: Alles auswählen
Dokument = StarDesktop.loadComponentFromUrl(url,"_blank",0,myFileProb())
Code: Alles auswählen
sub Titelleiste
for i=0 to Stardesktop.Frames.count-1
titel = stardesktop.Frames(i).title
if left(titel,10) = "charly.sxw" Then
Msgbox "Dokument ist schon geöffnet!"
end if
next i
end sub
Nein, das stimmt eigentlich nicht - ich habe das gestern nicht genau durchdacht. Du weißt nur das es Fenster gibt in deren Titelzeile etwas steht was dort normalerweise stünde wenn Du das entsprechende Dokument "normal" öffnen würdest. Ist jetzt pingelig meinst Du - nein garnicht denn mit:Ich weiß nun, dass das Dokument geöffnet ist
Code: Alles auswählen
sub Titelleiste_test
for i=0 to Stardesktop.Frames.count-1
stardesktop.Frames(i).title = "irgendetwas"
next i
end sub
Code: Alles auswählen
sub gesamt
'hier Dateinamen vorgeben
gesuchter_dateiname = "post.sxw"
'----------------------------------------
laenge = Len(gesuchter_dateiname)
alles = StarDesktop.getComponents()
elemente = alles.createEnumeration()
Do While elemente.HasMoreElements
aktuell = elemente.NextElement()
If HasUnoInterfaces(aktuell, "com.sun.star.frame.XModel") Then
If aktuell.hasLocation() Then
if Right(ConvertFromURL(aktuell.GetLocation),laenge) = gesuchter_dateiname Then
if Right(ConvertFromURL(aktuell.GetLocation),3) ="sxc" Then
'Beispiel Calc
blatt = aktuell.getSheets().GetByName("Tabelle1")
zelle = blatt.getCellByPosition(0, 0)
zelle.Value = 12345
end if
if Right(ConvertFromURL(aktuell.GetLocation),3) ="sxw" Then
'Beispiel Writer
Cursor = aktuell.Text.createTextCursor()
Cursor.String = "Das ist ein Beispieltext"
end if
end if
end if
end if
Loop
end sub
Vorausgesetzt die Titelzeile stimmt mit dem Dokumentennamen überein, weiß ich jetzt wie ich auf das gefundene Dokument zugreifen kann. Du hast mich durch eine Antwort in einem andern Thread darauf gebracht.Was ich damit sagen will ist das Du ausgehend vom ursprünglichen Code nicht auf die eigentlichen Dokumente zugreifen kannst, ich weiß jedenfalls derzeitig nicht wie ...
Code: Alles auswählen
sub Titelleiste_test
for i=0 to Stardesktop.frames.count-1
title = StarDesktop.frames(i).title
if left(title,10) = "charly.sxc" then
StarDesktop.frames(i).containerwindow.toFront
Kennung = 1
end if
next i
If Kennung = 1 then
'ThisComponent funktioniert hier nicht
Doc = Stardesktop.currentComponent
Blatt = Doc.sheets(0)
Zelle = Blatt.getCellByPosition(0,0)
Zelle.string = "Dokument gefunden"
else msgbox("Datei nicht gefunden")
end if
end sub