Clever-Excel-Forum

Normale Version: Makro speichern unter Dateiname als string speichern und weiterverwenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
Hallo,

versuche es mal mit

Code:
ThisWorkbook.Activate
(24.07.2018, 11:38)Steffl schrieb: [ -> ]Hallo,

versuche es mal mit

Code:
ThisWorkbook.Activate

Hi,

wenn ich ThisWorkbook sage nimmt der doch die aktuell offene oder? Das ist in dem Fall dann das falsche Workbook.
Übergebe den Namen in eine Variable, wenn du die neue Arbeitsmappe öffnest z.B.

Dim WBN as String

Wokbooks.add
WBN= ActiveWorkbook.name

Danach kannst du mit

Workbooks(WBN).Activate 
Diese Arbeitsmappe jederzeit ansprechen!

Und wenn der Name aus einem anderen Makro kommt kann man den Pfad oder den Namen auch zwischenzeitlich in ein Tabellenblatt schreiben lassen! (Vll nicht die eleganteste Lösung aber eine einfache)

Sub Blub()

Workbooks.add
ThisWorkbook.sheets(1).Range("A1").Value=Activeworkbook.name

End Sub

Sub Blub2 ()
Dim WBN as string

WBN= ThisWorkbook.sheets(1).Range("A1"). Value
Workbooks(WBN).Activate
ThisWorkbook.sheets(1).Range("A1"). Clear

End Sub
Hallo,

(24.07.2018, 11:49)itaccrypto schrieb: [ -> ]wenn ich ThisWorkbook sage nimmt der doch die aktuell offene oder? Das ist in dem Fall dann das falsche Workbook.

Nein, ThisWorkbook bezeichnet die Arbeitsmappe in der der Code steht.