PDA

Vollständige Version anzeigen : automatisch. Anlegen eines Ordners u. Datei


Quartzlurch
09.07.2014, 01:01
Hallo und guten Morgen an alle User,

kann mir jemand einen Tip geben? Möchte, dass beim Öffnen meiner Excel-Tabelle geprüft wird, ob die Datei >C:\Windows\meinOrdner\meineDatei.xls< existiert. Wenn diese nicht existiert, soll mittels VBA-Makro automatisch im Verzeichnis C:\Windows ein Ordner angelegt werden >meinOrdner< und eine Datei mit Namen >meineDatei.xls< erzeugt und in den Ordner C:\windows\meinOrdner\ hinein kopiert werden. Das Makro soll, nachdem die Datei >meineDatei.xls< unter C:\Windows\meinOrdner\meineDatei.xls angelegt wurde, gelöscht werden, und es soll ein 2. Makro erzeugt werden, welches bei jedem Öffnen der Tabelle prüft ob die >meineDatei.xls< in dem Ordner C:\Windows\meinOrdner\meineDatei.xls existiert. Wenn diese nicht existiert soll sich das Tabellenblatt nicht -unter Verwendung der Makros- öffnen. Folgenden Code habe ich bereits zur Überprüfung, ob die Datei existiert, fehlt mir nur noch das automatische Anlegen des Ordners und der Datei sowie das Löschen der Anlegeprozedur, für das 1. Öffnen der Tabelle mit Makroverwendung:

Private Sub Workbook_Open()
If Dir("C:\Windows\meinOrdner\meineDatei.xls") = "" Then
MsgBox "Sie sind nicht berechtigt diese Tabelle zu bearbeiten!!!", vbOKOnly + vbCritical, Application.UserName
ActiveWorkbook.Close False
End If

End Sub


Hoffe ihr könnt helfen :confused: :confused:

Gruß Horst

chris-kaiser
09.07.2014, 07:09
Hallo Horst,

ergibt keinen Sinn für mich:
überprüfe ob es die Datei gibt, wenn nicht lege diese an und lösche diese dann wieder?

Warum dann ein zweites Makro anlegen(wobei mir schon unklar ist was du mit anlegen meinst), was ohnehin schon im ersten Makro passieren sollte?

Makro1: Möchte, dass beim Öffnen meiner Excel-Tabelle geprüft wird, ob die Datei >C:\Windows\meinOrdner\meineDatei.xls< existiert


Makro2: welches bei jedem Öffnen der Tabelle prüft ob die >meineDatei.xls< in dem Ordner C:\Windows\meinOrdner\meineDatei.xls existiert.

Was willst du damit erreichen?

Quartzlurch
09.07.2014, 07:55
Guten Morgen Chris,

vielleicht habe ich mich etwas unklar, ausgedrückt. Hintergrund ist, dass mein Tabellenblatt nicht ohne weiteres an Dritte weitergegeben werden soll. Also,wenn z. Bsp. jemand die Tabelle ohne Berechtigung öffnen will, dann fehlt ihm diese Prüf-Datei auf seinem Rechner und er kann nur wenig mit der Tabelle anfangen. Im anderen Fall, wenn jemand Berechtigung hat mit der Tabelle zu arbeiten, dann braucht er also diese Prüf-Datei, und für diesen Fall soll das Makro den Ordner und die Datei anlegen respektive erzeugen. Damit die Tabelle jetzt nicht einfach vervielfältigt wird, soll das 1. Makro gelöscht werden, denn der Pfad ist ja jetzt auf dem PC vorhanden, ist das jetzt für dich klarer?

Gruß Horst :rolleyes:

EarlFred
09.07.2014, 08:57
Hallo Horst,

er kann nur wenig mit der Tabelle anfangen
wenn Dein Schutzkonzept (allein) darauf beruht, dass Makros aktiviert sein müssen, sei der Hinweis gestattet, dass dieses durch Deaktivieren von Makros genauso schnell "umgangen" wird. Viele werden das nicht einmal merken, wenn auf diesen Rechnern Makros grundsätzlich deaktiviert sind.

Lies Dich durch das Internet. Es gibt sicher auch gute Lösungen, die eine ungewollte Nutzung der Mappe verhindern können. Aber mit einem einfachen Hausmannskost-Code, wie er Dir vorschwebt, erreichst Du das nicht.

Grüße
EarlFred

chris-kaiser
09.07.2014, 09:37
Hallo Horst,

so wie es schon Earlfred sagt...
ein wirklicher Schutz über Standard-Boardmittel ist nicht möglich. (Außer Lese/Schreibschutz mit einem vernünftigen PW)

Aber ich habe Dir mal was gebastelt was za. 95% der normalen User davon abhalten würde die Datei zu verwenden.

1. Datei speichern. (egal wo hin)
2. beim Öffnen erscheint eine Abfrage nach einem Aktivierungs-PW:
3. gebe mal irgendwas ein..., oder in dem Fall ist das PW
horst
4. wenn du nun die Mappe schließt (mit oder ohne speichern) neu öffnest, müsste alles ganz normal funktionieren, keine PW Abfrage mehr.
5. kopiere die Datei in einen anderen Ordner, oder gehe auf speichern unter und wähle einen anderen Ordner aus.
6. Öffne nun die Mappe :), es kommt ein neuer Dialog der nach einem ADMIN Passwort nachfragt.

7. werde ich erst später schreiben, wie du das wieder aufheben kannst, aber versuche es einmal selber das zu knacken. (bzw. teste es einmal ob es überhaupt funktioniert)

Nur wirklich sicher ist da auch nichts^^, was ich noch zulasse ist das im gleichen Ordner ein speichern unter zulasse. (der Name der Datei kann geändert werden)

Wolf01
09.07.2014, 09:38
Hallo Horst,
wenn ich Dich richtig verstanden habe, geht es Dir um den Schutz der Tabelle. Am einfachsten geht dies mit Bordmitteln: Arbeitsmappe schützen. Der jenige der berechtigt ist, erhält das Kennwort.
Viele Grüße Wolfgang

EarlFred
09.07.2014, 09:51
Hallo Wolfgang,

der Arbeitsmappenschutz mag schon helfen, das Kennwort ist allerdings genauso schnell weitergegeben wie die Mappe selbst...

Grüße
EarlFred

Quartzlurch
09.07.2014, 09:57
Hallo Horst,


wenn Dein Schutzkonzept (allein) darauf beruht, dass Makros aktiviert sein müssen, sei der Hinweis gestattet, dass dieses durch Deaktivieren von Makros genauso schnell "umgangen" wird. Viele werden das nicht einmal merken, wenn auf diesen Rechnern Makros grundsätzlich deaktiviert sind.

Lies Dich durch das Internet. Es gibt sicher auch gute Lösungen, die eine ungewollte Nutzung der Mappe verhindern können. Aber mit einem einfachen Hausmannskost-Code, wie er Dir vorschwebt, erreichst Du das nicht.

Grüße
EarlFred

Hallo EarlFred,

dass es keinen 100%igen Schutz gibt ist mir klar, darum geht's mir auch nicht. Wenn ein "normaler User" die Tabelle ohne Makros öffnet kann er mit der Tabelle nichts anderes anfangen als sich die Oberfläche des Sheets anzuschauen, mehr kann er nicht, weil alle Tabellen schreibgeschützt sind.

Zum Thema "Hausmannskost" kann ich nur sagen, die ist in manchen Fällen vielleicht besser als die raffinierte, moderne Kost. Warum muss es bei Programmiersprachen zwingend anders sein?

Aber dennoch, EarlFred, ich danke dir für den Tip und werde neben meiner Idee, auch noch andere Parallelen suchen.

Gruß Horst

Quartzlurch
09.07.2014, 10:07
HI Chris,

kann leider keine xlsm-Dateien öffnen, habe nur Excel 2003. Kannst Du mir das File als "xls-File reinstellen?

Gruß Horst

chris-kaiser
09.07.2014, 10:19
Hi,

xls ist noch leichter auszuhebeln ^^

Quartzlurch
09.07.2014, 10:25
Hallo Chris,

hab' leider keine andere Wahl. Welche Exelversion ist eigentlich nach Excel 2003 die benutzerfreundlichste?

Gruß Horst

chris-kaiser
09.07.2014, 10:41
Hallo Horst,

alles Geschmacksache ;), ich würde immer die Neueste am Markt erhältliche empfehlen, da diese dann wahrscheinlich jahrelang im Einsatz sein wird.

Ich selber habe mit Excel 3.0 begonnen mittlerweile hat es glaube ich schon 10-12 neue Versionen für Windows gegeben. ^^ die MAC Versionen jetzt nicht mit eingerechnet.

Quartzlurch
09.07.2014, 10:58
Hallo Chris,

was Excel betrifft glaube ich ist die letzte Version für Windows >Excel 2013< wenn ich nicht irre. Kann mich ja mal informieren was das kostet.

Zurück zu deiner Demo-Datei: Sehe ich das richtig, dass mit der Tabelle einfach das Passwort mitgegeben werden kann für das nutzen möglicher Dritter, also unberechtigter Personen? Sowas hat EarlFred gegenüber Wolfgang auch angedeutet. Das wollte ich eigentlich nicht.

Zurück zu meiner Idde. Also das Makro was ich Eingangs reingestellt habe funktioniert tadellos. Wenn in dem bestimmten Ordner diese Datei nicht drin ist kannst Du die Tabelle "unter normalen Umständen" nicht öffnen. Das müsste doch eigentlich machbar sein durch VBA eine Mappe unter einem bestimmten Namen anzulegen, ein Tabellenblatt unter einem bestimmten Namen an einen bestimmten Ort zu kopieren und ein Makro zu löschen oder zu verändern, genau so, wie ich es Eingangs beschrieben habe. Oder seht ihr das anders. Jedenfalls wäre mir das die liebste, vielleicht auch die beste? Lösung!

Gruß Horst

chris-kaiser
09.07.2014, 11:13
Hi,

das erste PW kann auch weggelassen werden ;), das habe ich nur zusätzlich drinnen!
gehe mal weiter mit Punkt 4

Also das Makro was ich Eingangs reingestellt habe funktioniert tadellos
Aber nur bei Dir, in den meisten Firmen kann auf C:\Windows mal nichts erzeugt werden, weder Ordner noch Datei ;)

Quartzlurch
09.07.2014, 11:57
Der jenige der berechtigt ist, erhält das Kennwort.


Hallo Wolfang,

"und gibt das Kennwort an einen Dritten weiter" genauso, wie EarlFred gesagt hat!

Danke dir für dein Feedback

Gruß Horst

Quartzlurch
09.07.2014, 12:20
Hi,

das erste PW kann auch weggelassen werden ;), das habe ich nur zusätzlich drinnen!
gehe mal weiter mit Punkt 4

Aber nur bei Dir, in den meisten Firmen kann auf C:\Windows mal nichts erzeugt werden, weder Ordner noch Datei ;)

Zu Punkt 1:
Habe ich bis Punkt 6 schon alles abgearbeitet. Das Tabellenblatt lässt sich jetzt ohne Kennwort öffnen und wieder abspeichern, wenn ich's an einen anderen Ort bewege und ich will es öffnen, verlangt er nach einem Administrator-Kennwort, das hat ein Dritter nicht, ;-) ich hab's ja auch nicht. Soweit so gut. Jetzt bin ich gespannt, wie es weitergeht. Kennwörter ausprobieren bringen mich jetzt nicht wirklich weiter :lachen: Scheint auch 'ne gute Lösung zu sein, aber was passiert, wenn Der Dritte die Tabelle in einen gleichnamigen Ordner mit dem gleichen Dateinamen auf einem anderen Rechner einstellt, was passiert dann, das ist mir noch unklar!

Zu Punkt 2:
Den Ordner kann ich auch an alle anderen möglich Unterverzeichnissen vergraben, damit habe ich keine Probleme :yelrotfl:

Gruß Horst

chris-kaiser
09.07.2014, 12:28
Hi,

1. Datei speichern. (egal wo hin)
2. beim Öffnen erscheint eine Abfrage nach einem Aktivierungs-PW:
3. gebe mal irgendwas ein..., oder in dem Fall ist das PW
horst
4. wenn du nun die Mappe schließt (mit oder ohne speichern) neu öffnest, müsste alles ganz normal funktionieren, keine PW Abfrage mehr.
5. kopiere die Datei in einen anderen Ordner, oder gehe auf speichern unter und wähle einen anderen Ordner aus.
6. Öffne nun die Mappe , es kommt ein neuer Dialog der nach einem ADMIN Passwort nachfragt.


die Aktivierung kann ich entfernen, das ist eben das Kennwort das auch weitergegeben werden könnte... :)
7. Admin PW ist
123ABCD456
Großschreibung beachten.
8. Müsste jetzt NOCH der Aktivierungscode neu eingeben werden.
9. Wenn die Datei verschoben wird beginnt das Spiel von neuem.

Das VBA Projekt ist gesperrt, willst du zum Code kommen
ist das Passwort dafür
msofficeforumnet

;)

Quartzlurch
09.07.2014, 12:34
HI Chris,

das hört sich doch gut an, ich kann's mir jetzt nicht so recht vorstellen aber ich probier das jetzt gleich mal aus, ein Feedback, ob es für mich verwendbar ist bekommst Du später. Hört sich aber wirklich gut an, danke dir Chris.

Gruß Horst

chris-kaiser
09.07.2014, 12:40
Hi,

hier noch die Variante ohne Aktivierung.
Ich hoffe ich habe darin nicht was vergessen umzustellen.

Mappe speichern -> öffnen
müsste ohne PW gehen, wird aber dann die Mappe verschoben. (in einen Pfad der jetzt anders heißt) kommt der ADMIn wieder :)

Quartzlurch
09.07.2014, 12:42
Hallo Chris,

Hi,
7. Admin PW ist
123ABCD456
;)

Wenn ich diesen Code als Administrator-Kennwort eingebe, öffnet er mir die Datei nicht.

Gruß Horst

chris-kaiser
09.07.2014, 12:57
Hi,

:grins: :grins: :grins: OK,
123ABC456
jetzt hätte ich mich doch bald selber ausgesperrt.

Quartzlurch
09.07.2014, 13:04
Hallo Chris,

hab's über's Makro auch schon entdeckt, das kann passieren, Gottseidank war das Kennwort für das Makro richtig, sonst hätten wir ein Problem gehabt :lachen:

Gruß Horst

Quartzlurch
09.07.2014, 13:17
Hallo Chris,

hab jetzt alles ausprobiert und habe noch eine Frage:

Wenn ich jetzt einer Person meines Vertrauens die Excel Tabelle über irgend ein Medium Gebe, dann kann der nichts damit anfangen , weil er das Admin-Kennwort nicht hat. Also gebe ich ihm dies mit. So: jetzt macht er den ganzen Vorgang, wie von dir oben beschrieben. Er kann die Excel-Tabelle öffnen. Eines Tages gibt er die Datei an einen Dritten weiter und gibt ihm das ADMIN-Kennwort mit. Dann kann der Dritte doch nach Eingabe desselben die Tabelle laden und ganz ganz normal das Tabellenblatt abspeichern. Somit geht der Kreislauf weiter. Sehe ich das richtig?

Gruß Horst :rolleyes:

chris-kaiser
09.07.2014, 13:20
Hi,

Warum sollte das Admin PW weitergegeben werden:)
Das Admin PW wird ja nur gebraucht wenn die Datei auf einmal wo anders abgelegt wird!

Ich habe in der Mappe eine versteckte Tabelle hinterlegt. (Tabelle4)
Kann nur in der Entwicklungsumgebung in den Eigenschaften bei Visible sichtbar gemacht werden, in den ersten beiden Zellen steht der Pfad und das Passwort. Diese zwei Zellen leeren.
Die Tabelle wieder verstecken. (bei Visible -> veryhidden wählen). Datei speichern und weitergeben.

:)

Du gibst die Datei jemanden, inklusive PW für die Aktivierung.
Diese Person1 gibt die Aktivierung ein und kann dann ungestört damit arbeiten, PW wird nicht mehr abgefragt.
Jetzt gibt diese Person1 die Datei jemanden Dritten, diese Person2 wird jetzt aufgefordert ein Admin Passwort einzugeben, das aber wiederum hat Person1 nicht :)

Quartzlurch
09.07.2014, 13:24
Hi,

Warum sollte das Admin PW weitergegeben werden:)
Das Admin PW wird ja nur gebraucht wenn die Datei auf einmal wo anders abgelegt wird!

Hallo Chris,

um einem Freund, oder wem auch immer einen Gefallen zu tun? Das will ich ja mit meinem Vorhaben verhindern!

Gruß Horst

Mc Santa
09.07.2014, 13:27
Hallo,

Du als Admin sollst das Admin PW niemandem weitergeben. Dadurch weißt nur du das Adminpasswort.

Daraus folgt, dass wenn du die Datei weitergibst, musst du diese einmalig aktivieren.

VG

Quartzlurch
09.07.2014, 17:01
Hi,


Du gibst die Datei jemanden, inklusive PW für die Aktivierung.
Diese Person1 gibt die Aktivierung ein und kann dann ungestört damit arbeiten, PW wird nicht mehr abgefragt.
Jetzt gibt diese Person1 die Datei jemanden Dritten, diese Person2 wird jetzt aufgefordert ein Admin Passwort einzugeben, das aber wiederum hat Person1 nicht :)

Hallo Chris,

bin erst wieder seit 'ner Stunde zurück. Das Passwort hat Person2 doch von seinem Freund Person1 gekriegt sonst kann er's doch nicht nutzen. Weißt Du was ich meine? Deshalb wäre mir mein Konzept schon lieber, weil:

1.
Der normale Anwender weiß mit großer Wahrscheinlichkeit nicht, dass eine versteckte Datei ihn am öffnen hindert, und

2.
wenn doch, weiß er nicht wie die Datei heißt und in welchem Ordner oder Unterverzeichnis sich diese befindet, und

3.
Der berechtigte Anwender kann sich mit seiner Excel-Datei auf seinem PC frei bewegen, ist nicht von einem Ordner abhängig, muss sich daher nicht immer wieder als Admin anmelden

Für weniger wichtige Tabellen würde ich dein Konzept sicher auch anwenden, keine Frage (bitte nicht böse sein)

Gruß Horst

haklesoft
09.07.2014, 18:02
Textvorschlag für die Chris-Variante:

Mein lieber Freund,

diese Excel-Datei ist nur für Dich!

Bitte lege sie in einem Verzeichnis Deiner Wahl ab.
Wenn Du sie das erste Mal öffnest, wird sie für Dich aktiviert.
Dazu musst Du ein Kennwort eingeben. Es lautet: Horst

Anschließend kannst Du die Datei ganz normal verwenden.

Bedenke aber, Du sollst die Datei nicht weitergeben, sondern
für Dich behalten.

Die Datei ist gegen eine versehentliche Weitergabe geschützt und
funktioniert nicht in anderen Rechnerumgebungen oder Verzeichnissen.

Mc Santa
09.07.2014, 20:30
Aber das Problem ist doch, dass man einfach die unaktivierte Version weitergeben kann, oder nicht?
Was ich mir noch überlegt habe, bei uns könnte man über den usernamen gehen: jeder Mitarbeiter hat eine Art ID. Diese wird nach Bedarf in ein verstecktes Blatt vom Admin eingetragen. Beim öffnen wird dann verglichen, ob der berechtigte User die Tabelle öffnet.

Vielleicht hilft dieser Ansatz weiter. VG

Quartzlurch
09.07.2014, 21:07
HI Mc Santa,

danke für deine Überlegung, denke mal drüber nach, ob das Sinn macht. Obwohl ich nach wie vor der Meinung bin, dass meine Überlegung bis jetzt, die für mich am Beste ist. Leider bin ich kein Programmierer, es fällt mir wirklich schwer da durchzusteigen mit meinen geringen Kenntnissen. Was meinst Du:

Zu 1:
ich weiß man kann über ein Makro einen kompletten Pfad auf Existenz überprüfen, wenn er existiert, soll das Tabellenblatt geöffnet werden.

Zu 2:
Wenn der Pfad nicht existiert soll der Pfad ohne Meldung "ohne Msg-Box" angelegt werden, aber dieses Anlegen soll nur beim 1. Öffnen des Tabellenblattes funktionieren, sonst kann es ja auf verschiedenen Rechnern benutzt werden. Mit Anlegen meine ich mittels VBA ein Verzeichnis zu erstellen z.Bsp. c:\dokumente\meinOrdner\meineDatei.xls !

Zu 3:
Also muss in einem 2. Makro das 1. Makro gelöscht werden, das könnte beispielsweise auch beim Schließen der Tabelle ausgelöst werden. Das 2. Makro enthält dann nur die Abfrage: Datei vorhanden, Tabellenblatt wird geöffnet. Datei nicht vorhanden, Tabellenblatt kann nicht geöffnet werden.

Hältst Du das für machbar die 3 Kriterien in einem oder 2 Makros so zu verschachteln , dass ein Schuh daraus wird?

Wünsche dir einen netten Fußballabend

Ciao Horst

Mc Santa
09.07.2014, 21:19
Ich finde das bietet den gleichen schutz, wie die Datei von Chris, da du die unaktivierte Datei problemlos weitergeben kannst.

Quartzlurch
09.07.2014, 22:09
Ich finde das bietet den gleichen schutz, wie die Datei von Chris, da du die unaktivierte Datei problemlos weitergeben kannst.

Die Tabellenblätter sind alle schreibgesachützt im nicht aktivierten Zustand, damit kann niemand was anfangen :grins:

Mc Santa
09.07.2014, 22:40
Bitte korrigiere mich, wo mein Denkfehler ist:

Du schützt deine Datei, indem Sie beim ersten Öffnen eine geheime KeyDatei anlegt. Bei zukünftigem Öffnen ist das Makro bereits so modifiziert, dass sie sich ohne diese KeyDatei nicht benutzen lässt.

Aber: Wenn du mir diese Datei per Email schickst, was hindert mich daran sie weiter zu schicken? Ich und mein Freund öffnen dann die Datei jeder für sich zum ersten mal und die notwendige KeyDatei wird erstellt. Ich und mein Freund können die Datei benutzen, oder nicht?

VG

Quartzlurch
09.07.2014, 23:10
HI Mc Santa,

ich schicke dir eine Excel-Tabelle. Beim, oder vor dem 1. Öffnen wird durch das Makro festgestellt, dass es den Pfad C:\dokumente\meinOrdner\meineDatei.xls nicht gibt und erstellt im Verzeichnis "C:\dokumente\" den Ordner "meinOrdner". Danach wird die Datei "meineDatei.xls" als Excel-Datei in den Ordner "meinOrdner" kopiert. Somit kannst Du bei jedem Öffnen der Tabelle die ich dir geschickt habe die Tabelle bearbeiten, weil beim Start das Makro die Datei in dem vorgegebenen Pfad finden kann. Wenn es nun ein 2. Makro gäbe, welches nach Abarbeitung des 1. Makros dasselbe löscht, wird zukünftig bei jedem weiteren Öffnen der Excel-Tabelle nur noch die Existenz der Datei geprüft, aber nicht mehr der Pfad angelegt, dann kannst Du von der Excel-Tabelle 1000 Kopien machen mit dem Ergebnis, dass diese 1000 Kopien sich im aktivierten Zustand nicht öffnen lassen, weil auf den anderen Rechnern diese Datei nicht hinterlegt ist, und im nicht aktivierten Zustand sind alle Mappen schreibgeschützt. Verstehst Du was ich meine? Wenn das machbar ist, finde ich das sehr professionell, aber alleine krieg ich das leider nicht hin.

Gruß und eine gute Nacht

Horst

Mc Santa
09.07.2014, 23:16
Hallo,

ich habe mit der Vorgehensweise immer noch ein Problem:
Ich habe die Datei jetzt im Posteingang, ungeöffnet. Sobald ich sie auf den Desktop kopiere und dort Öffne, findet der von dir vorgesehene Prozess statt. Danach kann ich die Desktop-Datei nicht mehr weitergeben.

Aber was hindert mich daran die Datei aus meinem Posteingang an jemanden zu verschicken? Diese Datei wurde noch nie geöffnet, es findet also auch bei einem Dritten wieder Prozess von oben statt, und auch der Dritte kann die Datei nutzen.

VG

Quartzlurch
09.07.2014, 23:25
Bitte korrigiere mich, wo mein Denkfehler ist:

Ich und mein Freund öffnen dann die Datei jeder für sich zum ersten mal und die notwendige KeyDatei wird erstellt.
VG

Und genau deshalb darf diese Keydatei, wie Du sie nennst, nur einmal angelegt werden. Deshalb das 2. Makro welches das 1. Makro direkt nach der Abarbeitung löscht. In dem 2. Makro wird dann nur noch die Existenz der KeyDatei festgestell: >KeyDatei vorhanden< = Tabelle lässt sich öffnen - >KeyDatei nicht vorhanden< = Tabelle lässt sich nicht öffnen, bei Öffnung im nicht aktivierten Zustand sind alle Tabellenblätter schreibgeschützt.

Gruß Horst

Mc Santa
09.07.2014, 23:43
Hallo,

ich gebe die Datei weiter, bevor sie das erste mal ausgeführt wird. Dann kann das Makro sich nicht selbst löschen.

Das gleiche Problem besteht meiner Meinung auch, wenn ich die Datei benutze Denn die Datei aus meiner Email wird nicht geändert, und ich kann sie immer noch verschicken, und sie funktioniert woanders.

VG

Quartzlurch
09.07.2014, 23:58
Hallo,

ich gebe die Datei weiter, bevor sie das erste mal ausgeführt wird. Dann kann das Makro sich nicht selbst löschen.

VG

Hallo,

Du weißt doch garnicht, dass beim 1. Öffnen eine Prüfdatei installiert wird!? Und Du bemerkst auch nicht, dass eine Prüfdatei installiert wird!? Und außerdem, kann ich noch eine Zeitspanne angeben, wenn der Tag X kommt, lässt sich die Datei auch nicht mehr öffnen: Ich geb dir die Datei am 01.08.2014 und mit Ablauf des 31.12.14 lässt sich die Datei nicht mehr öffnen, schon mal gehört???

Gute Nacht Mc Santa :winken:

chris-kaiser
10.07.2014, 07:30
moin moin,

geb dir die Datei am 01.08.2014 und mit Ablauf des 31.12.14 lässt sich die Datei nicht mehr öffnen, schon mal gehört???

Hallo Horst, glaubst du ernsthaft das wird mit einer zusätzlichen Exceldatei gemacht?
Da gibt es viele Ansätze aber das mit zusätzlichen Mappe wäre mir neu ;)

Du willst zwei Open Ereignisse in einer Mappe...
tja, geht nicht.
Löschen vom bestehenden Open Ereignis und ersetzen durch ein neues Ereignis, ist möglich aber NICHT sinnvoll.

Da es eine Sicherheitseinstellung gibt die dies verhindert.
Dazu müsste auf den jeweiligen Rechner -> "Zugriff auf das VBA-Projektobjektmodell vertrauen " aktiviert werden...

sonst geht gar nichts.....
sollten Module gelöscht werden werden zusätzliche Verweise benötigt...

Wird Code aus der Mappe mit Code entfernt/ersetzt, darf kein Schutz auf dem VBA-Projekt sein....

Mir ist klar was du vorhast, aber Dir ist nicht klar was für "Stolpersteine" dies mit sich zieht!

hier mal ein kleines Beispiel wo ich jetzt nur Modul1 aus einer Mappe entferne
lege es in ein Modul2 und beachte die Hinweise.

Aber schon alleine ein VBAProjektschutz macht das wieder zu nichte.

Sub Moduleins_weg_damit()
'Verweis für
'Visual Basic For Applications Extensibility 5.3
'aktivieren
'oder hier der Link für Late binding
'http://books.google.at/books?id=ObPb39-IMf0C&pg=PA369&lpg=PA369&dq=Applications+Extensibility+5.3+VBE.ActiveVBProject.References.AddFromGuid&source=bl&ots=6suwvHeqsV&sig=1095sxqaXqykwVzc-Wqk-wlZFVM&hl=de&sa=X&ei=gSq-U5nuHsrtO6LFgbgK&ved=0CB4Q6AEwAA#v=onepage&q=Applications%20Extensibility%205.3%20VBE.ActiveVBProject.References.AddFromGui d&f=false
'Mappe sollte gespeichert sein!

Const Modulname As String = "Modul1"
Dim cModul As VBComponent
On Error Resume Next
Set cModul = ActiveWorkbook.VBProject.VBComponents(Modulname)
If Not CBool(cModul Is Nothing) Then
ActiveWorkbook.VBProject.VBComponents.Remove cModul
Else
MsgBox Modulname & " nicht vorhanden"
End If
If Err.Number = 1004 Then
'das muss halt auf jedem Rechner gemacht werden!!!!!!!!!!! SICHERHEITSEINSTELLUNG
MsgBox "Zugriff auf Visual-Basic muß aktiviert sein" & Chr(10) & _
"bei der Makrosicherheit -> Zugriff auf das VBA-Makroprojektmodell erlauben"
End If
Set cModul = Nothing
End Sub

Quartzlurch
10.07.2014, 17:52
Hallo Chris,

sorry für die lange Abwesenheit, hatte einiges zu tun. Ich möchte schon auf deinen letzten Beitrag intensiv eingehen.

moin moin,
Hallo Horst, glaubst du ernsthaft das wird mit einer zusätzlichen Exceldatei gemacht?

Ich verstehe die Frage nicht, welche zusätzliche Exceldatei? Ich sprach nur von einer Excel-Tabelle mit einem Makro, das nach dem Ablauf eines bestimmten, ins Makro eingebaute Datum, das öffnen dieser Excel-Tabelle verhindert, zumindest, wenn die Makros aktiv sind, und wenn die Makros beim öffnen der Datei inaktiv sind, dann kann der "normale Anwender" die Arbeitsblätter nicht bearbeiten und keine Formeln einsehen, weil alle Mappen schreibgeschützt sind!



Du willst zwei Open Ereignisse in einer Mappe...
tja, geht nicht.

Eigentlich will ich nur ein Open Ereignis. Für was bräuchte ich deiner Meinung nach das zweite Open Ereignis?

Löschen vom bestehenden Open Ereignis und ersetzen durch ein neues Ereignis, ist möglich aber NICHT sinnvoll.

Ist es nicht möglich mit nur einem Open Ereignis zu arbeiten und mit einer Schleife/Abfrage einen Zähler zu setzen, der nur "einmal" zulässt, dass der Pfad >C:\Dokumente\meinOrdner\meineDatei.xls< angelegt/installiert wird? Wenn das praktizierbar wäre, könnte man auch auf das "Löschen" eines Makros verzichten.

Hallo an alle User die eine Idee zur Mithilfe haben,

Private Sub Workbook_Open()

If Dir("C:\Dokumente\meinOrdner\meineDatei.xls") = "" Then
MsgBox "Diese Exel-Anwendung ist nicht für diesen PC registriert!!!", vbOKOnly + vbCritical, Application.UserName
ActiveWorkbook.Close False
End If

End Sub

oben genannter Code ist der Teil des Makro, der prüft ob die "Prüf-Datei" auf dem Rechner vorhanden ist, wenn Prüfdatei vorhanden, öffnet sich die Tabelle, ansonsten nicht! Funktioniert auch tadellos!

Dieses Makro müsste jetzt erstmal erweitert/kombiniert werden mit der Möglichkeit oben genannten Pfad
"C:\Dokumente\meinOrdner\meineDatei.xls" anzulegen/zu installieren, indem mittels VBA-Makro im Verzeichnis Dokumente der Ordner >meinOrdner< erstellt wird, und im Ordner >meinOrdner< soll ein leeres Excel-Sheet unter dem Namen >meineDatei.xls< hineinkopiert/eingefügt werden.

Das wäre zunächst der 1. Ansatz, alles weitere später!

Gruß Horst

chris-kaiser
11.07.2014, 11:04
Hi,

die RegLösung poste ich nicht aber so in der Art geht es auch.
Kannst ja mal testen ;)

Lösung gibt es später:

Quartzlurch
11.07.2014, 12:33
Hi,

die RegLösung poste ich nicht aber so in der Art geht es auch.
Kannst ja mal testen ;)

Lösung gibt es später:

Hallo Chris,

danke für deine Antwort, so in der Art habe ich mir das schon vorgestellt. Du öffnest das Tabellenblatt, wenn der im Makro vorgegebene Pfad und die Prüfdatei nicht existieren, dann werden beide angelegt. Das Problem ist nur, wenn das Makro die Prüfdatei auf dem Rechner nicht findet installiert er dieselbe immer wieder neu. Du kannst die Datei 10 mal löschen, Das Makro installiert sie immer wieder neu. Dies sollte aber nur einmal möglich sein. Vielleicht kommt die Erleuchtung für mich in der finalen Lösung?

Gruß Horst

chris-kaiser
11.07.2014, 12:44
Hallo Horst,

Wirklich ?
Wie hast du bislang getestet?
Öffne die Datei, mach dann was darinnen, speichere.... oder verschiebe die Datei ruhig wo anders hin
Öffne die Datei so oft du willst.
kopiere dann diese auf einen Stick, gehe auf einen anderen Rechner... und siehe da es geht nicht mehr.

Das mit Posteingang und wenn die Datei noch nicht benutzt worden ist, hat MC Santa Dir schon so oft versucht zu erklären.......
Darum hatte ich ja auch eine Aktivierung vorgesehen....
Die jetzige Datei macht genau das was du wolltest........

Quartzlurch
11.07.2014, 15:35
Hallo Horst,

Das mit Posteingang und wenn die Datei noch nicht benutzt worden ist, hat MC Santa Dir schon so oft versucht zu erklären.......
Darum hatte ich ja auch eine Aktivierung vorgesehen....
Die jetzige Datei macht genau das was du wolltest........

HI Chris,

Ich hab's gewusst: "Du bist ein Fuchs" (soll ein Kompliment sein) :sun: :yelrotfl:

na ja, was soll ich sagen: "manchmal hat man halt ein Brett vorm Kopf", das passiert schon mal, wenn man versucht ein Problem intensiv zu lösen, von dem man allenfalls >geringe Grundkenntnisse" hat.

Mein Fazit: Die ungespeicherte Ursprungsdatei kann an berechtigte Personen zur Bearbeitung weitergegeben werden, sobald die Ursprungsdatei aber unter dem gleichen Namen abgespeichert wurde, kann diese auf einem anderen Rechner nicht mehr geöffnet werden. Sehe ich das so richtig?

Eine Sache noch: Beim Öffnungsversuch, wenn der Pfad nicht existiert, sieht man ganz kurz das Tabellenblatt im Hintergrund, kann man das irgendwie ganz ausblenden. Den Dateinamen darf ich doch umbenennen, oder? Der gefällt mir irgendwie nicht so :rolleyes:

Ach, und Mc Santa, falls Du das auch lesen solltest, nimm mir das bitte nicht übel, aber ich hatte einfach nicht verstanden, was Du mir mit "einmal aktivieren" mitteilen wolltest, woher sollte ich auch wissen, dass Du ein speichern der Datei meintest! :confused:

Gruß Horst

chris-kaiser
12.07.2014, 13:02
Hallo Horst,

das Tabellenblatt kann man immer sehen! Man braucht ja nur die Makros auszuschalten und schon kann die Mappe eingesehen werden!
Alle Schutzmechanismen sind dann vollkommen außer Kraft gesetzt.

Dies ist ja nur eine kleine Spielerei.

Das Kennwort (VBAProjekt) für die Datei ist.
horst

Ich erzeuge eine Ini Datei in C:\Temp
die den schönen Namen Virus hat. ^^

lg

Quartzlurch
12.07.2014, 15:36
Hallo Chris,

das Tabellenblatt kann man immer sehen! Man braucht ja nur die Makros auszuschalten und schon kann die Mappe eingesehen werden!
Alle Schutzmechanismen sind dann vollkommen außer Kraft gesetzt.


Mir geht es nur darum, dass man im aktiven Zustand des Makros das Tabellenblatt im Hintergrund nicht aufblitzen sieht, wenn das Tabellenblatt nicht geöffnet wird. Sieht eben professioneller aus ;-)


Das Kennwort (VBAProjekt) für die Datei ist.
horst

Ich erzeuge eine Ini Datei in C:\Temp
die den schönen Namen Virus hat. ^^

Danke, das hatte ich bereits herausgefunden ;-)

Könntest Du mir zu dem Code eine Beschreibung zukommen lassen, welcher Bereich was genau macht? Wäre für mich 'ne gute Möglichkeit mich in's programmieren mit VBA einzuarbeiten bzw. mich besser zurecht zu finden. Wäre toll. :)

LG Horst

chris-kaiser
12.07.2014, 18:19
Hallo Horst,

https://www.youtube.com/watch?v=ssei8pEt2rM&index=1&list=PLRvJRREE9cUlxqi5LHThnI_9U2Wl1No7s

32 Videos

bzw. würde ich auch
http://www.vba-tutorial.de/
empfehlen.

Code ist jetzt dokumentiert und ich habe noch zusätzlich was eingebaut ;)
wird nun nochmal eine neue Datei aufgemacht, geht es auch nicht mehr. Dazu müsste jetzt die INI zuvor gelöscht werden.
Bsp: Jemand bekommt die Datei per Mail, ruft diese auf arbeitet damit, löscht dann selbige und nimmt nochmal die Datei aus dem Postfach, geht dann auch nicht mehr.
Aber wie schon vorher erwähnt, reine Spielerei ^^, Makros deaktivieren und schon geht es nicht mehr.
Da der Code ja bei Workboook_open ist erscheint kurz die Mappe. Keine Ahnung wie ich das unterbinden sollte.

Quartzlurch
12.07.2014, 18:46
HI Chris,

vielen Dank für all deine Hilfe!!!

Gruß Horst

Quartzlurch
16.07.2014, 13:12
Hallo Chris,

habe alle Daten geändert die den Pfad betreffen, also das überprüfen auf Existenz und das neu anlegen des Pfades. Funktioniert nicht. Was muss ich dabei beachten?

LG Horst

chris-kaiser
16.07.2014, 14:04
Hi,

die Customdocumentproberties ;)
in den Eigenschaften habe ich eine neuen Wert festgelegt.
Da sollte "horst den Wert
Pass
bekommen

hier mal ein Link wie zu diesen Werten kommst.
http://www.computerwissen.de/office/excel/artikel/eigene-excel-eigenschaften-per-vba-anlegen-und-sitzungsuebergreifend-speichern.html

Quartzlurch
16.07.2014, 21:56
Hallo Chris,

melde mich wieder, wenn ich nicht weiter komme. Ich versuche das jetzt einfach mal rauszukriegen. Dauert aber "einige Zeit". Danke für den Tip, ich melde mich zu gegebener Zeit wieder.

Gruß Horst

Quartzlurch
17.07.2014, 11:56
Hallo Chris,

sorry, komme alleine nicht weiter. Kannst Du mir weiterhelfen, was ich wo ändern muss um den Pfad auf meine Bedürfnisse zu ändern?

LG Horst

chris-kaiser
17.07.2014, 13:14
Hi,

strPath = "C:\temp\Virus.ini"
'wenn in den Eigenschaften der Datei Pass steht und keine Datei angelegt ist
If ThisWorkbook.CustomDocumentProperties("horst").Value = "Pass" And Dir(strPath) = "" Then
'überprüfe ob Pfad existiert
If Dir("C:\temp\") = "" Then
'wenn nicht erzeuge Pfad
MkDir ("C:\temp")
End If

in diesem Teil ist der Pfad hintzerlegt, sonst nirgends, aber in den Eigenschaften gehört "horst" auf den Wert
Pass
gelegt.

:D :D Ist die Datei jetzt zu gut geschützt?

Quartzlurch
17.07.2014, 15:57
Hallo Chris,
Hi,

strPath = "C:\temp\Virus.ini"
'wenn in den Eigenschaften der Datei Pass steht und keine Datei angelegt ist
If ThisWorkbook.CustomDocumentProperties("horst").Value = "Pass" And Dir(strPath) = "" Then
'überprüfe ob Pfad existiert
If Dir("C:\temp\") = "" Then
'wenn nicht erzeuge Pfad
MkDir ("C:\temp")
End If

in diesem Teil ist der Pfad hintzerlegt, sonst nirgends, aber in den Eigenschaften gehört "horst" auf den Wert
Pass
gelegt.

:D :D Ist die Datei jetzt zu gut geschützt?

Nee, das kann man so nicht sagen, auf jeden Fall ist der Pfad vor Überschreibung/Änderung zu gut geschützt, wengstens für mich :grins: :grins: :stupid:

Gruß Horst

Mc Santa
17.07.2014, 16:24
Ich habe es auch ausprobiert mit einem neuen Pfad, daher glaube ich, dass Chris recht hat.

Lade die Datei neu aus dem Forum herunter. Öffne sie bei deaktivieren Makros! und ändere den Pfad. Geht es nun?
Wenn ja, können wir darauf eingehen, warum es vorher nicht ging.

VG

Quartzlurch
17.07.2014, 17:04
Hallo Mc Santa,

Ich habe es auch ausprobiert mit einem neuen Pfad, daher glaube ich, dass Chris recht hat.

Mit was hatte er recht? Ich konnte dem was mir Chris schrieb "leider nicht" entnehmen, dass ich den Code nur im inaktiven Makro-Zustand zu ändern brauche!

Lade die Datei neu aus dem Forum herunter. Öffne sie bei deaktivieren Makros! und ändere den Pfad. Geht es nun?
Wenn ja, können wir darauf eingehen, warum es vorher nicht ging.

Ja, Mc Santa, das war's, Du hast mir den entscheidenden, für mich verständlichen Tip gegeben! Wie oben bereits erwähnt, konnte ich die "jungfräuliche" Datei, im nicht aktiven Makro-Modus ändern. Habe die Datei unter einem anderen Namen gespeichert, und siehe da; der Pfad war in meinem Sinne angelegt :dance:

Ich möchte mich für deine Hilfe ganz herzlich bedanken, war schon am verzweifeln. Seufz: "Ein guter Programmierer werde ich in dem Leben wahrscheinlich nicht mehr" :smashing:

Gruß Horst :yelrotfl:

Quartzlurch
17.07.2014, 17:11
HI Chris,

Hi,

in diesem Teil ist der Pfad hintzerlegt, sonst nirgends, aber in den Eigenschaften gehört "horst" auf den Wert
Pass
gelegt.

Sorry, aber mit dieser Aussage konnte ich "leider" nicht darauf kommen, dass ich in der "jungfräulichen" Tabelle im inaktiven Makro-Zustand die Änderungen des Pfads und der Erzeugung des Dateinamens einfach nur im Programm-Code geändert werden brauchen. Trotzdem: ich weiß eure Bemühungen zu schätzen, und bin euch auch dankbar dafür :lachen: :top:

Gruß Horst

chris-kaiser
17.07.2014, 17:21
Hi,

Die Datei kann auch bei aktiven Makros geändert werden ^^.
ABER die Datei Virus.ini sollte zuvor gelöscht werden, wenn die Datei schon einmal geöffnet worden ist.

Dann Pfade ändern und die Eigenschaft horst auf Pass ändern (bei der jetzt no hinterlegt ist)-> Speichern.
Dann ist die Datei "scharf" geschaltet.

Quartzlurch
17.07.2014, 17:32
HI Chris,

danke dir für die Erläuterung, werd's mal ausprobieren. So ist das, wenn der :D :D Ehrgeiz mit einem durchgeht. :stupid: :smashing: :yelrotfl:

Liebe Grüße Horst

Quartzlurch
17.07.2014, 18:03
Hallo Chris,

jetzt "endlich" hab' ich's kapiert. Mann, Mann, Mann, war das 'ne schwere Geburt :rolleyes: :grins: Hab's ausprobiert, und jetzt hab ich das Prinzip verstanden. Danke noch mal und einen schönen Abend. :mrcool:

Gruß Horst

chris-kaiser
17.07.2014, 18:43
Hallo Horst,

:) Wird die Datei geöffnet, wird zuerst einmal überprüft ob es die INI Datei gibt. Wenn nicht wird noch überprüft ab in den Eigenschaften bei "horst auch Pass steht. wenn ja, erzeuge die INI Datei, inklusive dem Ordner wenn es diesen noch nicht gibt und die Eigenschaft Horst wird auf "no" gesetzt.

Wird nun die gespeicherte Datei geöffnet, wird wiederum abgefragt ob es die ini Datei gibt und auch der Inhalt der INI wird abgefragt und ob die Eigenschaft auch auf "no" ist, wenn ja öffne die Datei.

Würde jetzt eine jungfräuliche" Datei geöffnet, wäre zwar die INI Datei da aber in den Eigenschaften steht ja "Pass" darum wird die Datei geschlossen.

Aber alles in allem doch nur eine Spielerei, :) da ja Makros einfach deaktiviert werden können.

p.s das mit dem Inhalt der INI Datei habe ich nur deshalb eingebaut, denn damit könnte auch eine Zeitsperre eingebaut werden..... wenn beim Erzeugen der Datei ein Datum übergeben wird. Bzw. noch eine Eigenschaft in der Datei hinzugefügt wird mit Datum.

Quartzlurch
17.07.2014, 19:59
Hallo Chris,

p.s das mit dem Inhalt der INI Datei habe ich nur deshalb eingebaut, denn damit könnte auch eine Zeitsperre eingebaut werden..... wenn beim Erzeugen der Datei ein Datum übergeben wird. Bzw. noch eine Eigenschaft in der Datei hinzugefügt wird mit Datum.

das mit der Zeitsperre würde mich jetzt doch noch interessieren, wie genau macht man das, in Verbindung mit einer Ini-Datei kenne ich das nicht? Kann man damit auch über eine Msg-Box Mitteilungen machen? Hast Du noch Lust mir das zu erklären?

Gruß Horst