von sven-my » So, 19.08.2012 23:51
Hallo Stephan,
ich benötige doch nochmal Deine Hilfe.
Wenn das Dokument, aus dem ich die Daten haben will, noch nicht geöffnet ist, wollte ich es so öffnen, klappt auch, aber die Abfrage >hasLocation()< ist in diesem Fall doch unnötig.
Da ich Deinen code auch nicht so richtig verstanden habe, ist die Zuweisung a=a auch nur eine Krücke.
Code: Alles auswählen
sub Doc_öffnen
Adb = "Adressen.ods"
laenge = Len(Adb)
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
a=a
else
Pfad = "E:\OpenOffice\Datenbanken\Adressen.ods"
Url = ConvertToUrl(Pfad)
Dim myFileProp(1) as New com.sun.star.beans.PropertyValue
myFileProp(0).Name = "MacroExecutionMode"
myFileProp(0).Value = 4
Calc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, myFileProp())
exit sub
end if
end if
Loop
end sub
Hier wird dann von vorne gestartet, nur könnte ich mir das ja sparen, denn das die Datei geöffnet ist, ist ja jetzt klar.
Code: Alles auswählen
sub calc_auslesen
dim aAdr(23)
Adb = "Adressen.ods"
laenge = Len(Adb)
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) = Adb Then
blatt = aktuell.getSheets().GetByName("Ergebnis")
' empfAll = blatt.getCellByPosition(1,23).string
for i = 0 to 23
aAdr(i) = blatt.getCellByPosition(1,i).string
next i
end if
end if
end if
Loop
rem --- bookmark ---
oDoc = thisComponent
oBM = oDoc.getBookmarks().getByName("Empfänger_Alles")
oBM.getAnchor().String = aAdr(23)
.
.
.
oBM = oDoc.getBookmarks().getByName("Zusatz")
oBM.getAnchor().String = aAdr(6)
end sub
gruß
sven-my
Hallo Stephan,
ich benötige doch nochmal Deine Hilfe.
Wenn das Dokument, aus dem ich die Daten haben will, noch nicht geöffnet ist, wollte ich es so öffnen, klappt auch, aber die Abfrage >hasLocation()< ist in diesem Fall doch unnötig.
Da ich Deinen code auch nicht so richtig verstanden habe, ist die Zuweisung a=a auch nur eine Krücke.
[code]sub Doc_öffnen
Adb = "Adressen.ods"
laenge = Len(Adb)
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
a=a
else
Pfad = "E:\OpenOffice\Datenbanken\Adressen.ods"
Url = ConvertToUrl(Pfad)
Dim myFileProp(1) as New com.sun.star.beans.PropertyValue
myFileProp(0).Name = "MacroExecutionMode"
myFileProp(0).Value = 4
Calc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, myFileProp())
exit sub
end if
end if
Loop
end sub[/code]
Hier wird dann von vorne gestartet, nur könnte ich mir das ja sparen, denn das die Datei geöffnet ist, ist ja jetzt klar.
[code]sub calc_auslesen
dim aAdr(23)
Adb = "Adressen.ods"
laenge = Len(Adb)
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) = Adb Then
blatt = aktuell.getSheets().GetByName("Ergebnis")
' empfAll = blatt.getCellByPosition(1,23).string
for i = 0 to 23
aAdr(i) = blatt.getCellByPosition(1,i).string
next i
end if
end if
end if
Loop
rem --- bookmark ---
oDoc = thisComponent
oBM = oDoc.getBookmarks().getByName("Empfänger_Alles")
oBM.getAnchor().String = aAdr(23)
.
.
.
oBM = oDoc.getBookmarks().getByName("Zusatz")
oBM.getAnchor().String = aAdr(6)
end sub[/code]
gruß
sven-my