2017-04-23 3 views
1

Ich baue ein Formular, das, wenn Sie es füllen, sollte es 2 Dateien als Ausgabe generieren.So speichern Sie ein Blatt in VBA

Um dies zu tun habe ich 2 Blätter im Hintergrund, die ich auffüllen, je nachdem, was der Benutzer eine Taste eingegeben hat, um sie zu speichern (als CSV).

Dies ist der Code der für das Speichern von flächen-

Worksheets("worksheetname").SaveAs Filename:="C:\path" & name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 

Das Problem ist, dass, nachdem der Benutzer den Knopf drückt, dass die Form, die er jetzt füllt ‚als csv gespeichert‘ ist, und xlsm nicht vor wie .

Gibt es eine Möglichkeit, dies zu vermeiden? um die Ausgabe zu erzeugen, ohne das Formular zu beeinflussen?

Danke!

+2

Nicht sicher underastand ich Ihre Frage, die Sie speichern es als '.csv' so ist es nur die Arbeitsblätter zu speichern, ohne die VBA' User_Form's. Wenn Sie die 'User_Form's behalten möchten, müssen Sie sie als' .xlsm' speichern. –

+0

Geben Sie die folgenden Punkte an: Was genau ist der Zustand, mit dem Sie beginnen (alle Daten/Blätter usw.)? Welchen Status möchten Sie erreichen (welche Dateien mit welchen Daten wo in welchem ​​Format gespeichert)? –

+0

Erstellen Sie für jedes neue Arbeitsblatt eine neue Arbeitsmappe, und speichern Sie dann jedes Arbeitsblatt als .csv, wie Sie es gerade tun. Das sollte die Arbeitsmappe mit dem Formular intakt lassen. –

Antwort

3

Um die ursprüngliche Arbeitsmappe intakt zu halten, müssen Sie eine Kopie des Arbeitsblatts forschen, bevor Sie es als CSV speichern. Versuchen Sie folgendes:

Application.DisplayAlerts = False 
Worksheets("worksheetname").copy ' Forks a copy of the sheet in a new, active WB 
With ActiveWorkbook 
    .SaveAs Filename:="C:\Path\" & name & ".csv", FileFormat:=xlCSV, CreateBackup:=False 
    .Close False 
End With 
Application.DisplayAlerts = True 
+1

vielen Dank! –

Verwandte Themen