Makro

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro

Re: Makro

von Karolus » Mi, 05.03.2008 16:59

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

Re: Makro

von Minok » Mi, 05.03.2008 15:25

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

Re: Makro

von Karolus » Di, 04.03.2008 11:23

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

Re: Makro

von Minok » Di, 04.03.2008 09:21

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

Re: Makro

von Karolus » Mo, 03.03.2008 16:00

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

Re: Makro

von Minok » Mo, 03.03.2008 11:15

Ich bekomme das nicht ganz so hin wie erwünscht hat vielleicht jeman ein beispiel für mich bitte

Re: Makro

von Minok » Mo, 03.03.2008 09:19

danke! für die schnelle antwort probiers dann mal aus

Re: Makro

von komma4 » Mo, 03.03.2008 09:15

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!

Nach oben