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.
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