2016-11-01 2 views
0

Ich schreibe ein Stück Code in Excel VBA, in dem ich ein Makro erstellen musste, mit dem Benutzer auf die ActiveX-Schaltfläche als Ergebnis der Datei klicken kann dann an einem bestimmten Ort gespeichert. Sobald diese neue Datei erstellt wurde, wollte ich so programmieren, dass die neue Datei (die erfolgreich am alternativen angegebenen Speicherort speichert) nicht über die ActiveX-Befehlsschaltfläche verfügt. Sobald die Schaltfläche aus der Originaldatei geklickt wurde, wollte ich die Masterdatei irgendwie schließen und die neu gespeicherte Datei automatisch öffnen. Kann mir bitte jemand helfen?Excel VBA-Code - So rufen Sie bestimmte Aktionen auf Dateien erstellt

-Code bisher:

Sub CommandButton1_Click() 

    ActiveSheet.Copy 
    Dim SaveName As String 
    SaveName = ActiveSheet.Range("C1").Text 
    With ActiveWorkbook 
    .SaveAs "File path Specified" & _ 
    SaveName & ".xls" 
    .Close 0 
    End With 

End Sub 

Antwort

0

Meine erste Lösung (je nachdem, was Sie wirklich brauchen, zu tun) ist die folgende:

Zum einen müssen Sie dies:

Me.SaveCopyAs "<full_Path>" 

See mehr dazu hier: https://msdn.microsoft.com/en-us/library/office/ff835014.aspx

Dies wird eine Kopie des fi erstellen le zu dem angegebenen Pfad mit dem von Ihnen gewünschten Namen. Bevor Sie das tun, können Sie Ihre Schaltfläche ausblenden und Speichern als Kopie verwenden, um sie mit der ausgeblendeten Schaltfläche zu speichern.

Schließlich, wenn Sie das Original schließen und die Kopie öffnen möchten, dann müssen Sie der Kopie einen anderen Namen geben. Öffnen Sie dann die neue Datei und schließen Sie das Original.

sollte Ihr Code ähnlich aussehen:

Sub CommandButton1_Click() 
    ActiveSheet.Copy 
    Dim SaveName As String 
    SaveName = ActiveSheet.Range("C1").Text 
    With ActiveWorkbook 
     .Worksheets("<your_worksheet>").CommandButton1.visible = False 
     .SaveCopyAs "File path Specified" & SaveName & ".xls" 
    End With 
    Workbooks.Open ("File path Specified" & SaveName & ".xls") 
    Workbooks("<Original_name.xlsm>").close False 
End Sub 

Eine andere Lösung, die Arbeitsmappe mit SaveAs gespart werden könnte. Vorher das Original speichern. Verstecken Sie den Knopf. Und saveas schließt das Original und öffnet automatisch das neue.

Der Code sollte so ähnlich aussehen:

Sub CommandButton1_Click() 
    ActiveSheet.Copy 
    Dim SaveName As String 
    SaveName = ActiveSheet.Range("C1").Text 
    With ActiveWorkbook 
     .Save 
     .Worksheets("<your_worksheet>").CommandButton1.visible = False 
     .SaveAs "File path Specified" & SaveName & ".xls" 
    End With 
End Sub 
+0

Hallo Blenikos. Danke für deine Antwort. Wenn ich dies verwende, gibt die Zeile mit .CommandButton1.Visible = False einen Fehler zurück, der besagt, dass Objekt diese Eigenschaft oder Methode nicht unterstützt? – Syed

+0

Ich habe den Code nicht getestet, daher gibt es einige Fehler. Ich würde Ihre Excel-Datei benötigen, um es zu testen. Allerdings habe ich meine aktuelle Antwort bearbeitet und jetzt sollte es funktionieren. Bitte lass es mich wissen, wenn es so ist! – Blenikos

+0

Hi Blenikos, auf der Seite, wo wir .Worksheets ("") muss ich meinen Speicherort und Dateinamen schreiben? Oder nur der Name des Blattes? – Syed

Verwandte Themen