von erikafuchs » Mi, 28.11.2012 21:16
Lieber Karo,
stimmt, ein Tippfehler - sorry.
Lieber Karolus,
die Frage ist, ob es möglich ist, aus einer bereits geöffneten Datei Daten auszulesen, die Datei also ein zweites Mal zu öffnen.
Schön, dass ihr Euch dieses Problems annehmt.
Hier der Code:
Code: Alles auswählen
dim m, i, j, k, Anzahl, CountSheets as integer
dim aDateien() as string
dim Arg(0)
Dim mNoArgs()
Dim Arg(1) as new com.sun.star.beans.PropertyValue
sub einfuegen_Test
If ( Not GlobalScope.BasicLibraries.isLibraryLoaded( "Tools" ) ) Then
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
End If
oDoc=ThisComponent
oSheet=ThisComponent.sheets.getByName("Übersicht_Test")
OrdnerPfad
aDateien = ReadDirectories(Pfad , TRUE , FALSE , FALSE ) 'Das Verzeichnis mit den Schülerdateien
If uBound( aDateien ) > -1 then
Anzahl = uBound( aDateien ) + 1
for i = lBound( aDateien) to uBound(aDateien)
if InStr(aDateien(i),"_")=0 and InStr(aDateien(i),"~")=0 and right(aDateien(i),4)= ".ods" then 'sorgt u.A. dafür dass sich diese Datei nicht selbst einliest
kPfad=aDateien(i)
do
kPfad = right(kPfad,len(Kpfad)-InStr(kPfad, "/"))
loop while InStr(kPfad, "/")>0
sURL=ConvertToURL(aDateien(i))
Arg(0).Name="Hidden"
Arg(0).Value="True"
Arg(1).Name="ReadOnly"
Arg(1).Value="True"
dDoc=StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg())
dDoc.unprotect("geheim4S")
dSheet=dDoc.sheets.getByName("Daten")
sname=dSheet.getCellByPosition(2,1).string & " " & dSheet.getCellByPosition(1,1).string 'liest den Schülernamen aus
oDoc.Sheets().copyByName("Muster_Test",sname,1) 'benennt das neue Tabellenblatt mit dem Schülernamen
dDoc.close(True)
end if
next i
end if
end sub
Sub OrdnerPfad
i = 0
j = 0
do
i= i + 1
x = RIGHT(ConvertToURL(ThisComponent.URL),i)
if left(x,1) = "/" Then
j = j +1
End if
Loop While j < 1
k=i
pfad = LEFT(ConvertToURL(ThisComponent.URL), LEN(ConvertToURL(ThisComponent.URL))-i+1)
pfad = Pfad
End Sub
Das Programm bricht an der Stelle:
dDoc=StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg()) ab, die Frage nach der Zulassung der Makros ist dann geöffnet.
Lieber Karo,
stimmt, ein Tippfehler - sorry.
Lieber Karolus,
die Frage ist, ob es möglich ist, aus einer bereits geöffneten Datei Daten auszulesen, die Datei also ein zweites Mal zu öffnen.
Schön, dass ihr Euch dieses Problems annehmt.
Hier der Code:
[code]dim m, i, j, k, Anzahl, CountSheets as integer
dim aDateien() as string
dim Arg(0)
Dim mNoArgs()
Dim Arg(1) as new com.sun.star.beans.PropertyValue
sub einfuegen_Test
If ( Not GlobalScope.BasicLibraries.isLibraryLoaded( "Tools" ) ) Then
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
End If
oDoc=ThisComponent
oSheet=ThisComponent.sheets.getByName("Übersicht_Test")
OrdnerPfad
aDateien = ReadDirectories(Pfad , TRUE , FALSE , FALSE ) 'Das Verzeichnis mit den Schülerdateien
If uBound( aDateien ) > -1 then
Anzahl = uBound( aDateien ) + 1
for i = lBound( aDateien) to uBound(aDateien)
if InStr(aDateien(i),"_")=0 and InStr(aDateien(i),"~")=0 and right(aDateien(i),4)= ".ods" then 'sorgt u.A. dafür dass sich diese Datei nicht selbst einliest
kPfad=aDateien(i)
do
kPfad = right(kPfad,len(Kpfad)-InStr(kPfad, "/"))
loop while InStr(kPfad, "/")>0
sURL=ConvertToURL(aDateien(i))
Arg(0).Name="Hidden"
Arg(0).Value="True"
Arg(1).Name="ReadOnly"
Arg(1).Value="True"
dDoc=StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg())
dDoc.unprotect("geheim4S")
dSheet=dDoc.sheets.getByName("Daten")
sname=dSheet.getCellByPosition(2,1).string & " " & dSheet.getCellByPosition(1,1).string 'liest den Schülernamen aus
oDoc.Sheets().copyByName("Muster_Test",sname,1) 'benennt das neue Tabellenblatt mit dem Schülernamen
dDoc.close(True)
end if
next i
end if
end sub
Sub OrdnerPfad
i = 0
j = 0
do
i= i + 1
x = RIGHT(ConvertToURL(ThisComponent.URL),i)
if left(x,1) = "/" Then
j = j +1
End if
Loop While j < 1
k=i
pfad = LEFT(ConvertToURL(ThisComponent.URL), LEN(ConvertToURL(ThisComponent.URL))-i+1)
pfad = Pfad
End Sub[/code]
Das Programm bricht an der Stelle:
dDoc=StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Arg()) ab, die Frage nach der Zulassung der Makros ist dann geöffnet.