Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Verwijderen van menu items in VBA  (gelezen 5852 keer)

0 leden en 1 gast bekijken dit topic.

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Verwijderen van menu items in VBA
« Gepost op: 21 november 2005, 21:08:08 »
Hoi,

Mijn ding begint al op iets te lijken maar om het "af" te maken, wilde ik nog graag de menu items "bewaren" (bestand> bewaren en het disketje )verwijderen. Ik heb een grote knop op het rekenblad gezet die ze MOETEN gebruiken om te bewaren, waarachter nog wat code zit die nog wat gaat testen vooraleer er opgeslagen mag worden.

Ik heb hier al vanalles geprobeerd,  maar krijg iedere keer een foutmelding.

Iemand die mij op weg kan helpen? Pleaseeeeeeeeeeeeeeeeee :)

groetjes

PS Ik heb Office XP.
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.181
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re:Verwijderen van menu items in VBA
« Reactie #1 Gepost op: 21 november 2005, 21:19:44 »
snuf, snuf,.....

ik dacht dat ik kon rieken wat je bedoelde, maar dat is dan blijkbaar toch wat te optimistisch... :P

Een voorbeeldje of een heel pak meer uitleg zou de zaak dan ook wat vereenvoudigen.

:) SoftAid :)
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Verwijderen van menu items in VBA
« Reactie #2 Gepost op: 21 november 2005, 21:45:10 »
Ik kan er ook geen touw aan vastknopen.  4 x herlezen...

Ik zie verschillende elementen in je uitleg, die volgens mij niets met elkaar te maken hebben.

Het woordje Discette irriteert me al.  Je moet opletten met bestanden rechtstreeks op Discette te bewerken.  Vroeg of laat heb je een ramp, dat gans je bestand corrupt wordt.

Opslaan doe je met Save of SaveAs.  Ook in VBA.

En menu-items: Ik geef de voorkeur die via programmacode aan te maken, en via programmacode weer te verwijderen.

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Verwijderen van menu items in VBA
« Reactie #3 Gepost op: 21 november 2005, 22:07:28 »
spyder,

Dit is één mogelijkheid: de menu items niet desactiveren, maar het gebruik van 'Save' of 'Save As' door de gebruiker "trappen" en blokkeren, eventueel meet feedback...

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not SaveByVBA Then
    MsgBox "You can't use the 'Save' or 'Save As' command.", vbInformation
    Cancel = True
End If
End Sub


Als je messagebox niet gebruikt, ziet de user niets, maar zolang SaveByVBA niet true is, kan er niet gesaved worden. Uiteraard moet je de variabele SaveByVBA dan wel TRUE maken door de VBA code die wel de workbook mag saven...

Greetz,
Bart

WinXP - Excel 2000/XP/2003

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:Verwijderen van menu items in VBA
« Reactie #4 Gepost op: 21 november 2005, 22:37:40 »
Ok,

Nieuwe poging. :-[

Bestanden kun je opslaan via het menu "Bestand> Opslaan" of door in de werkbalk "Standaard" op het "disketje" te klikken (meestal het derde icoontje).

Ik wil nu deze mogelijkheid uitschakelen, omdat degene hier mee gaat werken nogal eens verstrooid durft zijn, en toch nog deze manier van opslaan zou gebruiken ( zelfs al staat er een zelfgemaakte knop zo groot als een huis ;D ;D)

Het is nodig dat ie op die zelfgemaakte knop klikt om op te slaan omdat er code achterzit die gaat testen onder welke naam er opgeslagen word. Het origineel bestandje heet "Bestek_Klein.xls" maar mag , zodra het veranderd is, niet meer onder die naam opgeslagen worden.

Maar als ik de oplossing van Bart zie (ik heb ze nog niet getest, maar ga dit zeker nog uitproberen ;)) zat ik op een volledig verkeerd spoor. :-[
Ik meende mijn heil te moeten zoeken bij de "application.commandbars" objecten, maar dit blijkt dan niet te kloppen?

Hopende dat het nu iets duidelijker is. :-[

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Verwijderen van menu items in VBA
« Reactie #5 Gepost op: 21 november 2005, 22:49:19 »
Ik zou de mensen vrij laten hoe ze opslaan.  Willen ze het anders doen... laat maar.  Maar gebruik de code van Bartold, om daar je controles tussen te plaatsen.

Dit moet dus in de programmacode van ThisWorkbook komen:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'Controles

End Sub

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:Verwijderen van menu items in VBA
« Reactie #6 Gepost op: 21 november 2005, 22:53:45 »
Hoi Bart,

Citaat
variabele SaveByVBA dan wel TRUE maken

Jou oplossing werkt prima voor mij , maar op welke wijze kan ik dit inpassen in mijn bestaande code voor de knop "Opslaan"?

De voorgestelde code van Bart staat al in "this workbook"

Sub opslaan()
       
    If ActiveWorkbook.Name = "Bestek_Klein.xls" Then
        MsgBox "Het bestand BESTEK_KLEIN.XLS mag niet overschreven worden"
        With Application.FileDialog(msoFileDialogSaveAs)
            If .Show Then
                .Execute
            End If
        End With
    Else
        ActiveWorkbook.Save
    End If

End Sub


Alvast bedankt voor de gouden raad. ;)
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Verwijderen van menu items in VBA
« Reactie #7 Gepost op: 21 november 2005, 23:09:59 »
In principe voor elke gewenste save, dus in jouw code bv:

Sub opslaan()
    If ActiveWorkbook.Name = "Bestek_Klein.xls" Then
        MsgBox "Het bestand BESTEK_KLEIN.XLS mag niet overschreven worden"
        With Application.FileDialog(msoFileDialogSaveAs)
            If .Show Then
                .Execute
            End If
        End With
    Else
        SaveByVBA=true
        ActiveWorkbook.Save
        SaveByVBA=false
    End If
End Sub

SaveByVBA dan als best als globale variabele declareren...

Maar euh, zou je in jouw voorbeeld dat bepaalde bestand niet gewoon als read_only laten openen. Zo bijvoorbeeld:
Workbooks.Open "c:\bestek_klein", ReadOnly:=True


Morgen meer... Nighty night...

Bart
WinXP - Excel 2000/XP/2003

Offline Gretorax

  • Lid
  • *
  • Berichten: 56
  • Oplossing.be
Re:Verwijderen van menu items in VBA
« Reactie #8 Gepost op: 01 december 2005, 21:10:48 »
Een eenvoudige oplossing voor dit probleem:

Maak het Excel-bestand bij Eigenschappen "Alleen lezen" ofte "Read only"

Als de gebruiker dan opslaat via Bestanden>Opslaan of het diskette-icoontje wordt die toch verplicht om het bestand onder een andere naam op te slaan.
Windows 10 Pro NLD 64bit | Intel(R) Core(TM) i7-4702MQ CPU @ 2.20GHz 800 | Intel(R) HD Graphics 4600 1024MB | HD Nr: 1 Model: Samsung SSD 840 EVO  Nr: 2 Model: WDC WD10JPVX-22JC3T0

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re:Verwijderen van menu items in VBA
« Reactie #9 Gepost op: 04 december 2005, 16:56:45 »
Hoi,

Eindelijk nog eens tijd gehad om me hier mee bezig te houden.

Ik houd het voorlopig op het "alleen lezen" (Sorry Bart, maar die VBA code werkt niet  :-[), maar ik ben er voorlopig niet gelukkig mee :'(. Achter de knop die ik wilde programeren zat nog wat code om nog wat dingen uit te voeren, maar dat gaat dan de mist in,he. :(

Ik zit momenteel wat in tijd nood om  hier verder mee bezig te zijn, maar ga dit nog wel verder uitwerken. Hopelijk valt er nog iets anders uit de bus.

groetjes
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Verwijderen van menu items in VBA
« Reactie #10 Gepost op: 04 december 2005, 21:21:11 »
spyder,

Hoe, dat werkt niet? Zal zeker aan de gebruiker liggen ;-) Ik gebruik zulke "traps" regelmatig...

Je kan natuurlijk je ding eens uploaden, dan kunnen we daar naar kijken... of emailen...

Bart
WinXP - Excel 2000/XP/2003

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Verwijderen van menu items in VBA
« Reactie #11 Gepost op: 04 december 2005, 21:32:48 »
Hallo Bart,

Het probleem zit hem in FileDialog.

In Excel 2000 bestaat dit nog niet.  In Excel 2003 wel.  Ik vermoed dat het ergens rond XP is toegevoegd.

Spyder kan wel hetzelfde bereiken, maar dan zal ie met die goede oude API-Call's moeten werken.  En dat is natuurlijk een stuk moeilijker.

Helaas heb ik nu geen tijd om de juiste code te gaan opzoeken.

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Verwijderen van menu items in VBA
« Reactie #12 Gepost op: 04 december 2005, 21:47:08 »
Hey Luc,

Klopt. In Excel 2K bestaat dat object inderdaad niet... In XP waarschijnlijk wel, maar dat heb ik niet meer draaien... Maar spyder had toch XP?

Maar dat staat los van het trappen van het save-evenement. Ipv die filedialogs, zou ik zelf de naam vragen van het gewenste bestand met een msgbox en dan daarop de controle <> bestek_klein doen...

Enne, al diegenen die nog met 2k,xp werken zouden best eens upgraden ;-) Office 12 beta 1 lijkt veelbelovend: iets van een 16000 kolommen ;-) Versie 2003 vind ik persoonlijk de beste tot nu toe, in XP zaten een paar vervelende bugs voor arme VBA-programmeurs zoals ik...

Bart
WinXP - Excel 2000/XP/2003

Offline LucHeyndrick

  • Volledig lid
  • **
  • Berichten: 217
  • Oplossing.be
Re:Verwijderen van menu items in VBA
« Reactie #13 Gepost op: 04 december 2005, 21:54:50 »
Ja... voor wie geld te veel heeft, kan best 's upgraden  :P

Ik heb zelf wel 2 Office versies.... maar indien ik er m'n brood niet mee zou verdienen, dan zou ik het wel netjes bij 2000 houden.

Ik ga me trouwens de nieuwste versie van Office ook niet aanschaffen.  Voor mij is het veel belangrijker dat ik m'n toepassingen ook werkend krijg in oude versie's.  Van oud naar nieuw heb je minder problemen dan omgekeerd.

Wie goede Office toepassingen wenst, heeft er meer voordeel bij om z'n oude toepassing goed te leren gebruiken, dan om onmiddellijk een nieuwe te kopen.

Luc
Gelieve uw systeemgegevens in te vullen. Klik HIER voor meer informatie.

Offline barthold

  • Volledig lid
  • **
  • Berichten: 171
  • ExWorks.be: Free Excel tools.
Re:Verwijderen van menu items in VBA
« Reactie #14 Gepost op: 04 december 2005, 22:01:29 »
Tja, ieder zijn idee daarover. Nieuwe versies hebben dan weer nieuwe mogelijkheden, zodat code efficiënter kan worden of gewoonweg totaal nieuwe mogelijkheden biedt...

Als ik in regie ontwikkel, neem ik meestal ook de versie van de klant (of tenminste de testen in de klant-versie), voor proggies die ik zo op de markt kan brengen, zal ik meestal een nieuwe versie nemen...

Maar, allez, daarmee is spyder zijn probleem nog niet opgelost ;-)
WinXP - Excel 2000/XP/2003

 


www.combell.com