Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
904to908
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
904to908
904to908
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Update

Update
09.09.2007 10:34:50
Fred
Hallo,
ich würde mich sehr freuen, wenn ich auf diesem Wege Unterstützung bei der Lösung einer Idee bekäme. Es gibt von mir eine umfangreiche Anwendung zu Controllingfragestellungen, die ich nach wie vor weiter ausbaue bzw. ändere und ergänze. Die Änderungen erfolgen meist in Modulen bzw. Prozeduren oder in Formularen. Die Anwendung installiere ich immer komplett auf dem letzten Stand.
Jetzt habe ich die Idee, so was wie einen Update-Service aufzunehmen. Ich stelle mir vor, hierzu einfach die Module und Formulare "einzupacken", zu übertragen, aus der bisherigen Installation die Module und Formulare zu entfernen/löschen und die "neuen Module und Formulare" einzuspielen.
Ist das Quatsch oder kann mir da jemand bitte helfen? Danke im Voraus !!!!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Update
09.09.2007 10:45:46
Oberschlumpf
Hi Fred
Ich weiß nicht, ob es in XL 2007 noch genau so ist (ich gehe aber davon aus), aber in allen früheren Versionen kannst du den VBA-Code an sich nur verändern, wenn zuvor über
Extras/Makro/Sicherheit dem VBA-Projekt "vertraut" wird.
Diese Einstellung lässt sich NICHT über VBA ändern. Somit müsstest du (oder der, der davor sitzt) dich vor jeden PC setzen und diese Einstellung vornehmen.
Dein Update-Vorhaben lässt sich meines Wissens nur so realisieren, dass du...
...immer deine komplette, überarbeitete Datei gegen die veraltete auf den jeweiligen PC austauscht
...vorm Löschen der alten Datei die wohl schon eingetragenen Daten per VBA-Code in deine neue Datei überträgst
Eine andere Idee hab ich (noch) nicht. Aber ich bin ja auch nicht der einzige Antworter hier ;-)
Hilft das denn schon mal?
(benutzen eigtl alle Betroffenen XL 2007? Wenn nicht, musst du auch noch parallel eine Datei erstellen, die unterhalb von XL 2007 läuffähig ist)
Ciao
Thorsten

Anzeige
AW: Update
09.09.2007 11:07:51
Fred
hallo thorsten,
danke für deine antwort.
Dein Ansatz immer die komplette Datei auszutauschen ist ok, beinhaltet jedoch das problem, dass die Datei mit daten gefüllt ist. Da das Programm als Mappe ca. 170 Blätter enthält, kann ich da halt nix gegen eine quasi leere Datei austauschen. Die Daten in den Arbeitsblättern müssen erhalten bleiben. Ich meine ich darf daher nur die Module und Formulare austauschen.
gruß
fred

AW: Update
09.09.2007 10:50:00
Hajo_Zi
Hallo Fred,
ich habe es darüber realisiet, das ich Pogramm und Daten getrennt habe. Das Programm ist als Mustervorlage an einer zentralen Stele abgelgt und alle Rechner sind im Vorlagen Ordner auf diese zentrale Stele verlinkt. Bei Änderungen muss nur die Mustervolage geändert werden.

Anzeige
AW: Update
09.09.2007 11:23:41
Fred
hallo hajo,
danke für deine antwort.
daten und programme zu trennen ist eine gute idee.
habe mittlerweile im archiv gestöbert und dabei folgendes gefunden:
Excel-Version: Excel 2000
* Module mit VB bearbeiten von Bettina Schürmann vom 22.11.2001 - 12:22:06
o Re: Module mit VB bearbeiten - Zusatzfrage von Bettina Schürmann vom 22.11.2001 - 15:40:34 (0)
o Re: Module mit VB bearbeiten von Christoph Dümmen vom 22.11.2001 - 12:53:59 (0)
o Module gesamt austauschen von Christoph Dümmen vom 22.11.2001 - 12:53:29 (0)
o Re: Module mit VB bearbeiten von Nike vom 22.11.2001 - 12:49:22 (0)
Module mit VB bearbeiten
'und jetzt noch ein Brocken um ein Code Modul eines Tabellenblattes auszutauschen...
'wbZiel ist die Mappe, deren Modul ausgetauscht werden muss
'du musst dann nur noch ein Verzeichnis (c:\Temp\Auslagercode\) anlegen
'und dort dein neues Modul Tabelle1.cls ablegen
Sub DeleteAndImport_CodeModule(wbZiel As Workbook)
'Tabellenblattcode löschen und durch neuen ersetzen
'Hierbei handelt es sich um Code eines Tabellenblattes
'Nicht verwechseln mit einem Separaten Code Modul
'Based on Herber 020098v.xls
'Delete the code of a Worksheet, not to be mistaken with
'a seperate code module...
Dim VB As Object
Dim X As Object
Dim FileArray()
Dim FCount%, ProcessCounter%
Dim FName$
Set VB = wbZiel.VBProject
For Each X In VB.VBComponents
'The code inside the codemodule of Table1 is deleted
If X.Type = 100 And X.Name = "Tabelle1" Then
With VB.VBComponents(X.Name).CodeModule
.DeleteLines 1, .CountOfLines
End With
End If
Next X
ChDrive "c"
'Directory possibly has to be changed
ChDir "c:\Temp\Auslagercode\"
FName = Dir("*.cls")
Do While FName ""
FCount = FCount + 1
ReDim Preserve FileArray(1 To FCount)
FileArray(FCount) = FName
FName = Dir()
Loop
For ProcessCounter = 1 To FCount
VB.VBComponents("Tabelle1").CodeModule.AddFromFile FileArray(ProcessCounter)
Next
Set VB = Nothing
Set X = Nothing
End Sub


Module gesamt austauschen
Hallo Bettina,
ja, das habe ich schon gemacht und das hat mir richtig Kopfzerbrechen bereitet.
Wenn es Dir möglich ist, würde ich immer das ganze Modul austauschen, weil Du sonst immer noch prüfen mußt, was in Deiner Codezeile aktuell drinsteht und ob die Änderung ggf. schon einmal durchgeführt wurde. Diese Problem habe ich, da ich von 20 internationalen Einheiten monatlich Mappen zugesendet bekomme und da sind regelmäßig veraltete Versionen genommen worden.
Beispielhaft mal der Code eines ganzen Makros, wo ich das gesamte Modul austausche.


Public Sub ServiceRelease29()
'Christoph Dümmen, 16/10/2001
'Korrigiert Management Report und Tauscht Makro aus
On Error GoTo Fehler
Dim sh As Worksheet
Set sh = wbk.Worksheets("Management_Report")
AddSheet                                                 'Fügt ggf. das Blatt zum  _
tracken der ServiceReleases hinzu
If Gelaufen(29) = "OK" Then                              'Prüfung, ob Makro gelaufen
ps.Cells(intCounter + 5, 32) = "OK": Exit Sub        'Status in Protokoll eintragen
End If
bolDirty = True                                          'Änderungen werden vorgenommen. _
Mappe muß später also gespeichert werden
sh.Unprotect                                             'Blattschutz aufheben
'**************************Eigentliches Makro******************************************* _
sh.Range("Q26") = "=Sum(R26:AC26)"                       'Formel korrigieren
Dim CodeModul As CodeModule
Const Importdatei = "r:\planung\mr\mr2001\mr-file\OriginalUpdate_MRscFile.bas"
Set VBKomp = wbk.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBKomp.Name = "tmpOriginalUpdate"
Set CodeModul = wbk.VBProject.VBComponents("tmpOriginalUpdate").CodeModule
wbk.VBProject.VBComponents.Remove wbk.VBProject.VBComponents("OriginalUpdate")
wbk.VBProject.VBComponents.Remove wbk.VBProject.VBComponents("NewOriginalUpdate")
With CodeModul
.AddFromFile Importdatei
End With
'**************************Eigentliches Makro Ende************************************** _
sh.Protect                                               'Blattschutz aktivieren
Worksheets("ServiceRelease").Range("AC2") = "29"         'Makro als erfolgreich  _
gelaufen eintragen
Worksheets("ServiceRelease").Range("AC3") = "OK"
ps.Cells(intCounter + 5, 32) = "now"                     'Status in Protokoll eintragen
Exit Sub
Fehler:
Select Case Err.Number
Case 9
ps.Cells(intCounter + 5, 32) = "failed"
bolDirty = False
Exit Sub
Case -2147352565                                     'Modul nicht vorhanden: Weiter
Resume Next
Case Else
MsgBox "Error while processing ServiceRelease29! Error: " & Err.Number & "," &  _
Err.Description, vbCritical, "ERROR"
Resume Next
End Select
'Status in Protokoll eintragen
ps.Cells(intCounter + 5, 2) = "Error"
End Sub


Hoffentlich hilfts Dir.
Christoph
wie findest du das?
gruß
fred

Anzeige
AW: Update
09.09.2007 11:25:00
Hajo_Zi
Hallo Fred,
bei diesem Code muss aber auf jedem Rechner der Zugriff auf das VBA Projekt erlaubt werden, das bei meiner Variante nicht notwendig wäre.
Gruß Hajo

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige