Formularentwurf per VBA ändern (permanent)

Moderator: ModerationP

Formularentwurf per VBA ändern (permanent)

Beitragvon andreas_42 » 21. Apr 2017, 09:06

Hallo,
ich habe in meiner ACCESS-Datenbank ca. 20 Formulare erstellt. Jetzt haben wir uns für ein anderes Design entschieden, andere Farben, Spezialeffekte, etc. Ich habe VBA-Code geschrieben und den in das BeimKlick-Ereignis einer neuen Befehlsschaltfläche gepackt:

Code: Alles auswählen
Private Sub Form_Open(Cancel As Integer)
Dim ctl As Control
Me.Detailbereich.BackColor = RGB(247, 249, 255)
Me.Formularfuß.BackColor = RGB(247, 249, 255)
Me.Formularkopf.BackColor = RGB(247, 249, 255)
For Each ctl In Me.Form.Controls
        Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            ctl.ForeColor = RGB(20, 63, 105)
            ctl.BorderColor = RGB(20, 63, 105)
            ctl.SpecialEffect = 2
        Case acLabel
            ctl.ForeColor = RGB(20, 63, 105)
            ctl.BackStyle = 0
        Case acRectangle
            ctl.BackColor = RGB(175, 207, 239)
        Case acCommandButton
            ctl.BackColor = RGB(20, 63, 105)
            ctl.BorderColor = RGB(255, 255, 255)
            ctl.ForeColor = RGB(255, 255, 255)
            ctl.UseTheme = True
            ctl.PressedColor = RGB(52, 119, 178)
            ctl.PressedForeColor = RGB(64, 64, 64)
            ctl.HoverColor = RGB(192, 216, 237)
            ctl.HoverForeColor = RGB(64, 64, 64)
        End Select
Next ctl
Set ctl = Nothing
End Sub


Das funktioniert auch, ändert den Entwurf aber nur temporär. Als Notlösung habe ich es in jedem Formular in BeimÖffnen getan, der Benutzer merkt den Unterschied nicht aber optimal ist es natürlich nicht. Ich habe mit einer Internetrecherche keine Lösung finden können. Für Hilfe wäre ich sehr dankbar, möglichst einfach formuliert. :)
Ich bin kein großer VBA-Experte, das hier ist schon eine Leistung, auf die ich etwas stolz bin.

Andreas
andreas_42
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 21. Apr 2017, 08:52

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon mmarkus » 21. Apr 2017, 09:24

Du musst die Änderungen speichern.

Das geht mit der docmd.Save Methode.

LG Markus
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 287
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon Nouba » 21. Apr 2017, 09:29

Entweder schaltest Du das Formular aus der Anzeige in den Entwurfsmodus um und speicherst die Änderungen oder Du versuchst die Anweisung RunCommand acCmdSave abzusetzen.
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Nouba
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14890
Registriert: 13. Mär 2006, 12:55
Wohnort: Berlin

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon andreas_42 » 21. Apr 2017, 09:42

Danke für die schnelle Antwort! Ich habe ganz ans Ende, direkt vors End Sub:

Code: Alles auswählen
DoCmd.Save acForm, "Formularname"

getan (mit hardgecodetem Namen, um nicht eine neue Baustelle aufzumachen). Das gibt keine Fehlermeldung, ändert aber nichts.
Wenn ich ein Formular öffne, es dann im neuen, gewünschten Design sehe und per Hand den Speichern-Knopf drücke (das habe ich vorher auch schon versucht), wird auch der Formularentwurf nicht verändert.
Ich sehe in der Hilfe zu Docmd.Save auch keinen Hinweis, das man da noch andere Optionen angeben kann.
andreas_42
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 21. Apr 2017, 08:52

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon mmarkus » 21. Apr 2017, 10:35

andreas_42 hat geschrieben:Wenn ich ein Formular öffne, es dann im neuen, gewünschten Design sehe und per Hand den Speichern-Knopf drücke (das habe ich vorher auch schon versucht), wird auch der Formularentwurf nicht verändert.


Dann gibts aber ein anderes Problem, wenn sich Änderungen an Objekten nicht speichern lassen.
Vielleicht ein Decompile testen.

LG Markus
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 287
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon andreas_42 » 21. Apr 2017, 12:35

Hallo Markus, alle Änderungen, die ich ganz normal per Hand im Formularentwurf mache werden auch gespeichert, wenn ich Speichern klicke. Nur die Änderungen, die ich in der Formularansicht mache (indem der VBA-Code beim Öffnen ausgeführt wird) sind beim Wechseln in die Entwurfsansicht wieder weg. Auch wenn ich (noch in der Formularansicht) speichere, ob über die eingebaute Schaltfläche oder indem ich DoCmd.Save ans Ende meines Codes schreibe.

Falls ich mich nicht klar ausdrücke, hier 3 Bilder.

1. Die Entwurfsansicht vorher
2. Das über VBA (Beim Öffnen) geänderte Design in der Formularansicht
3. Wenn ich wieder in die Entwurfsansicht (auch nach dem Speichern) wechsle, sieht es wieder aus wie vorher.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
andreas_42
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 21. Apr 2017, 08:52

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon mmarkus » 21. Apr 2017, 13:39

Du musst die Änderungen per Code auch in der Entwurfsansicht machen.

LG Markus
ms access what else
mmarkus
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 287
Registriert: 16. Apr 2012, 16:07
Wohnort: Vienna

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon andreas_42 » 21. Apr 2017, 14:11

Markus, danke für Deine Geduld bisher aber wie mache ich das?
andreas_42
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 21. Apr 2017, 08:52

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon steffen0815 » 21. Apr 2017, 15:43

Hallo,
du musst das Formular per Code im Designmodus öffnen, ändern und speichern.
Der Weg über das Open Ereignis wird u.U. nicht funktionieren.

Zum Testen das Form manuell öffnen, dann in den Designmodus schalten und speichern.

Prinzipiell sollte das Ganze eher einmalig komplett aus einem "normalen" Modul beim Entwickler erfolgen.
Das neue FE ist dann an die Anwender auszuteilen.
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10446
Registriert: 15. Jan 2006, 12:15

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon KlausMz » 21. Apr 2017, 16:16

Hallo,
und ob sich dann für diese einmalige Aktion der Aufwand lohnt darf auch bezweifelt werden.
Die Formulare manuell zu ändern wäre längst erledigt. Es muss/sollte ja nur an einem Frontend notwendig sein.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 36411
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon derArb » 21. Apr 2017, 16:50

Hallo,
vielleicht arbeitet der TE (Thread-Ersteller) an erweiterten Möglichkeiten, wie z.B. der Erstellung von abspeicherbaren Skins.
Man sollte ihn also in seinen Ideen nicht abzuwürgen versuchen.
Ich füge mal ein Beispiel hinzu, welches auch in Acc2003 funktioniert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13894
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon KlausMz » 21. Apr 2017, 17:30

Hallo,
ich will nix abwürgen, aber seinen Worten nach ist das eine einmalige Aktion.
Jetzt haben wir uns für ein anderes Design entschieden, andere Farben, Spezialeffekte, etc.

Und ob da trotz VBA Code nicht trotzdem noch manuelle Nacharbeit notwendig ist, ist auch noch nicht raus.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 36411
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon derArb » 21. Apr 2017, 17:47

Hallo,
...Ich bin kein großer VBA-Experte, das hier ist schon eine Leistung, auf die ich etwas stolz bin....

Wir kennen das alle aus unseren Anfängen und sollten das beachten.
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
derArb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 13894
Registriert: 19. Apr 2006, 18:39
Wohnort: Berlin

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon steffen0815 » 21. Apr 2017, 19:18

Hallo,
hier mal eine Version, welche alle Formulare entsprechend "umschreibt":
Code: Alles auswählen
Sub all()
Dim vfrm As Variant
For Each vfrm In CurrentProject.AllForms
    DoCmd.OpenForm vfrm.Name, acDesign
    Anpassen Forms(vfrm.Name)
    DoCmd.Close acForm, vfrm.Name, acSaveYes
Next
End Sub

Sub Anpassen(frm As Form)
Dim ctl As Control
frm.Section(acDetail).BackColor = RGB(247, 249, 255)
On Error Resume Next ' nicht schön aber zum Basteln reichts :-)
    frm.Section(acFooter).BackColor = RGB(247, 249, 255)
    frm.Section(acHeader).BackColor = RGB(247, 249, 255)
On Error GoTo 0
For Each ctl In frm.Form.Controls
        Select Case ctl.ControlType
        Case acTextBox, acComboBox, acListBox
            ctl.ForeColor = RGB(20, 63, 105)
            ctl.BorderColor = RGB(20, 63, 105)
            ctl.SpecialEffect = 2
        Case acLabel
            ctl.ForeColor = RGB(20, 63, 105)
            ctl.BackStyle = 0
        Case acRectangle
            ctl.BackColor = RGB(175, 207, 239)
        Case acCommandButton
            ctl.BackColor = RGB(20, 63, 105)
            ctl.BorderColor = RGB(255, 255, 255)
            ctl.ForeColor = RGB(255, 255, 255)
            ctl.UseTheme = True
            ctl.PressedColor = RGB(52, 119, 178)
            ctl.PressedForeColor = RGB(64, 64, 64)
            ctl.HoverColor = RGB(192, 216, 237)
            ctl.HoverForeColor = RGB(64, 64, 64)
        End Select
Next ctl
Set ctl = Nothing
End Sub
Gruß Steffen
steffen0815
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 10446
Registriert: 15. Jan 2006, 12:15

Re: Formularentwurf per VBA ändern (permanent)

Beitragvon andreas_42 » 24. Apr 2017, 07:45

Vielen Dank euch allen, das Öffnen im Design-Modus war das Geheimnis. Jetzt, wo ich es weiß, ist es natürlich offensichtlich. :roll:
Ich glaube nicht, dass das Ändern per Hand weniger Arbeit gewesen wäre, selbst wenn es (voraussichtlich) eine einmalige Sache war. Aber selbst wenn, ich hätte die ganze Zeit gedacht: "das muss doch einfacher und eleganter gehen, als alles per Hand zu ändern!".

Also nochmal, danke und eine schöne Arbeitswoche euch allen.
andreas_42
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5
Registriert: 21. Apr 2017, 08:52


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Marmeladenglas, mmarkus und 3 Gäste