24.07.2018, 11:58
Hallo Zusammen,
ich beschäftige mich seit ein paar Tagen mit Excel Makros und bin dabei meine eigene makro Datei zu erstellen.
Ich besitze folgende zwei Codes. Der erste Code soll die Datei "speichern unter" und der zweite Code soll Datei öffnen, Daten kopieren, einfügen und formatieren etc.
Mein Problem ist, dass beim zweiten Code die Zeile Windows("AuswertungMakros V2.xlsm").Activate drin steht und somit der makro auf den Dateinamen zurückgreift. Der Punkt ist, wenn aber beim ersten Makro Code die Datei unter einem anderen Namen gespeichert wird, ändert sich somit der Dateiname und der zweite Makro kann nicht mehr auf die Datei zurückgreifen. Was kann ich machen, dass dieser Bereich dynamisch bleibt?
Sub Makro1()
'
' Makro1 Makro
'
'
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Datei speichern"
.InitialFileName = Range("B47")
.ButtonName = "Jetzt speichern"
.Show
.FilterIndex = 2 'xlm voreinstellung bei 2007
.Execute
End With
End Sub
___________________________________________________________________
Sub Makro4()
'
' Makro4 Makro
'
Dim strDatei, wks As Worksheet
strDatei = Application.GetOpenFilename
If strDatei <> False Then
Set wks = Workbooks.Open(strDatei).Sheets(1)
Else
Exit Sub
End If
'hier dann die Daten kopieren
'und die Datei wieder schließen
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("AuswertungMakros V2.xlsm").Activate
Sheets("Quelldaten").Select
Range("A1").Select
ActiveSheet.Paste
Range("E1").Select
Application.CutCopyMode = False
Selection.Copy
Range("AF1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Anlage-Datum JJMM"
Range("AF2").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-27],5)"
Range("AF2").Select
Selection.AutoFill Destination:=Range("AF2:AF34922")
Range("AF2:AF34922").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A2").Select
Sheets("Titelblatt").Select
Range("A8").Select
wks.Parent.Close False
Set wks = Nothing
Sheets("Fehlerart Chart").Select
ActiveWorkbook.RefreshAll
Sheets("Titelblatt").Select
End Sub
ich beschäftige mich seit ein paar Tagen mit Excel Makros und bin dabei meine eigene makro Datei zu erstellen.
Ich besitze folgende zwei Codes. Der erste Code soll die Datei "speichern unter" und der zweite Code soll Datei öffnen, Daten kopieren, einfügen und formatieren etc.
Mein Problem ist, dass beim zweiten Code die Zeile Windows("AuswertungMakros V2.xlsm").Activate drin steht und somit der makro auf den Dateinamen zurückgreift. Der Punkt ist, wenn aber beim ersten Makro Code die Datei unter einem anderen Namen gespeichert wird, ändert sich somit der Dateiname und der zweite Makro kann nicht mehr auf die Datei zurückgreifen. Was kann ich machen, dass dieser Bereich dynamisch bleibt?
Sub Makro1()
'
' Makro1 Makro
'
'
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Datei speichern"
.InitialFileName = Range("B47")
.ButtonName = "Jetzt speichern"
.Show
.FilterIndex = 2 'xlm voreinstellung bei 2007
.Execute
End With
End Sub
___________________________________________________________________
Sub Makro4()
'
' Makro4 Makro
'
Dim strDatei, wks As Worksheet
strDatei = Application.GetOpenFilename
If strDatei <> False Then
Set wks = Workbooks.Open(strDatei).Sheets(1)
Else
Exit Sub
End If
'hier dann die Daten kopieren
'und die Datei wieder schließen
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("AuswertungMakros V2.xlsm").Activate
Sheets("Quelldaten").Select
Range("A1").Select
ActiveSheet.Paste
Range("E1").Select
Application.CutCopyMode = False
Selection.Copy
Range("AF1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Anlage-Datum JJMM"
Range("AF2").Select
ActiveCell.FormulaR1C1 = "=LEFT(RC[-27],5)"
Range("AF2").Select
Selection.AutoFill Destination:=Range("AF2:AF34922")
Range("AF2:AF34922").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("1:1").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A2").Select
Sheets("Titelblatt").Select
Range("A8").Select
wks.Parent.Close False
Set wks = Nothing
Sheets("Fehlerart Chart").Select
ActiveWorkbook.RefreshAll
Sheets("Titelblatt").Select
End Sub