Makro
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Makro
Hallo neuer Gast - willkommen im Forum.
Du kannst mit Hilfe der Suchfunktion gleich saftige Antworten finden:
* um einen Zellinhalt zu erhalten ist Dein Suchbegriff getCellByPosition()(116) oder getCellRangeByName()(74)
* zum Öffnen eines Dokuments ist Dein Suchbegriff loadComponentFromURL()(95)
[Zahlen in Klammern benennen die aktuelle Trefferanzahl]
Damit solltest Du fähig sein ein eigenes, lauffähiges Code-Stück zu entwickeln. Hast Du dabei Probleme, so helfen wir Dir gerne (vorzugsweise im BASIC und JAVA Forumsbereich).
Bis denne... viel Erfolg!
Du kannst mit Hilfe der Suchfunktion gleich saftige Antworten finden:
* um einen Zellinhalt zu erhalten ist Dein Suchbegriff getCellByPosition()(116) oder getCellRangeByName()(74)
* zum Öffnen eines Dokuments ist Dein Suchbegriff loadComponentFromURL()(95)
[Zahlen in Klammern benennen die aktuelle Trefferanzahl]
Damit solltest Du fähig sein ein eigenes, lauffähiges Code-Stück zu entwickeln. Hast Du dabei Probleme, so helfen wir Dir gerne (vorzugsweise im BASIC und JAVA Forumsbereich).
Bis denne... viel Erfolg!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Makro
Hallo
folgendes Beispiel setzt voraus:
1. die Dateien die geöffnet werden sollen, sind im gleichen Verzeichnis gespeichert wie das aktuell geöffnete.
2. die aktuell selektierte Zelle enthält einen Dateinamen einer vorhandenen Datei.
Hilfe zur Installation gibts hier ,
und zur Anbindung an eine Schaltfläche hier
Gruß Karo
folgendes Beispiel setzt voraus:
1. die Dateien die geöffnet werden sollen, sind im gleichen Verzeichnis gespeichert wie das aktuell geöffnete.
2. die aktuell selektierte Zelle enthält einen Dateinamen einer vorhandenen Datei.
Code: Alles auswählen
Sub rechnungoeffnen
dim apfad()
'Pfad zur aktuellen Datei
surl = ThisComponent.url
apfad() = split(surl ,"/")'Pfad zum -
lp = ubound(apfad()) 'Verzeichniss in Array schreiben-
if thisComponent.Currentselection().supportsService("com.sun.star.sheet.SheetCell") then
' neue Datei aus aktueller Zelle auslesen
neudatei = thisComponent.Currentselection().string
else
msgbox("Fehler: bitte nur eine Zelle auswählen")
exit sub
end if
apfad(lp) = neudatei 'Dateinamen ins Array schreiben
bpfad = join(apfad(),"/")' neuen Pfad zusammensetzen
'bpfad = converttourl("ein/anderer/pfad/"& apfad(lp)) 'alternativ
on Error goto Fehlermeldung
'neue Datei öffnen
dim myFileProp() as Object
oDocument = StarDesktop.loadComponentFromURL(bpfad, "_blank", 0, myFileProp() )
Fehlermeldung:
msgbox("Datei nicht gefunden")
End Sub
und zur Anbindung an eine Schaltfläche hier
Gruß Karo
Zuletzt geändert von Karolus am Di, 04.03.2008 11:37, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Makro
hallo nochmal volgenes habe ich schon einmal alleine hinbekommen nun möchte ich aber wissen wie das Makro in einer Datei ein bestimmtes Verzeichniss bilden kann und dann mit dem aus der Zelle ausgelesenen wort vergleicht und wenn er die dazu gehörige Datei findet öffnet 
das sollte mir jetzt eigentlich anzeigen was in der zelle steht funzt aber noch nicht falls ihr einen fehler findet, bitte korrigieren! danke!
Sub Main
Dim s,str as String
Dim oCell as Object
oZellRange = ThisComponent.getCurrentSelection()
if oZellRange.supportsService("com.sun.star.sheet.SheetCell") then
oZellAdr = oZellRange.CellAddress
oDoc = ThisComponent
s = oDoc.Sheets(oZellAdr.Sheet).Columns(oZellAdr.Column).Name & oZellAdr.Row +1
else 'Zellbereich
MsgBox "Keine Zelle Markiert!"
end if
oCell = ThisComponent.sheets(0).getCellRangeByName(s)
MsgBox str
End Sub

das sollte mir jetzt eigentlich anzeigen was in der zelle steht funzt aber noch nicht falls ihr einen fehler findet, bitte korrigieren! danke!
Sub Main
Dim s,str as String
Dim oCell as Object
oZellRange = ThisComponent.getCurrentSelection()
if oZellRange.supportsService("com.sun.star.sheet.SheetCell") then
oZellAdr = oZellRange.CellAddress
oDoc = ThisComponent
s = oDoc.Sheets(oZellAdr.Sheet).Columns(oZellAdr.Column).Name & oZellAdr.Row +1
else 'Zellbereich
MsgBox "Keine Zelle Markiert!"
end if
oCell = ThisComponent.sheets(0).getCellRangeByName(s)
MsgBox str
End Sub
Re: Makro
Das Makro aus meinem letzten Antwort macht das, ich werde mal ein paar optionale Zeilen einfügen die dir evtl. weiterhelfenMinok hat geschrieben:hallo nochmal volgenes habe ich schon einmal alleine hinbekommen nun möchte ich aber wissen wie das Makro in einer Datei ein bestimmtes Verzeichniss bilden kann und dann mit dem aus der Zelle ausgelesenen wort vergleicht und wenn er die dazu gehörige Datei findet öffnet
Minok hat geschrieben: das sollte mir jetzt eigentlich anzeigen was in der zelle steht funzt aber noch nicht falls ihr einen fehler findet, bitte korrigieren! danke!
Code: Alles auswählen
Sub wennEinzelzelle_dannInhalt_anzeigen
oZellRange = ThisComponent.getCurrentSelection()
if oZellRange.supportsService("com.sun.star.sheet.SheetCell") then
msgbox oZellRange.string
else 'Zellbereich
MsgBox "Keine Zelle Markiert!"
end if
End Sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Makro
hier es ist fertig danke für die hilfe!
Sub Main
Dim s,str,stt as String
Dim oCell,oCell1 as Object
oZellRange = ThisComponent.getCurrentSelection()
if oZellRange.supportsService("com.sun.star.sheet.SheetCell") then
oZellAdr = oZellRange.CellAddress
oDoc = ThisComponent
s= oDoc.Sheets(oZellAdr.Sheet).Columns(oZellAdr.Column).Name & oZellAdr.Row +1
t = "A" & oZellAdr.Row +1
oCell = ThisComponent.sheets(0).getCellRangeByName(s)
str=oCell.String
'MsgBox str
oCell1 = ThisComponent.sheets(0).getCellRangeByName(t)
stt=oCell1.String
'MsgBox stt
if stt = "" then
msgbox "Kundencode nicht vorhanden" , 16 , "Warnung"
end
'else
'msgbox "Else"
end if
'---------------------Zerlegen der RG-Nr--------------------------------
dim apfad()
surl = ThisComponent.url
apfad() = split(surl ,"/")'Pfad zum -
lp = ubound(apfad()) 'Verzeichniss in Array schreiben-
dim rg()
rg =split(str, "/")
if uBound(rg) > 0 then 'Abfrage ob Aray größer 0
'msgbox uBound(rg)
apfad(lp)=rg(0)
'----------------------------------------------------------------
'---------------------Datei Öffnen--------------------------------
bpfad = join(apfad(),"/")' neuen Pfad zusammensetzen
bpfad=bpfad & "/" & rg(1) & "-" & stt & ".ods"
If not fileExists(bpfad) then
msgbox "Datei nicht gefunden" & chr(13) & bpfad , 16 , "Warnung"
else
dim myFileProp() as Object
oDocument = StarDesktop.loadComponentFromURL(bpfad, "_blank", 0, myFileProp() )
end if
'-----------------------------------------------------
else
msgbox "Letzte RG-Nr. nicht gefunden: " & chr(13) & str , 16 , "Warnung"
end if
else 'Zellbereich
MsgBox "Es darf nur eine Zelle Markiert sein! " , 16 , "Warnung"
end if
End Sub
Sub Main
Dim s,str,stt as String
Dim oCell,oCell1 as Object
oZellRange = ThisComponent.getCurrentSelection()
if oZellRange.supportsService("com.sun.star.sheet.SheetCell") then
oZellAdr = oZellRange.CellAddress
oDoc = ThisComponent
s= oDoc.Sheets(oZellAdr.Sheet).Columns(oZellAdr.Column).Name & oZellAdr.Row +1
t = "A" & oZellAdr.Row +1
oCell = ThisComponent.sheets(0).getCellRangeByName(s)
str=oCell.String
'MsgBox str
oCell1 = ThisComponent.sheets(0).getCellRangeByName(t)
stt=oCell1.String
'MsgBox stt
if stt = "" then
msgbox "Kundencode nicht vorhanden" , 16 , "Warnung"
end
'else
'msgbox "Else"
end if
'---------------------Zerlegen der RG-Nr--------------------------------
dim apfad()
surl = ThisComponent.url
apfad() = split(surl ,"/")'Pfad zum -
lp = ubound(apfad()) 'Verzeichniss in Array schreiben-
dim rg()
rg =split(str, "/")
if uBound(rg) > 0 then 'Abfrage ob Aray größer 0
'msgbox uBound(rg)
apfad(lp)=rg(0)
'----------------------------------------------------------------
'---------------------Datei Öffnen--------------------------------
bpfad = join(apfad(),"/")' neuen Pfad zusammensetzen
bpfad=bpfad & "/" & rg(1) & "-" & stt & ".ods"
If not fileExists(bpfad) then
msgbox "Datei nicht gefunden" & chr(13) & bpfad , 16 , "Warnung"
else
dim myFileProp() as Object
oDocument = StarDesktop.loadComponentFromURL(bpfad, "_blank", 0, myFileProp() )
end if
'-----------------------------------------------------
else
msgbox "Letzte RG-Nr. nicht gefunden: " & chr(13) & str , 16 , "Warnung"
end if
else 'Zellbereich
MsgBox "Es darf nur eine Zelle Markiert sein! " , 16 , "Warnung"
end if
End Sub
Re: Makro
Hallo
Ein paar Anmerkungen zu deinem Makro:
oZellRange = ThisComponent.getCurrentSelection()
und
oCell = ThisComponent.sheets(0).getCellRangeByName(s)
sind nur dann identisch, solange sich die ausgewählte Zelle im ersten Tabellenblatt befindet.
Evtl. ist der Umweg über die Ermittlung des Zellnamens überhaupt nicht notwendig ?
Für die Variable t reicht eigentlich schon:
t = "A" & oZellRange.CellAddress.row +1
Gruß Karo
Ein paar Anmerkungen zu deinem Makro:
oZellRange = ThisComponent.getCurrentSelection()
und
oCell = ThisComponent.sheets(0).getCellRangeByName(s)
sind nur dann identisch, solange sich die ausgewählte Zelle im ersten Tabellenblatt befindet.
Evtl. ist der Umweg über die Ermittlung des Zellnamens überhaupt nicht notwendig ?
Für die Variable t reicht eigentlich schon:
t = "A" & oZellRange.CellAddress.row +1
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)