Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
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
Makro aus Excel in beliebiger Excel ausführen
23.04.2018 09:54:13
Johannes
Hallo,
ich habe bereits eine Eingabemaske programmiert, in der notwendige Werte enthalten sind. Auch steht das Marko bereits, welches ich verwenden möchte. Mein Problem ist, dass ich dieses Makro gerne in einem sich ständig ändernden Excel ausführen möchte. Dazu habe ich in der Eingabemaske einen "Durchsuchen-Button" programmiert.
Private Sub CommandButtonDurchsuchen_Click()
Dim varDatei As Variant
varDatei = Application.GetOpenFilename()
End Sub
Nun möchte ich, dass Excel in dieser ausgewählten Datei, die sich eben von Woche zu Woche ändert, die Makros ausführt und zudem auch noch darin die Werte aus der Eingabemaske abspeichert.
Hat jemand eine idee, wie ich das sich ändernde Excel richtig ansprechen kann?
Danke
Johannes

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro aus Excel in beliebiger Excel ausführen
23.04.2018 10:02:42
EtoPHG
Hallo Johannes,
Deine Userform und die Codes gehören sinnvollerweise in ein ADD-IN.
D.h. deine existierende Mappe, nach ausgiebigen Tests als ADD-IN abspeichern und anschliessend dieses über EXCEL-Optionen-Add-In installieren.
Die grösste Falle bei Codes für AddIns ist IMHO die korrekte Referenzierung von Mappe (ActiveWorkbook) Tabellenblätter (Activesheet). Dein geposteter Codeschnipsel hilft da überhaupt nichts. Wichtig ist, dass die Mappe geöffnet ist, die richtigen Tabellenblätter enthält und der Code deiner Userform das Lesen, bzw. Schreiben der Werte in diese 'richtigen' Blätter vornimmt.
Gruess Hansueli
Anzeige
AW: Makro aus Excel in beliebiger Excel ausführen
23.04.2018 13:43:24
Johannes
Hallo Hansueli,
vielen Dank für die rasche Antwort.
Das habe ich so implementiert. Nur leider wurde das Add-In dann automatisch bei allen anderen Excels auch ausgeführt. Gibts hierzu einen Trick, wie man das einstellen kann?
Klar gibts den, aber ob das jemand weiß von Euch? :)
Danke und liebe Grüße
Johannes
AW: Makro aus Excel in beliebiger Excel ausführen
23.04.2018 14:48:29
EtoPHG
Hallo Johannes,
Zitat: ... das Add-In dann automatisch bei allen anderen Excels auch ausgeführt
Verstehe ich, und doch nicht! Wenn der Code des Add-In's nur auf bestimmte Arbeitsmappen ausgeführt werden darf, dann muss das natürlich in diesem programmatisch entschieden werden.
Nein eine Einstellung dafür gibt es nicht.
Deine genauen Anforderungen, geschweige denn den Code kenne ich nicht und kann darum auch keinen Rat geben.
Gruess Hansueli
Anzeige
AW: Makro aus Excel in beliebiger Excel ausführen
25.04.2018 08:26:55
Johannes
Hallo zusammen,
sorry wenn ich jetzt nochmal nerve, bin leider ein VBA-Anfänger.
Meine Anforderung ist es, Krankheitstage auszuwerten. Dazu wird einmal wöchentlich aus dem System eine Abfrage gezogen, die leider jedes Mal anders heißt. Diese soll geöffnet werden und dann automatisch folgendes Makro ausführt werden:
Sub Makro1()
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Selection.Insert Shift:=xlToRight
Range("C1").Select
ActiveCell.FormulaR1C1 = "Krank von"
Range("D1").Select
ActiveCell.FormulaR1C1 = "Krank bis"
Range("C2").Select    ActiveCell.FormulaR1C1 = "=--TEXT(LEFT(RC[-1],8),""TT.MM.JJJJ"")"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=--TEXT(RIGHT(RC[-2],8),""TT.MM.JJJJ"")"
Range("C2:D2").Select
Selection.AutoFill Destination:=Range("C2:D100000"), Type:=xlFillDefault
Range("H1").Select
ActiveCell.FormulaR1C1 = "Krankheitstage relevant"
Range("H2").Select
ActiveCell.FormulaR1C1 = _
"=MAX(,NETWORKDAYS(MAX(R5C15,RC[-5]),MIN(R6C15,RC[-4])))"
Range("H2").Select
Selection.AutoFill Destination:=Range("H:H"), Type:=xlFillDefault
Sheets.Add After:=ActiveSheet
Sheets("Abwesenheiten").Select
Columns("A:A").Select
Selection.Copy
Sheets("Tabelle1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("$A$1:$A$100000").RemoveDuplicates Columns:=1, Header:= _
xlYes
Range("B1").Select
ActiveCell.FormulaR1C1 = "Krankheitstage im Zeitraum"
Range("B2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIF(Abwesenheiten!C[-1],Tabelle1!RC[-1],Abwesenheiten!C[6])"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:B100000"), Type:=xlFillDefault
End Sub
Die Datei, bei welcher die Abfrage durchgeführt werden soll hat immer den gleichen Aufbau, die Zellen und Spalten ändern sich also nicht, lediglich der Name wird jedes Mal vom System anders ausgegeben. Für die Eingabemaske hab ich bisher folgendes:
Private Sub CommandButtonAbbrechen_Click()
'Definition Abbrechen-Button
Unload UserForm1
End Sub
'Private Sub CommandButtonDurchsuchen_Click()
'Definition der auszuwählenden Datei
Application.GetOpenFilename
'End Sub
Private Sub CommandButtonÜberprüfen_Click()
'Speichern der Informationen aus Eingabemaske
Dim last As Integer
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ActiveSheet.Cells(5, 13).Value = UserForm1.TextBoxKrankvon
ActiveSheet.Cells(6, 13).Value = UserForm1.TextBoxKrankBis
ActiveSheet.Cells(7, 13).Value = UserForm1.TextBoxWarnungstage
Das obige Makro soll natürlich beim Click auf den Button "Überprüfen" durchlaufen, der Übersicht halber steht es aber separat.
Userbild
Was ich also benötigen würde ist eine Möglichkeit, das Makro in der Datei, die ich durch den Befehl "Application.GetOpenFilename" geöffnet habe, auszuführen, beim nächsten Öffnen der Applikation jedoch ein anderer Dateiname problemlos geöffnet und verwendet werden kann.
Hoffe, das es nun klarer wurde. Sorry für die Verwirrung.
Liebe Grüße
Johannes
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige