Menübefehle deaktiveren
Moderator: Moderatoren
Menübefehle deaktiveren
Hallo zusammen,
wie der Titel schon sagt möchte ich Menübefehle deaktivieren. In diesem Fall in Calc.
Im Klartext möchte ich verhindern das ein User Daten kopieren, einfügen oder Löschen kann.
Dafür möchte ich die entsprechenden Menübefehlen deaktiveren/ausblenden (auch die auf der Rechten Maustaste) sowie die Tastenkürzel unterbinden, auch das Einfügen von Daten mittels ziehen einer Zelle nach unten oder zur Seite soll verhindert werden.
Da ich noch relativ neu in der Makroprogrammierung bin habe ich (da ich bei google nichts für Openoffice gefunden habe) versucht ein für Excel 2003 geschriebenes Makro entsprechend anzupassen. Leider ohne Erfolg.
Hat hier vielleicht jemand einen allgemeinen Lösungsansatz wie ich die Felder ausblende/deaktivere oder einen Tipp was man sich an Tutorials etc. durchlesen könnte um letztendlich mein Problem zu lösen?
Danke schonmal im Vorraus an alle.
wie der Titel schon sagt möchte ich Menübefehle deaktivieren. In diesem Fall in Calc.
Im Klartext möchte ich verhindern das ein User Daten kopieren, einfügen oder Löschen kann.
Dafür möchte ich die entsprechenden Menübefehlen deaktiveren/ausblenden (auch die auf der Rechten Maustaste) sowie die Tastenkürzel unterbinden, auch das Einfügen von Daten mittels ziehen einer Zelle nach unten oder zur Seite soll verhindert werden.
Da ich noch relativ neu in der Makroprogrammierung bin habe ich (da ich bei google nichts für Openoffice gefunden habe) versucht ein für Excel 2003 geschriebenes Makro entsprechend anzupassen. Leider ohne Erfolg.
Hat hier vielleicht jemand einen allgemeinen Lösungsansatz wie ich die Felder ausblende/deaktivere oder einen Tipp was man sich an Tutorials etc. durchlesen könnte um letztendlich mein Problem zu lösen?
Danke schonmal im Vorraus an alle.
Zuletzt geändert von Maxx88 am Fr, 14.05.2010 08:47, insgesamt 1-mal geändert.
Re: Menübefehle deaktiveren
Hi,
danke schonmal für deine Antowrt nur leider ist das nicht das was ich brauche.
Also das heißt ich brauche das schon aber das habe ich schon herausgefunden
Mein Problem is das der User durchaus eingaben in einigen Freigegebenen Feldern machen darf, nur darf er in diese Felder nichts hineinkopieren oder herauskopieren oder Ausschneiden.
Auch das Autovervolständigen in den Zellen durch Herunterziehen (z.B. Automatisches berechnen des Datums) darf der User nicht können.
Es sollen wirklich nur manuelle Eingaben erlaubt sein.
Ich hoffe es ist jetzt etwas klarer.
Ich habe hier auch schon etwas gefunden, ein Script das zumindestens zum Teil tut was ich möchte.
Hier erstmal das Script:
Das Script deaktiviert zumindestens die Menübefehle aber nicht die Tastenkürzel (STRG+C, STRG+C und STRG+V) und Autovervollständigen wird auch nicht deaktiviert.
Wenn also noch jemand ein Tip hat, ich bin für jede Lösung offen.
*Korrektur:
Es werden doch die Tastenkürzel unterbunden. Allerdings nach wie vor das Autovervollständigen nicht. Also wenn diesbezüglich noch jemand eine Lösung hat, immer her damit.
danke schonmal für deine Antowrt nur leider ist das nicht das was ich brauche.
Also das heißt ich brauche das schon aber das habe ich schon herausgefunden

Mein Problem is das der User durchaus eingaben in einigen Freigegebenen Feldern machen darf, nur darf er in diese Felder nichts hineinkopieren oder herauskopieren oder Ausschneiden.
Auch das Autovervolständigen in den Zellen durch Herunterziehen (z.B. Automatisches berechnen des Datums) darf der User nicht können.
Es sollen wirklich nur manuelle Eingaben erlaubt sein.
Ich hoffe es ist jetzt etwas klarer.
Ich habe hier auch schon etwas gefunden, ein Script das zumindestens zum Teil tut was ich möchte.
Hier erstmal das Script:
Code: Alles auswählen
Option Explicit
Global oDispatchInterceptor
Global oSlaveDispatchProvider
Global oMasterDispatchProvider
Global oFrame
Global bDebug As Boolean
'________________________________________________________
Sub RegisterInterceptor
Dim oFrame : oFrame = ThisComponent.currentController.Frame
Dim s$ : s = "com.sun.star.frame.XDispatchProviderInterceptor"
oDispatchInterceptor = CreateUnoListener("ThisFrame_", s)
oFrame.registerDispatchProviderInterceptor(oDispatchInterceptor)
End Sub
'________________________________________________________
Sub ReleaseInterceptor()
On Error Resume Next
oFrame.releaseDispatchProviderInterceptor(oDispatchInterceptor)
End Sub
'________________________________________________________
Function ThisFrame_queryDispatch ( oUrl As Object, _
sTargetFrameName As String, lFlags As Long ) As Variant
Dim oDisp
Dim s$
'the slot protocol causes ooo crash...
If oUrl.protocol = "slot:" Then
Exit Function
End If
If bDebug Then
Print oUrl.complete, sTargetFrameName, lFlags
End If
s = sTargetFrameName
oDisp = oSlaveDispatchProvider.queryDispatch( oUrl, s, lFlags )
'do your management here
Select Case oUrl.complete
Case ".uno:Copy" 'disable the save command
Exit Function
Case ".uno:Insert" 'disable the save command
Exit Function
Case ".uno:Cut" 'disable the save command
Exit Function
Case Else
' do nothing
End Select
ThisFrame_queryDispatch = oDisp
End Function
'________________________________________________________
Function ThisFrame_queryDispatches ( mDispArray ) As Variant
ThisFrame_queryDispatches = mDispArray
End Function
'________________________________________________________
Function ThisFrame_getSlaveDispatchProvider ( ) As Variant
ThisFrame_getSlaveDispatchProvider = oSlaveDispatchProvider
End Function
'________________________________________________________
Sub ThisFrame_setSlaveDispatchProvider ( oSDP )
oSlaveDispatchProvider = oSDP
End Sub
'________________________________________________________
Function ThisFrame_getMasterDispatchProvider ( ) As Variant
ThisFrame_getMasterDispatchProvider = oMasterDispatchProvider
End Function
'________________________________________________________
Sub ThisFrame_setMasterDispatchProvider ( oMDP )
oMasterDispatchProvider = oMDP
End Sub
'________________________________________________________
Sub ToggleDebug()
'be carefull! you will have a debug message
' for each dispatch....
bDebug = Not bDebug
End Sub
Wenn also noch jemand ein Tip hat, ich bin für jede Lösung offen.
*Korrektur:
Es werden doch die Tastenkürzel unterbunden. Allerdings nach wie vor das Autovervollständigen nicht. Also wenn diesbezüglich noch jemand eine Lösung hat, immer her damit.
-
- *
- Beiträge: 17
- Registriert: Mo, 10.05.2010 19:26
Re: Menübefehle deaktiveren
Hi, Maxx,
ich bin nicht sicher, ob das funktioniert - kann im Augenblick nicht testen.
Wäre im Moment meine einzige Idee.
Viele Grüße
ich bin nicht sicher, ob das funktioniert - kann im Augenblick nicht testen.
Code: Alles auswählen
Select Case oUrl.complete
Case ".uno:AutoComplete"
....
Viele Grüße
Re: Menübefehle deaktiveren
Hi,
nee geht leider nicht. Schade
Das mit dem Autovervollständigen war erstmal meine Wortkreation. Weiß zufällig jemand wie diese Funktion in Excel heißt (auf Englisch) ?
nee geht leider nicht. Schade

Das mit dem Autovervollständigen war erstmal meine Wortkreation. Weiß zufällig jemand wie diese Funktion in Excel heißt (auf Englisch) ?
Re: Menübefehle deaktiveren
Hi,
Nein, weiss ich nicht.
Für Calc ist die Bezeichnung "Autoinput".
Jürgen
Excel?Maxx88 hat geschrieben:Weiß zufällig jemand wie diese Funktion in Excel heißt

Für Calc ist die Bezeichnung "Autoinput".

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: Menübefehle deaktiveren
Hallo,
natürlich meine ich Calc..ich werd langsam mürbe.
Aber nichts desto trotz kann ich diese Funktion nicht deaktivieren
Mein Makro sieht derzeit so aus:
Ich hoffe ihr meint auch alle die Richtige funktion hier vielleicht nochmal zur Erklärung:
Wenn ich ein z.B. das Datum 01.05.2010 in eine Zelle eingebe dann die Zelle makriere und an dem kleinen schwarzen Kasten nach unten (oder zur seite) ziehe und Calc mit automatisch das Datum hochzählt (02.05.2010, 03.05.2010, etc)
Wenn diese Funktion wirklich "AutoInput" heißt kann ich sie nicht, wie ich es oben probiert habe, mit dem Makro deaktivieren.
Also ergeben sich folgende Fragen:
1. heißt diese Funktion wirklich "AutoInput" ?
Wenn ja:
1.1 Hat jemand vielleicht eine Idee wie ich diese per Makro deaktiveren kann?
Wenn nein:
1.2 Wie heißt sie dann bzw. gibt es irgendwo eine Übersicht der Funktionen von OpenOffice?
Bin für jede Hilfe dankbar.
natürlich meine ich Calc..ich werd langsam mürbe.
Aber nichts desto trotz kann ich diese Funktion nicht deaktivieren

Mein Makro sieht derzeit so aus:
Code: Alles auswählen
Option Explicit
Global oDispatchInterceptor
Global oSlaveDispatchProvider
Global oMasterDispatchProvider
Global oFrame
Global bDebug As Boolean
'________________________________________________________
Sub RegisterInterceptor
Dim oFrame : oFrame = ThisComponent.currentController.Frame
Dim s$ : s = "com.sun.star.frame.XDispatchProviderInterceptor"
oDispatchInterceptor = CreateUnoListener("ThisFrame_", s)
oFrame.registerDispatchProviderInterceptor(oDispatchInterceptor)
End Sub
'________________________________________________________
Sub ReleaseInterceptor()
On Error Resume Next
oFrame.releaseDispatchProviderInterceptor(oDispatchInterceptor)
End Sub
'________________________________________________________
Function ThisFrame_queryDispatch ( oUrl As Object, _
sTargetFrameName As String, lFlags As Long ) As Variant
Dim oDisp
Dim s$
'the slot protocol causes ooo crash...
If oUrl.protocol = "slot:" Then
Exit Function
End If
If bDebug Then
Print oUrl.complete, sTargetFrameName, lFlags
End If
s = sTargetFrameName
oDisp = oSlaveDispatchProvider.queryDispatch( oUrl, s, lFlags )
'do your management here
Select Case oUrl.complete
Case ".uno:Copy" 'disable the copy command
Exit Function
Case ".uno:Paste" 'disable the paste command
Exit Function
Case ".uno:Cut" 'disable the cut command
Exit Function
Case ".uno:AutoInput" 'disable the AutoInput command
Exit Function
Case Else
' do nothing
End Select
ThisFrame_queryDispatch = oDisp
End Function
'________________________________________________________
Function ThisFrame_queryDispatches ( mDispArray ) As Variant
ThisFrame_queryDispatches = mDispArray
End Function
'________________________________________________________
Function ThisFrame_getSlaveDispatchProvider ( ) As Variant
ThisFrame_getSlaveDispatchProvider = oSlaveDispatchProvider
End Function
'________________________________________________________
Sub ThisFrame_setSlaveDispatchProvider ( oSDP )
oSlaveDispatchProvider = oSDP
End Sub
'________________________________________________________
Function ThisFrame_getMasterDispatchProvider ( ) As Variant
ThisFrame_getMasterDispatchProvider = oMasterDispatchProvider
End Function
'________________________________________________________
Sub ThisFrame_setMasterDispatchProvider ( oMDP )
oMasterDispatchProvider = oMDP
End Sub
'________________________________________________________
Sub ToggleDebug()
'be carefull! you will have a debug message
' for each dispatch....
bDebug = Not bDebug
End Sub
Wenn ich ein z.B. das Datum 01.05.2010 in eine Zelle eingebe dann die Zelle makriere und an dem kleinen schwarzen Kasten nach unten (oder zur seite) ziehe und Calc mit automatisch das Datum hochzählt (02.05.2010, 03.05.2010, etc)
Wenn diese Funktion wirklich "AutoInput" heißt kann ich sie nicht, wie ich es oben probiert habe, mit dem Makro deaktivieren.
Also ergeben sich folgende Fragen:
1. heißt diese Funktion wirklich "AutoInput" ?
Wenn ja:
1.1 Hat jemand vielleicht eine Idee wie ich diese per Makro deaktiveren kann?
Wenn nein:
1.2 Wie heißt sie dann bzw. gibt es irgendwo eine Übersicht der Funktionen von OpenOffice?
Bin für jede Hilfe dankbar.
-
- *
- Beiträge: 17
- Registriert: Mo, 10.05.2010 19:26
Re: Menübefehle deaktiveren
Hi,
ist die Makroverwendung dafür zwingend ?
Um bei deinem Datumsbeispiel zu bleiben:
> wenn in A1 das Datum steht,
> B1 und C1 als Eingabefelder zu Verfügung stehen sollen,
> aber A1 nicht dorthin gezogen werden soll:
dann hilft das Sperren von A1 (Zellschutz), aber Freigabe von B1 und C1 und dann Tabellenschutz.
Das ist alles auch per Makro möglich. Das Hinüberziehen wird dann geblockt mit der Meldung "Gesperrte Zellen..."
Das Übernehmen des Wertes ist allerdings dann immer noch per Formel möglich (=A1).
Das, was beim Hinüberziehen passiert, ist eigentlich das Füllen = Fill bzw. Autofill.
Ob das allerdings der richtige Ausdruck für den OO-Befehl ist, weiß ich nicht. Bin selber noch nicht tief drin in diesen Dingen
Eine andere Variante weiß ich leider auch nicht.
Viel Erfolg !
ist die Makroverwendung dafür zwingend ?
Um bei deinem Datumsbeispiel zu bleiben:
> wenn in A1 das Datum steht,
> B1 und C1 als Eingabefelder zu Verfügung stehen sollen,
> aber A1 nicht dorthin gezogen werden soll:
dann hilft das Sperren von A1 (Zellschutz), aber Freigabe von B1 und C1 und dann Tabellenschutz.
Das ist alles auch per Makro möglich. Das Hinüberziehen wird dann geblockt mit der Meldung "Gesperrte Zellen..."
Das Übernehmen des Wertes ist allerdings dann immer noch per Formel möglich (=A1).
Das, was beim Hinüberziehen passiert, ist eigentlich das Füllen = Fill bzw. Autofill.
Ob das allerdings der richtige Ausdruck für den OO-Befehl ist, weiß ich nicht. Bin selber noch nicht tief drin in diesen Dingen

Eine andere Variante weiß ich leider auch nicht.
Viel Erfolg !
Re: Menübefehle deaktiveren
Hi,
also der User gibt in den Feldern komplett alles alleine ein.
In A1 steht also erstmal gar nichts
Der User gibt jetzt in A1 ein Datum ein.
Und in B1 und C1 muss er seine Eingaben auch Manuell machen und nicht von A1 runterziehen. Und das klappt mit dem Zellschutz ja nicht, oder irre ich mich da?
Habs mit Fill und AutoFill probiert. Klappt leider auch nicht ...
Aber danke für die IDee
*Edit:
In Excel heißt die Funktion CellDragAndDrop was in Openoffice allerdings nicht funktioniert..Aber es war ein Versuch wert.
also der User gibt in den Feldern komplett alles alleine ein.
In A1 steht also erstmal gar nichts
Der User gibt jetzt in A1 ein Datum ein.
Und in B1 und C1 muss er seine Eingaben auch Manuell machen und nicht von A1 runterziehen. Und das klappt mit dem Zellschutz ja nicht, oder irre ich mich da?
Habs mit Fill und AutoFill probiert. Klappt leider auch nicht ...
Aber danke für die IDee
*Edit:
In Excel heißt die Funktion CellDragAndDrop was in Openoffice allerdings nicht funktioniert..Aber es war ein Versuch wert.
Re: Menübefehle deaktiveren
Vergiss die ganze Gängelei des Nutzers der Datei und biete gleich Hilfe in Form einer vernünftigen Eingabemaske an. Ein ausführlichst dokumentiertes Beispiel dafür ist das 'Fahrtenbuch':Wenn also noch jemand ein Tip hat, ich bin für jede Lösung offen.
http://www.amt-wiesbaden.de/downloads/F ... Muster.sxc
http://www.amt-wiesbaden.de/downloads/B ... enbuch.pdf
Gruß
Stephan
-
- *
- Beiträge: 17
- Registriert: Mo, 10.05.2010 19:26
Re: Menübefehle deaktiveren
Also zunächst @Stephan: Klasse, dein Stichwortverzeichnis möchte ich haben
Aber ehrlich: Ich habe keine Ahnung, warum sich einige Menschen solche Infos mal so abschütteln
Hilft mir aber auch - also auch von mir ein DANKE !
Und nun aber mal noch eine Bitte für das Verständnis @maxx:
Wenn ich das nun richtig verstanden habe (Zellbezeichnungen als Beispiele):
> DARF ich als Datei-Benutzer Zelle A1 mit einem von mir gewählten Eintrag belegen;
> DARF ich als Datei-Benutzer Zelle B1 mit einem von mir gewählten Eintrag belegen;
> ist es mir als Datei-Benutzer verboten, meinen eigenen Eintrag aus A1 in B1 zu kopieren ???
???
Tut mir leid, das erschließt sich mi nun gar nicht mehr
Viele Grüße

Aber ehrlich: Ich habe keine Ahnung, warum sich einige Menschen solche Infos mal so abschütteln

Hilft mir aber auch - also auch von mir ein DANKE !
Und nun aber mal noch eine Bitte für das Verständnis @maxx:
Wenn ich das nun richtig verstanden habe (Zellbezeichnungen als Beispiele):
> DARF ich als Datei-Benutzer Zelle A1 mit einem von mir gewählten Eintrag belegen;
> DARF ich als Datei-Benutzer Zelle B1 mit einem von mir gewählten Eintrag belegen;
> ist es mir als Datei-Benutzer verboten, meinen eigenen Eintrag aus A1 in B1 zu kopieren ???



Tut mir leid, das erschließt sich mi nun gar nicht mehr

Viele Grüße
Re: Menübefehle deaktiveren
würdest Du weniger Zeit damit verschwenden DEinen Beitrag mit völlig sinnlosen Smileys zuzumüllen, die allen hier das Lesen zur Qual machen, hättest Du den entsprechenden Link leicht finden können denn er stewht seit Jahren im ersten Post des Basic-Forums (im unteren Bereich unter "Beispieldateien"):Also zunächst @Stephan: Klasse, dein Stichwortverzeichnis möchte ich haben
viewtopic.php?f=18&t=1553
Gruß
Stephan
-
- *
- Beiträge: 17
- Registriert: Mo, 10.05.2010 19:26
Re: Menübefehle deaktiveren
@Stephan
Ich bitte untertänigst um Verzeihung - hatte eigentlich lediglich etwas Nettes als Danke sagen wollen - melde mich ja schon ab
Nicht jeder kennt innerhalb von Sekunden seinen Platz - ich brauche halt NOCH länger
Ich bitte untertänigst um Verzeihung - hatte eigentlich lediglich etwas Nettes als Danke sagen wollen - melde mich ja schon ab
Nicht jeder kennt innerhalb von Sekunden seinen Platz - ich brauche halt NOCH länger
Re: Menübefehle deaktiveren
das solltest Du Dir sparen, Untertänigkeit tut niemandem gut und ich persönlich hasse sieIch bitte untertänigst um Verzeihung
Du willst doch aber nicht ernsthaft sagen das Du Leute kennst denen Dinge wie die Kombination von 6 Fragezeichen mit 3 Smileys:hatte eigentlich lediglich etwas Nettes als Danke sagen wollen
???



als nett vorkommen KÖNNTEN. Sowas tut doch jedem beim Lesen weh.
kopfschüttelnd,
Stephan
Re: Menübefehle deaktiveren
Das hast du soweit richtig verstanden....Den Sinn kann ich dir auch nicht sagen. Anforderung ist Anforderung.Wenn ich das nun richtig verstanden habe (Zellbezeichnungen als Beispiele):
> DARF ich als Datei-Benutzer Zelle A1 mit einem von mir gewählten Eintrag belegen;
> DARF ich als Datei-Benutzer Zelle B1 mit einem von mir gewählten Eintrag belegen;
> ist es mir als Datei-Benutzer verboten, meinen eigenen Eintrag aus A1 in B1 zu kopieren ???
ICh gebe dir Feedback sobald ich das Script für meine Zwecke zum Laufen gebracht habe.Vergiss die ganze Gängelei des Nutzers der Datei und biete gleich Hilfe in Form einer vernünftigen Eingabemaske an. Ein ausführlichst dokumentiertes Beispiel dafür ist das 'Fahrtenbuch':
http://www.amt-wiesbaden.de/downloads/F ... Muster.sxc
http://www.amt-wiesbaden.de/downloads/B ... enbuch.pdf
Danke für die vielen Antworten.
Re: Menübefehle deaktiveren
Sooo,
hab das jetzt mal umgebaut und ausprobiert.
Ergebnis war meines erachtens gut die Lösung gefällt dem Anforderer allerdings nicht so richtig.
Gibt es vielleicht noch jemanden mit einer Idee ? Am besten wäre es wirklich wenn mir jemand den Namen der Funktion nennen könnte bzw. ein kleines Makro mit dem ich diese Funktion deaktivieren kann.
Gruß Max
hab das jetzt mal umgebaut und ausprobiert.
Ergebnis war meines erachtens gut die Lösung gefällt dem Anforderer allerdings nicht so richtig.
Gibt es vielleicht noch jemanden mit einer Idee ? Am besten wäre es wirklich wenn mir jemand den Namen der Funktion nennen könnte bzw. ein kleines Makro mit dem ich diese Funktion deaktivieren kann.
Gruß Max