PDA

Vollständige Version anzeigen : Excel Makro -> Automatische ausführung


king78
07.07.2006, 11:05
Hallo Forumuser,
ich habe mich mal angemeldet um mich hier auch mal etwas mit zu beteiligen und um meine fragen stellen zu können.
ich heisse David Richter bin 20 Jahre alt und bei der Deutschen Marine als Informatikkaufmann beschäftigt.

Zu meiner Frage:
Ich habe eine Datei mit Daten, die jeden Tag neu vom Server geladen wird(die daten ändern sich ständig).
Diese Daten sollen in ein anderen Programm wieder hochgeladen werden. Das geht jedoch nur wenn man in der Datei unter "Einfügen/Name/Definieren" einen bestimmten Namen definiert.
Das Makro dafür funktioniert auch schon alles:
Ich habe eine andere "Master" Datei angelegt in der die Makros ausgeführt werden. Also erst das Dokument mit den Daten einlesen und dann den Namen definieren.

Jetzt brauche ich noch ein Makro dafür, dass die Makros in der "Master" Datei automatisch beim öffnen der Datei gestartet werden (Makrosicherheit is schon auf Niedrig aber er führt die trotzdem nicht automatisch aus).
Und dann brauche ich noch ein Makro dass das die "Masterdatei"(mit den Makros) jeden morgen um 5.00 Uhr ausgeführt wird.

Ich hoffe dass mir jemand helfen kann dass wäre echt super. In einem anderen Forum gabs leider keine Hilfe :(

Freundliche Grüße
David

Woody
07.07.2006, 12:00
Hallo David,

mit

Private Sub Workbook_Open()
...Dein Code
End Sub

wird Dein Makro beim Öffnen der Datei automatisch ausgeführt.

Die Zeitsteuerung morgens würde ich so lösen, dass Du auf dem Server eine Task anlegst. Unter Start/Programme/Zubehör/Systemprogramme/Geplante Tasks die Masterdatei auswählen und Uhrzeit eingeben.

PS: Willkommen im Forum! :)

king78
07.07.2006, 12:42
okay, danke erstmal. werde es mal versuchen

...aber erst montag ;-)

jinx
07.07.2006, 14:35
<font size="2" face="Century Gothic">Moin, David,

stelle bitte die Datensicherheit wieder auf Mittel, damit zumindest die Mitteilung bei manueller Öffnung der Mappen erscheint. Wenn eine Mappe per Makro geöffnet wird, erscheint dieser Hinweis nicht (genauso wenig, wenn diese Mappen in den Startverzeichnissen von Excel abgelegt sind - von dort werden sie beim Start von Excel automatisch geladen).</font>

king78
10.07.2006, 11:01
mh habe das mal alles soweit gemacht...
funktioniert leider nicht;
habe noch probleme die makros, sind ja zwei(1: daten laden, 2: namen definieren)
am start gleich auszuführen.

dann sollen die makros ja noch jeden morgen gegen 5 uhr durchlaufen:
gitb es da nen makro für, also dass excel geöffnet wird, dann die makros durchlaufen und excel sich dann wieder schliesst?(kann man das in "geplante tasks" in windows einstellen?)

freue mich über jeden tip

jinx
10.07.2006, 17:35
<font size="2" face="Century Gothic">Moin, David,

im Projektexplorer siehst Du bei Deiner Arbeitsmappe das Klassenmodul DieseArbeitsmappe, in die der Code eingefügt werden muss:

Option Explicit

Private Sub Workbook_Open()
daten_laden
namen_definieren
End Sub
wobei die Namen den Konventionen wie oben anzupassen sind.

Geplante Tasks klingt schon mal nicht schlecht - möglicherweise will der zeitlich aktivierte Start dann aber nicht mit der Workbook_Open-Prozedur laufen, dann musst Du auf ein Auto_Open() in einem allgemeinen Modul zurückgreifen...</font>

king78
11.07.2006, 08:06
Guten Morgen,
ein Problem habe ich noch vorher,
wenn ich das DATEN_laden makro in der master.xls ausführe wird die datei aus der ich die daten laden möchte komplett neu geöffnet.
ich möchte aber die daten aus der anderen datei IN DER master datei laden. wie muss ich da mein makro ändern?

danielice
11.07.2006, 08:36
hallo David,

ich habe hier auf einem Win2000 PC's etliche "Excel-Jobs" am laufen. Ich mach wie Woody schon geschrieben hat, über den Taskmanager.

Dazu lege ich auf dem Netzlaufwerk eine rl.bat Datei an ( in der auch die .xls Datei liegt ! ) und schreibe als Inhalt einfach "makro_rl.xls" z.B. rein. Also so wie die Exceldatei heißt, welche gestartet werden soll. Im Taskmanager erstellst Du dann eine neuen TAsk und gibst als auszuführende Datei die "rl.bat" an, legst die Uhrzeit fest und das wars :grins: läuft bei mir hier an 7 Tagen die Woche *g*

Was Dein Dateiproblem betrifft:
Du möchtest Datei X starten und er soll den inhalt in Datei Y schreiben ?
Könntest Du vlt. etwas Quelltext posten ? An welcher Stelle hakts denn ?

Daniel

//edit:
jetzt hab ich nochmal drüber nachgedacht - also Du hast beide Dateien geöffnet ? und er schreibt in die falsche Datei ?
mit Windows("andereExcelDatei.xls").Activate kannst Du die andere Datei aktivieren, dort könnte er dann die Werte reinschreiben

king78
11.07.2006, 09:44
so, habe mal weiterprobiert hier, dass mit dem automatisch laden funktioniert alles.
aber die makros stehen ja in dieser master datei, wenn ich die masterdatei öffne und auf "makros aktivieren" klicke dann öffnet sich gleichzeitig die datei mit den daten und der name wird dort definiert.
Gibt es entweder ne möglichkeit die daten in die masterdatei zu laden und dort den namen zu definieren, oder wie ist der befehl dafür dass die datei mit den daten(die sich dann öffnet) wieder geschlossen wird?
Also dass die geöffnet wird, die makros durchlaufen und diese dann wieder geschlossen wird.
Der Quelltext für die makros lautet:


Sub daten_laden()
'
' daten_laden Makro
' Makro am 11.07.2006 von Richter aufgezeichnet
'

'
ChDir "C:\temp"
Workbooks.Open Filename:="C:\temp\daten.xls"
Cells.Select
ActiveWorkbook.Names.Add Name:="RESISTORS", RefersToR1C1:= _
"=Tabelle1!R1:R65536"
End Sub

danielice
11.07.2006, 09:51
Cells.Select 'alle Zellen markieren
Selection.Copy 'markierung kopieren
Windows("daten.xls").Activate 'andere mappe aktivieren
ActiveSheet.Paste 'auf der aktuellen mappe die kopierten daten einfügen

Das Tabellenblatt kannst Du mit Sheets("Tabelle1").Name = "MeinBlatt" umbennen ...

king78
11.07.2006, 09:55
das jetzt unter Cells.Select?

das makro muss ja komplett in der master datei sein weil die daten.xls ändert sich ja jeden tag


funktioniert so nicht, das wird dann in der daten.xls ausgeführt
(das kopieren)

danielice
11.07.2006, 10:08
?! jetzt versteh' ich nur noch bahnhof

ok, also daten.xls ändert sich jeden Tag.. und von dort aus sollen die Daten ausgelesen werden und in die master.xls kopiert werden ? warum liest denn die master.xls nicht einfach die Daten direkt aus der daten.xls aus ? ;)

king78
11.07.2006, 10:17
jap so wie du es sagst isses richtig
problem war/ist: wo kann ich "nur die daten" auslesen und in die master.xls einfügen?
...sodass die daten.xls sich garnicht mehr öffnen muss.

Petschen
11.07.2006, 12:17
Hallo king78,

Du kannst mit dem Befehl:
ActiveWorkbook.Close SaveChanges:=False

bzw.:
Workbooks("daten.xls").Close SaveChanges:=False

Deine Daten.xls ohne Speicherung von Änderungen (denn die Änderungen sind ja nur in der Master.xls wenn ich Dich richtig verstanden habe...) schliessen.

Alternativ kannst Du die Daten auch übertragen in dem Du die Daten.xls nicht Öffnest, sondern über "GetObject" nur eine Verbindung zu ihr herstellst, also z.B. so:

Set extwb = GetObject("dein Pfad/daten.xls") und dann sprichst Du deine daten.xls immer über die Variable an, also z.B.:

extwb.Sheets(1).[A3].value

Am Ende trennst Du die Verbindung wieder indem Du

Set extwb = Nothing

schreibst.
Das Ganze läuft von der Master.xls aus.

Probiers doch einfach mal aus.

Gruß

Petra

king78
11.07.2006, 12:50
mh danke für die hilfe erstmal aber das ist nu wieder ne ganz neue möglichkeit ô.0
und bissl kompliziert wenn ich ehrlich bin :)

bisher hat es eigentlich ganz gut geklappt, ich brauche halt nur ne erklärung, ...
1: ...wie ich die buchstaben + zahlen aus der daten.xls in die master.xls bekomme ohne dass ich die daten.xls öffne
oder
2: ...wie ich in das makro reinbekomme, dass sich die daten.xls nach ausführung des makros speichert und schliesst.

ich persönlich denke dass die 2te variante besser wäre, weil dann jeden tag mit einer ganz frischen daten.xls, in der die makros schon durchgelaufen sind, gearbeitet werden kann.

Petschen
11.07.2006, 13:16
Hallo king78,

zu der 2. Variante:
Workbooks("daten.xls").Close SaveChanges:=true
das reicht völlig und ist doch nicht kompliziert, oder...??

Gruß

Petra

king78
11.07.2006, 13:38
oh petra, warst ja noch nen tick schneller als ich ô.0
danke für deine hilfe aber das meiste klappt jetzt schon ;)
nur noch die eine kleine sache die unten beschrieben ist

so....an alle die es interessiert:

habe lösung 2 vom #15 gemacht und bin zu folgendem ergebnis gekommen:

habe einfach unter das makro
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
druntergeschrieben, jetzt gehts das.


also die master.xls wird jetzt geöffnet, das makro durchgeführt( =daten.xls wird geöffnet, name wird definiert und daten.xls wird geschlossen)

das problem ist jetzt noch wie ich die master.xls wieder schliessen kann?
hat da jemand nen vorschlag ?

Lumpensammler
11.07.2006, 14:31
Hallo, king78,


Excel schließen:

Application.Quit

Arbeitsmappe schließen:

ThisWorkbook.Close
Gruß
LS

king78
11.07.2006, 15:23
jap sehr gut, vielen dank an alle die mir geholfen haben :)
scheint hier sehr nett zu sein, ich werde auch versuchen in anderen threads zu helfen

see you