Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Versionskopien von AddIn als .xls, wie?

Forumthread: Versionskopien von AddIn als .xls, wie?

Versionskopien von AddIn als .xls, wie?
15.03.2009 08:57:15
AddIn
VBA-Level: befriedigend
Hallo Freunde,
im letzten Jahr hat mir Oberschlumpf einen Code zum Abspeichern einer Datei mit Datum und Uhrzeit
mitgeteilt. Damit kann man sich von einer wichtigen Datei Versionskopien erstellen. Abgewandelt lautet
der Code wie folgt:

Public Sub SpeichernMitDatum()
Dim strPfad As String
Dim DateiNm As String
strPfad = " " 'anzupassen
DateiNm = "" 'anzupassen
With Application.WorksheetFunction
This Workbook.SaveAs(strPfad & "\" & DateiNm & "$" & _
.Text(Date, "DDMMYY") & "$" & .Text(Time, hhmmss))
End With
End Sub


Nun würde ich von einem wichtigen AddIn auch gern Versionen abspeichern, weiß aber nicht, wie ich
obigen Makro abwandeln muss, um von dem bereits installierten und in Gebrauch befindlichen
AddIn derartige Versionskopien zu erstellen.
Der Excel-Autor Schels gibt an, man solle sich von wichtigen Addins .xls-Sicherheitskopien machen.
Sollten Versionskopien der obigen Art auch als .xls-Dateien oder als .xla-Dateien angelegt werden?
Wegen der Abwärtskompatibilität zu Excel 2003 muss ich weiterhin mit den dreisilbigen Dateipraefixen arbeiten.
Hat jemand eine Idee? Grüße! Werner R.

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Versionskopien von AddIn als .xls, wie?
15.03.2009 10:02:49
AddIn
Hallo,
so müsste es eigentlich funzen
Sub Backup_AddIn()
Dim objAddin As AddIn
Dim sBackupFullName As String
Dim isInstall As Boolean

Const sBackupPath As String = "C:\Backup_Addin\" 'Sicherungspfad 

For Each objAddin In Application.AddIns
 'Filer verwenden 
 If objAddin.FullName Like "*.xla" Then
    'Dateiname vom Addin 
    sBackupFullName = Right$(objAddin.FullName, Len(objAddin.FullName) - InStrRev(objAddin.FullName, "\"))
    'neuer Name vom Addin 
    sBackupFullName = sBackupPath & "copy_" & Format(Now, "dd_mm_yyyy hh_mm_") & sBackupFullName
    
    'ist Addin Installiert? 
    isInstall = objAddin.Installed
    'Addin deinstallieren 
    objAddin.Installed = False
    'Datei kopieren 
     FileCopy objAddin.FullName, sBackupFullName
    'je nach Addin kann es zu einer Meldung kommen. 
    objAddin.Installed = isInstall
 
 End If
Next objAddin

End Sub


Gruß Tino

Anzeige
Zwischenantwort
15.03.2009 10:26:39
Werner
Hallo Tino,
bin beeindruckt, wie du solche doch nicht ganz einfachen Makros dahinzauberst. Tausend Dank! Mit deiner
Hilfe komme ich bei den AddIns ein beachtliches Stück weiter!
Ich schreibe den Code jetzt noch ab und übertrage und analysiere ihn dann. Bei mir geht das viel
langsamer als bei dir, deshalb erst diese Zwischenmitteilung. Melde mich dann wieder, wenn ich es
schaffe, heute, sonst morgen.
Grüße! Werner R.
Anzeige
Makro bleibt hängen
15.03.2009 10:59:59
Werner
Hallo Tino,
fast hätte es geklappt, doch bei der Zeile
FileCopy objAddIn.FullName, sBackupFullName
bleibt der Makro dann hängen, laut Excel wegen der "Befugnis" (Terminus aus fremdsprachiger Version übersetzt).
Vor Aktivierung des Makro waren zwei Addins des Addin-Quellverzeichnisses installiert, zwei weitere im Addin-Quellverzeichnis waren nicht installiert.
Was kann man da tun? Ich vermute, dass Problem liegt daran, dass mindestens zwei der Addins
schon in Gebrauch sind, wenn der Makro startet (es erscheint im Editor der Datei, in der ich den Makro aufrufe).
Grüße Werner R.
Anzeige
AW: Makro bleibt hängen
15.03.2009 11:18:20
Tino
Hallo,
habe den Code einige male laufen lassen, funz bei mir ohne Fehler.
Eigentlich sollte die Zeile objAddin.Installed = False aktive Addins beenden und
nach dem kopieren diese auf den ursprünglichen Zustand zurücksetzen.
Die Befugnis fehlt, wen dass Addin nicht beendet wurde, aus welchem Grund auch immer?
Habe hier kein Addin das sich nicht deinstallieren lässt.
Vielleicht haut ein Eventmakro dazwischen, man könnte mal versuchen noch Eventmakros abzustellen.
Sub Backup_AddIn()
Dim objAddin As AddIn
Dim sBackupFullName As String
Dim isInstall As Boolean
Dim iCalc As Integer

Const sBackupPath As String = "C:\Backup_Addin\" 'Sicherungspfad anpassen 

With Application
 .EnableEvents = False 'Eventmakros aus 
  iCalc = .Calculation 'Einstellung merken 
 .Calculation = xlCalculationManual 'Berechnung auf manuell 
    
    For Each objAddin In Application.AddIns
     'Filer verwenden 
     If objAddin.FullName Like "*.xla" Then
        'Dateiname vom Addin 
        sBackupFullName = Right$(objAddin.FullName, Len(objAddin.FullName) - InStrRev(objAddin.FullName, "\"))
        'neuer Name vom Addin 
        sBackupFullName = sBackupPath & "copy_" & Format(Now, "dd_mm_yyyy hh_mm_") & sBackupFullName
        
        'ist Addin Installiert? 
        isInstall = objAddin.Installed
        'Addin deinstallieren 
        objAddin.Installed = False
        'Datei kopieren 
         FileCopy objAddin.FullName, sBackupFullName
        'je nach Addin kann es zu einer Meldung kommen. 
        objAddin.Installed = isInstall
     
     End If
    Next objAddin
 
 .EnableEvents = True 'Eventmakros an 
 .Calculation = iCalc 'Berechnung auf alten Zustand 
End With
End Sub


Gruß Tino

Anzeige
Klappt jetzt teilweise
15.03.2009 12:04:52
Werner
Hallo Tino,
ich numeriere meine "Funde" mal durch:
1. Obwohl die Meldung mit der Befugnis kommt, hat der Makro dennoch Kopien von .xla-Dateien erstellt, wenn ich ihn an der Stelle, wo er nicht mehr weiterkommt, abbreche.
2. Diese tragen die Endung ".xla". Ist es üblich, Sicherheitskopien von Makros als ".xla" zu speichern?
Buchautor Schels betont, sie sollten das ".xls"-Format haben (weil .xla-Dateien leicht kaputtgehen können). Aber eine ".xla"-Sicherheitskopie ist ja
schon einmal etwas.
3. Zwei nicht aktivierte Addins im gleichen Quellverzeichnis werden von dem Makro nicht beachtet.
Diese Addins habe ich in einige Dateien eingebunden, sie werden nur dann aktiviert, wenn die betreffenden Dateien geöffnet werden. Werden diese erst mitkopiert, wenn sich deren Inhalt
geändert hat oder gar nicht? (Ab und zu brauche ich auch Sicherheitskopien von diesen nichtinstal-
lierten Addins im gleichen Addin-Quellverzeichnis.
Aber ich bin jetzt immerhin schon wieder ein Stück weiter! Herzlichen Dank!! Gruß Werner R.
Anzeige
eingebundene Addins werden übersehen
15.03.2009 12:44:58
Werner
Hallo Tino,
das Problem liegt, glaube ich, daran, dass ich in der Datei, in der ich den Makro aufrufe (
nennen wir diese "Aufrufende.xls") - wie schon
erwähnt - ein weiteres Makro eingebunden habe (über das Bibliotheksmenü des Editors.
Die Programmschleife in deinem Makro arbeitet zunächst die installierten Addins ab und kopiert
diese korrekt. Das nicht installierte, sondern nur in "Aufrufende.xls" eingebundene Addin wird von
dem Makro übersehen, weil es, obwohl auch eine .xla-Datei, Excel gar nicht als Addin bekannt zu sein
scheint. Wie kann man denn ein solches bloß eingebundenes, nicht installiertes Addin mitkopieren?
Makros aus solchen eingebundenen Addins kann ich, wenn ich für das eingebundene Addin über das Projektfenster einen Codenamen vergebe, in den Makros z.B. von 'Aufrufende.xls" verwenden.
Grüße!
Werner R.
Anzeige
AW: eingebundene Addins werden übersehen
15.03.2009 13:06:17
Tino
Hallo,
bei mir erkennt er auch nur eingebundene nicht installierte.
Das .xls Dateien nicht kaputt zu kriegen sind, wage ich zu bezweifeln, hier im Forum wird oft darüber geklagt, dass eine Exceldatei nicht mehr funktioniert und ich habe dies auch schon erlebt.
Normalerweise mach ich es immer so.
Solch ein Addin wird in der Regel erstellt und danach nicht mehr bearbeitet.
Von diesen habe ich eine Kopie in einem Ordner liegen.
Diese ersetze ich nur, wenn ich wirklich eine Änderung am Addin mache muss
(kommt recht selten vor), dies mach ich aber von Hand (dauer weniger als eine Minute).
Gruß Tino
Anzeige
AW: eingebundene Addins werden übersehen
16.03.2009 02:09:28
Werner
Hallo Tino,
nochmals vielen Dank!! Ich vermute, dass es bei meinem Computer mit den Administratorrechten zusam-
menhängt, obwohl es sich um einen Privatcomputer handelt und ich der einzige Benutzer bin. Wenn ich
nach der Deinstallierungsanweisung in deinem Code "MsgBox objAddIn.Installed" einbaue, gibt Excel auch ganz korrekt "False" aus.
An der Installation liegt es aber offensichtlich nicht.
Du sagst, dass du AddIns manuell kopierst. Mache ich zusätzlich auch. Aber hier dreht es sich ja nicht um normale Sicherheitskopien, sondern um Versionskopien, Kopien früherer Versionen
von Addins mit Datum und Zeit im Dateinamen, mit deren Hilfe ich eine frühere Version wiederherstellen kann, für den Fall, dass das AddIn kaputtgeht und die normalen Sicherheitskopien bereits mit der kaputtgegangenen AddIn-Version überschrieben sind.
Vielleicht weißt du, wie ich die Administratorsperre öffnen kann (wenn es eine ist)? Ich müsste eigentl. nur wissen, ob ich dazu in die Kontrollkonsole muss oder ob das auch von Excel aus geht.
Entschuldigung, dass ich deine Zeit ziemlich stark in Anspruch genommen habe! Beste Grüße! Werner R.
Anzeige
AW: eingebundene Addins werden übersehen
16.03.2009 07:55:03
Tino
Hallo,
wenn Du unter Vista arbeitest, kannst Du es mal so versuchen.
Die Eingabeaufforderung (cmd) mit Administratorrechten öffnen.
Der Befehl um das Administrator Konto zu aktivieren lautet:

net user Administrator /active

Um das Konto wieder zu sperren, gibt man folgenden Befehl ein:
net user Administrator /active:no
Gruß Tino
Anzeige
eine Lösung gefunden
16.03.2009 02:37:49
Werner
Hallo Tino,
jetzt hat es geklappt, dein Makro funktioniert wunderbar. Ich habe zuvor den Haken im AddIn-Manager vor allen Addins manuell entfernt und den Makro selbst dann in eine neue Datei verlegt, in die keinerlei
Addins eingebunden sind. So geht es! Prima, den Versionskopien steht nichts mehr im Weg!
Besten Dank! Werner R.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige