Makro

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Makro

Beitrag von komma4 »

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!
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)
Minok
Beiträge: 5
Registriert: Mo, 03.03.2008 08:38

Re: Makro

Beitrag von Minok »

danke! für die schnelle antwort probiers dann mal aus
Minok
Beiträge: 5
Registriert: Mo, 03.03.2008 08:38

Re: Makro

Beitrag von Minok »

Ich bekomme das nicht ganz so hin wie erwünscht hat vielleicht jeman ein beispiel für mich bitte
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro

Beitrag von Karolus »

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.

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
Hilfe zur Installation gibts hier ,
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)
Minok
Beiträge: 5
Registriert: Mo, 03.03.2008 08:38

Re: Makro

Beitrag von Minok »

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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro

Beitrag von Karolus »

Minok 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 :?
Das Makro aus meinem letzten Antwort macht das, ich werde mal ein paar optionale Zeilen einfügen die dir evtl. weiterhelfen
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)
Minok
Beiträge: 5
Registriert: Mo, 03.03.2008 08:38

Re: Makro

Beitrag von Minok »

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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Makro

Beitrag von Karolus »

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
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten