Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro speichern unter Dateiname als string speichern und weiterverwenden
#1
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
Antworten Top
#2
Hallo,

versuche es mal mit

Code:
ThisWorkbook.Activate
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
(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.
Antworten Top
#4
Ü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
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#5
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.
Gruß Stefan
Win 10 / Office 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste