Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

VBA Projekt updaten ohne Datenverlust in Tabellen

Betrifft: VBA Projekt updaten ohne Datenverlust in Tabellen von: Bernd Kiehl
Geschrieben am: 27.06.2013 13:33:31

Hallo zusammen,

nachdem mein Projekt in den Grundzügen fertig ist und es an Kollegen weitergegeben wird. Stellt sich für mich die Frage, wie kann ich meinen Kollegen ein Update (neue UF's oder Module eventuelle neue Tabelle) zu kommen lassen, ohne die alten Tabellen, die mittlerweile mit Daten gefüllt sind, zu belasten.

Für eure Hilfe schon mal Danke im Voraus!!!

Gruß
Bernd

  

Betrifft: Export / Import von: Klaus M.vdT.
Geschrieben am: 27.06.2013 13:36:22

Hallo Bernd,

du kannst Module und Userform per rechtsclick exportieren. Dein Kollege kann sie dann in seine bestehende Datei importieren.

Bevor ich jetzt 10 screenshots mache, probier das einfach mal aus ;-) Die Formate sind *.bas für Module und bei userforms glaube ich *.frm

Grüße,
Klaus M.vdT.


  

Betrifft: AW: Export / Import von: Bernd Kiehl
Geschrieben am: 27.06.2013 14:19:56

Hallo Klaus,

Danke für deine schnelle Antwort.

Ich hätte mich etwas konkreter ausdrücken sollen.

In meiner Frage fehlte der Ansatz der Automatisierung z.B. über eine Makro oder ähnlich, damit der User nicht manuelle Eingriffe über VB-Editor machen muss, d.h. das Projekt ist mit Password versehen. Also alles in Allem, eine Art setup-Routine, die Tabellen, UF'S und Module ohne das es zu Datenverlust im Ursprungsprojekt führt, kopiert bzw. importiert.

Konnte ich mich klarer ausdrücken?

Gruß
Bernd


  

Betrifft: AW: Export / Import von: Bernd Kiehl
Geschrieben am: 27.06.2013 14:20:01

Hallo Klaus,

Danke für deine schnelle Antwort.

Ich hätte mich etwas konkreter ausdrücken sollen.

In meiner Frage fehlte der Ansatz der Automatisierung z.B. über eine Makro oder ähnlich, damit der User nicht manuelle Eingriffe über VB-Editor machen muss, d.h. das Projekt ist mit Password versehen. Also alles in Allem, eine Art setup-Routine, die Tabellen, UF'S und Module ohne das es zu Datenverlust im Ursprungsprojekt führt, kopiert bzw. importiert.

Konnte ich mich klarer ausdrücken?

Gruß
Bernd


  

Betrifft: wieder offen - jemand anders bitte! von: Klaus M.vdT.
Geschrieben am: 27.06.2013 14:22:18

Hallo Bernd,

das automatische nachladen von Codezeilen und / oder *.bas - Dateien geht sicherlich, aber dafür bin ich nicht der Experte! Entschuldige dass ich deinen Thread gekapert habe - aber wie du selbst schriebst, es fehlter der Hinweis auf die Automatisierung :-)

Ich stelle natürlich wieder auf offen.

Grüße,
Klaus M.vdT.


  

Betrifft: AW: wieder offen - jemand anders bitte! von: Bernd Kiehl
Geschrieben am: 27.06.2013 14:29:13

Hallo Klaus,

trotzdem ein großes DANKE :-)


  

Betrifft: Aktualisierung VBA-Module - automatisch von: fcs
Geschrieben am: 27.06.2013 19:16:22

Hallo Bernd,

die Automatisierung des Updates von VBA-Projekten ist nicht ganz ohne.

Hindernisse:
1. Zugriff auf VBA-Projekt erlauben.
Diese Option unter den Sicherheitseinstellungen muss vom Excel-Anwender gemacht werden und kann nicht per Makro geändert werden. Standardmäßig ist diese Option deaktiviert.


2. Passwortschutz VBA-Projekt
Dieses Kennwort kann nicht direkt per VBA zum Aufheben des Schutzes übergeben werden.
Etwas mühsehlig und mit Glück kann man es mit den den etwas unsicheren "SendKeys"-Befehlen realisieren.

Hat man die ersten beiden Klippen überwunden, dann könnte man per VBA-Makro die vorhandenen Module löschen und die neuen importieren bzw. bei Tabellen-/Arbeitsmappen-Modulen die alten Codezeilen löschen und die neuen einfügen. Insgesamt ist dies aber mit VBA-Kenntnissen = "bescheiden" ein fast unmögliches Unterfangen bzw. du müsstest dir professinelle Hilfe einkaufen.

Ich würde hier einen anderen Weg gehen und beim Anwender die Daten per Makro aus der alten Version in eine leere Musterdatei mit dem aktualisierten VBA-Projekt einlesen. Das entsprechende Importmakro sollte dann im VBA-Projekt integriert sein.
So ein Makro kann relativ einfach sein, ist aber natürlich abhängig von der Struktur und dem Umfang der Daten in der Datei. Im einfachsten Fall muss man nur die Daten eines Tabellenblattes kopieren.
Einzige Voraussetzung: die neue Musterdatei und die Datei beim Anwender müssen einen unterschiedlichen Dateinamen haben.

Gruß
Franz


  

Betrifft: AW: Aktualisierung VBA-Module - automatisch von: Bernd Kiehl
Geschrieben am: 27.06.2013 19:59:17

Hallo Franz,

Sorry, dass ich jetzt antworte.

Danke für deine Hilfe.

Wie sollte denn ein Importmakro (Code) gestaltet sein?

Gruß
Bernd


  

Betrifft: Daten in Musterdatei übernehmen/kopieren von: fcs
Geschrieben am: 28.06.2013 09:44:12

Hallo Bernd,

so ein Import-Makro muss folgende Funktionalitäten/Schritte beinhalten:

1. Auswahldialog zum Auswählen der Datei mit den Daten/alten VBA-Projekt

2. Kopieren der Daten aus dem/den Blättern in der Datendatei in die neue Musterdatei

3. ggf. anpassen von Formeln in den Tabellenblättern (muss nicht zwingend erforderlich sein)

4. Datei mit den Daten wieder schliessen

5. Musterdatei unter dem alten/einem neuen Namen speichern.

In der Textdatei findest du das entsprechende Grundgerüst für ein Makro.
https://www.herber.de/bbs/user/86105.txt

Gruß
Franz


  

Betrifft: AW: Daten in Musterdatei übernehmen/kopieren von: Bernd Kiehl
Geschrieben am: 28.06.2013 17:18:31

Hallo Franz,

Danke sehr für deine Mithilfe. Die Textdatei kommt mir zur Hilfe, Danke!!!

Gruß
Bernd


  

Betrifft: AW: VBA Projekt updaten ohne Datenverlust in Tabellen von: Rudi Maintaire
Geschrieben am: 27.06.2013 14:32:29

Hallo,
wenn du dein Projekt in einen Daten- und Programmteil splittest, hast du kein Problem.
UFs + Module in ein Addin, das auf die Datenmappe zugreift. Dann musst du nur das Addin austauschen. Evtl. auf einen Server legen, so dass alle auf das gleiche Addin zugreifen und du nur auf dem Server austauschen musst.

Gruß
Rudi


  

Betrifft: AW: VBA Projekt updaten ohne Datenverlust in Tabellen von: Bernd Kiehl
Geschrieben am: 27.06.2013 14:48:00

Hallo Rudi,

toll das du mir helfen möchtest!

Addin erstellen, eines meiner 23 Probleme, ha, ha.

Grundzüge habe ich verstanden, aber wie erstellen die beiden Teile bzw. das Addin?

Kannst du mir dabei helfen?

Gruß
Bernd


  

Betrifft: AW: VBA Projekt updaten ohne Datenverlust in Tabellen von: Luschi
Geschrieben am: 27.06.2013 15:36:48

Hallo Bernd,

da fäßt Du ein ziehmlich heißes Eisen an. Eine gute/aber nicht komplette Anleitung mit funktionierenden Vba-Code findest Du hier:
http://www.rondebruin.nl/win/s9/win002.htm
Dieser Vba-Code gehört in ein Extra-Modul, welches beim Export/Import nicht übertragen wird, sonst sägt man sich den Ast ab, auf dem man gerade selber sitzt. Auch die Auswahl, aus welcher Datei will man sich den neuen Vba-Code holen fehlt. Insgesamt eine gute Grundlage, aber mehr auch nicht.
Was aber auch hier fehlt, ist die Wiedereinbindung der Klassenmodule vom Typ 'vbext_ct_Document'.
Das sind die Objekte, die im Vba-Editor unter 'Microsoft Excel Objekte' gruppiert sind.
Aber so habe ich auch einmal angefangen.

Gruß von Luschi
aus klein-Paris



  

Betrifft: AW: VBA Projekt updaten ohne Datenverlust in Tabellen von: Bernd Kiehl
Geschrieben am: 27.06.2013 15:51:55

Hallo Luschi,

Danke für deine Hilfe, aber Code Schnipsel, die ich irgendwie zusammen bastele, dafür reicht mein Verständnis für VBA nicht aus. Es geht mir um eine Art Anleitung (auf deutsch) wie ich ein Addin in einen Programmteil und Datenteil erstellen kann. Hier fehlt mir alles an Wissen.

Gruß
Bernd


  

Betrifft: AW: VBA Projekt updaten ohne Datenverlust in Tabellen von: Luschi
Geschrieben am: 27.06.2013 16:16:06

Hallo Bernd,

an die Verwirklichung der Trennung von Datenhaltung und Vba-Programm-Tool (AddIn) hatte ich auch mal geglaubt. Aber hier spielt Excel einfach nicht so richtig mit. Denn die Programmierung der Tabellen- und Arbeitsmappen-Ereignisroutinen bleibt sowieso in den Arbeitstabellen der Daten-Excel-Datei hängen.
Als nicht besonders geübter Vba-Programmierer ist das eben eine Hürde, die dann ein paar dm zu hoch liegt.
Aber ich will Dir gerne helfen. Schicke mir eine Excel-Datei, in der die wesentlichen Momente (Dammy-Daten dargestellt sind:
- ein paar Daten mit Berechnungen
- falls vorhanden ein Formular
- Dein Vba-Code
- und das, was sonst noch Deine Arbeitsmappe auszeichnet.

Ich ändere dann ein bischen was ab, hänge ein neues Formular dazu und bastle den in meinem Link aufgezeigten Vba-Code rein und schicke Dir das Ganze wieder zurück. Über ein Button auf einem Extra-Tabellenblatt wird dann der neue Vba-Code in Deine Ursprungstabelle übertragen.
Du wirst staunen, mit wie wenig Vba-Code das zu realisieren ist.

Gruß von Luschi
aus klein-Paris


  

Betrifft: Ereignisroutinen von: Rudi Maintaire
Geschrieben am: 27.06.2013 16:49:31

Hallo Luschi,
Denn die Programmierung der Tabellen- und Arbeitsmappen-Ereignisroutinen bleibt sowieso in den Arbeitstabellen der Daten-Excel-Datei hängen.

mit einer eigenen Klasse der Application kann man die auch verarbeiten.

Gruß
Rudi


  

Betrifft: Sehr richtig, Rudi, und die ist auch gar ... von: Luc:-?
Geschrieben am: 28.06.2013 00:15:50

…nicht schwer herzustellen!
Gruß Luc :-?


  

Betrifft: AW: Sehr richtig, Rudi, und die ist auch gar ... von: Luschi
Geschrieben am: 28.06.2013 11:36:09

Hallo Luc,

das ist sicher alles machbar und in der Grundstruktur nicht allzuz kompliziert zu erstellen, aber für Vba einfach viel zu kompliziert, wenn es richtig in die Tiefe geht. Bei DOT.Net ist das ganz was anderes. Hier gibt es ab Office 2003 'Primary Interop Assembly' - PIA (auch für XP nachrüstbar), auf die dann VB.Net bzw. C# zugreifen können, um die gesamte Steuerung zu übernehmen. Da braucht man dann kein Vba mehr. Doch leider wollen viele Firmen von dieser wunderbaren Möglichkeit keinen Gebrauch machen, warum auch immer. Deshalb bleibe ich bei Vba beim Code-Austausch-Verfahren.
Der Lösungsweg von Franz, die Daten in eine neue Vba-Datei zu übernehmen, ist mit noch mehr Haken und Ösen gepflastert. Auch auf diesem Gebiet habe ich nicht nur gute Erfahrungen gemacht:
- externe Verknüpfungen
- Falschfarbendarstellungen
- definierte Namensbereiche
- neuerdings bei den ListObjects, die von User verwaltet werden
- Aufbähen der Datei
- und Alles, was sich der User sonst noch so eingerichtet hat.

Das Problem mit dem Vba-Kennwortschutz habe ich bis Windows7 32-bit im Griff, mal sehen was Windows8/8.1 so mitbringt. Aber wegen der Umstellung auf VB.Net kann ich mir den Mund fusselig reden.
Keiner höhrt auch mich.

Gruß von Luschi
aus klein-Paris


  

Betrifft: Ja, da hast du sicher recht, ... von: Luc:-?
Geschrieben am: 28.06.2013 13:50:02

…Luschi,
mir wird das auch vom IT-Nachwuchs in der Familie empfohlen…
Aber es ist auch nicht so leicht, das sichere Ufer zu verlassen und wieder 'n Haufen neu zu lernen. Fürchte, da wird Bestimmtes nie fertig…! ;-)
Und die Firmen scheuen sicher den Umstellungs- und ggf Schulungsaufwand bzw es ist ihnen schnurz, wie die MA ihre Arbeit schaffen — Hptsache, sie schaffen sie.
Gruß Luc :-?


  

Betrifft: AW: VBA Projekt updaten ohne Datenverlust in Tabellen von: Bernd Kiehl
Geschrieben am: 27.06.2013 17:35:18

Hallo Luschi,

Datei zusenden gerne per Email.

Sende mir eine kurze Email. Du bekommst dann meine Datei an die Antwortmail gehängt, einverstanden! Hier ist meine berndkiehl@gmail.com


Gruß
Bernd


 

Beiträge aus den Excel-Beispielen zum Thema "VBA Projekt updaten ohne Datenverlust in Tabellen"