Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro mit Template

Makro mit Template
08.06.2022 10:54:05
Hans-Jürgen
Hallo Wissende,
ich habe ein Makro programmiert, welches Daten aus einer Datenbank zieht, in übersichtlicher Form anzeigt.
Das "Drumherum" der Anzeige ist als Sheet im Makro enthalten und wird dann befüllt. Seitdem eine Nutzerin mal parallel eine andere Arbeitsmappe geöffnet hat und das Makro dort reingeschrieben hat, habe ich ganz am Anfang eine Zuweisung:
Set gwkbWorkbook = ActiveWorkbook
Set gwksWorksheet = gwkbWorkbook.Sheets(1)
Damit bin ich aber momentan auch nicht ganz zufrieden, aus zwei Gründen:
- Manchmal öffnet sich das Makro beim Anwender im geschützten Modus, das führt zu einem Fehler in der zweiten Zeile
- Wenn ich im Debugging bin, führt die Ansprache des Worksheets zu einem Fehler, weil das wohl nicht mehr definiert ist
Ich würde nun gern, auch der Übersichtlichkeit halber, das genannte "Drumrum" als Template auf dem Laufwerk speichern (also in einer separaten Datei) und zu Beginn des Makros laden und einbinden.
Ich habe aber mit Vorlagen aber wenig Erfahrung und erhoffe mir einen Hinweis, wie ich diese separate Template-Datei einbinden und anzeigen kann.
Vielen Dank im voraus!
Viele Grüße
Hans-Jürgen

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Template
08.06.2022 11:42:12
ChrisL
Hi
Ich fange einfach mal mit ein paar Inputs an. Bitte die Frage bei Bedarf wieder als offen markieren.
Die Zuweisung/Referenzierung hast du schon richtig als Problem erkannt. Zur Präzisierung würde ich vorschlagen, dass du ThisWorkbook verwendest also diejenige Mappe mit dem Makro im Gegensatz zur zufälligerweise aktiven Mappe.

Set gwkbWorkbook = ThisWorkbook
Set gwksWorksheet = gwkbWorkbook.Sheets(1)
Manchmal öffnet sich das Makro beim Anwender im geschützten Modus, das führt zu einem Fehler in der zweiten Zeile
Kann ich nicht nachvollziehen (stimmt die Fehlerzeile?). Und welcher Modus ist denn genau gemeint, abgesicherter Modus, Datei-Schreibschutz, Mappenschutz, Blattschutz...
Wenn ich im Debugging bin, führt die Ansprache des Worksheets zu einem Fehler, weil das wohl nicht mehr definiert ist
Wenn du auf "beenden" statt "debuggen" drückst, werden die Variablen geleert. Dies ist normal. Aber Debuggen sollte eigentlich nur in der Entwicklung vorkommen und nachher sind die Fehler eliminiert oder per Error-Handling abgefangen.
Ich nehme an mit Drumrum ist ein formatiertes Tabellenblatt gemeint. Ob du da soviel Übersichtlichkeit gewinnst, wenn du die Vorlage in eine externe Datei kopierst würde ich bezweifeln. Zumal du damit eine neue Komplexität und Fehleranfälligkeit schaffst. Und wenn du das doch willst, dann einfach mal mit dem Makrorekorder, Datei öffnen, Blatt kopieren, wieder schliessen.
Vielleicht meinst du mit Drumrum aber auch Makros. In dem Fall würde ich eher auf eine Add-In Datei tendieren.
cu
Chris
Anzeige
AW: Makro mit Template
08.06.2022 13:23:17
Hans-Jürgen
Hallo Chris,
vielen Dank für die Antwort. "ThisWorkbook" habe ich übernommen und meine Pläne zur Auslagerung in eine Vorlage begraben (es ging nur um das Template).
Geschützter Modus heißt es scheinbar, wenn der Anwender die Datei das erste Mal öffnet und auf "Bearbeitung aktivieren" klicken muss. Immer dann, wenn der Anwender aus dieser Prüfung kommt, gibt es diesen "spooky" Fehler. Bei den nächsten Öffnungen ist das nicht, es wird also was mit dem Geschützten Modus zu tun haben.
Das von vorhin konnte ich jetzt selbst nicht mehr nachstellen, aber aktuell bekomme ich bei den Zeilen

 Application.GoTo gwksWorksheet.Range("A1"), True
gwksWorksheet.Range("Y29:AD30").Select
den Fehler "Die Methode Goto für das Objekt "Application" ist fehlgeschlagen" bei der ersten Zeile und, wenn ich die auskommentiere, bei der zweiten "Die Select-Methode des Range-Objekts konnte nicht ausgeführt werden". Diese beiden Zeilen stehen ganz am Ende des Makros, damit alles den Bildschirm optisch ausfüllt und der Cursor an einer bestimmten Stelle steht. Komischerweise sind bis dahin schon mehrere Dutzend Zeilen gwksWorksheet.cells(x,y) = "irgendwas" problemlos ausgeführt worden.
Das könnte man sicherlich noch anders programmieren, klar, aber es zeigt mir, dass ich noch eine potenzielle Fehlerquelle drin habe für den Fall, dass man aus dem geschützten Modus kommt. Ich gehe bald in Rente, und ich muss das Programm "sauber" und ohne möglichen Pflegeaufwand hinterlassen.
Vielen Dank
Hans-Jürgen
Anzeige
AW: Makro mit Template
08.06.2022 13:47:26
ChrisL
Hi Hans-Jürg
"geschützte Ansicht"
https://support.microsoft.com/de-de/topic/was-ist-die-gesch%C3%BCtzte-ansicht-d6f09ac7-e6b9-4495-8e43-2bbcdbcb6653
Da gibt es scheinbar diverse Varianten, wobei ich eigentlich annehmen würde, dass die Makros dann ganz generell deaktiviert sind. Jedenfalls kann ich den Fehler noch nicht einordnen.
Statt GoTo könntest du mal Activate versuchen. Einfach nur um sicherzustellen, dass auch wirklich die richtige Mappe und Tabelle aktiv sind.

Sub t()
Dim gwkbWorkbook As Workbook
Dim gwksWorksheet As Worksheet
Set gwkbWorkbook = ThisWorkbook
Set gwksWorksheet = gwkbWorkbook.Sheets(1)
gwkbWorkbook.Activate
gwksWorksheet.Activate
gwksWorksheet.Range("Y29:AD30").Select
End Sub
Wenn der Fehler tatsächlich immer nur beim ersten Öffnen einmalig auftritt, hätte ich hier mal eine Variante zum Fehlerhandling. Zwar nicht sauber sondern recht schmutzig, aber das musst du ja niemandem verraten und als einmalige Angelegenheit m.E. vertretbar.

Sub tt()
Dim gwkbWorkbook As Workbook
Dim gwksWorksheet As Worksheet
On Error GoTo errorhandler
Set gwkbWorkbook = ThisWorkbook
Set gwksWorksheet = gwkbWorkbook.Sheets(1)
gwkbWorkbook.Activate
gwksWorksheet.Activate
gwksWorksheet.Range("Y29:AD30").Select
Exit Sub
errorhandler:
MsgBox "Beim ersten Start dieser Datei kann es zu einem unvorhergesehenen Fehler kommen. " & _
"Bitte schliessen sie die Datei und starten sie erneut."
End Sub
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige