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.

VBA - speichern als CSV - globales Makro
#1
Hallo Zusammen,

ich habe folgendes Makro - welches mir das aktuelle Arbeitsblatt als CSV-Datei abspeichert. 
jetzt möchte ich, dass ich dieses Makro als globales Makro nutzen kann.

Code:
Sub CSV_speichern()
'
' CSV_Projekte Makro
'
' Tastenkombination: Strg+Umschalt+Q
'
sheet_name = ActiveSheet.Name
' MsgBox "Arbeitmappen - Name lautet " & sheet_name

Dim CSVBook As Workbook
Set CSVBook = Workbooks.Add

ThisWorkbook.Sheets(sheet_name).Copy Before:=CSVBook.Sheets(1)
CSVBook.SaveAs Filename:="D:\Dokumente\CSV\" & sheet_name & ".csv" _
        , FileFormat:=xlCSVUTF8, CreateBackup:=False, local:=True
CSVBook.Close
End Sub

Dieses Makro speichert das aktuell geöffnete Arbeitsblat als CSV - Datei. 
Das funktioniert auch super. 

ABER - ich möchte dies global nutzen können.
Dabei gibt es folgende Punkte zu beachten:

Filename:="D:\Dokumente\CSV\
soll variable sein!

Ich möchte den Dateispeicherort anhand einer Konstanten definieren können.
d.h. ich möchte anhand des Arbeitsblattnamens immer den Speicherort vorgeben können.
das ganze soll dann als eine Konstante definiert werden. 

wenn Arbeitblattname = blogs
dann Filename:="D:\Dokumente\Blogs\CSV\

wenn Arbeitblattname = beispiel1
dann Filename:="D:\Dokumente\beispiele\

wenn Arbeitblattname = beispiel2
dann Filename:="D:\Dokumente\noch_ein_beispiele\

weiterhin möchte ich den Speichertyp des Arbeitsblattes per konstante definieren können:

wenn Arbeitblattname = blogs
dann FileFormat:=xlCSVUTF8

wenn Arbeitblattname = beispiel1
dann FileFormat:=xlCSV

wenn Arbeitblattname = beispiel2
dann FileFormat:=xlCSVUTF8



Wer kann mir hier weiterhelfen? Das makro soll global gültig sein und immer den Arbeitsblattnamen prüfen und dann definieren wo und in welchem Format das aktuell geöffnete Dokument gespeichert werden soll. 




Ich bitte um Rückmeldung.
Vielen Dank!
Antwortento top
#2
Hallo,

vielleicht so:
Sub CSV_speichern()
'
' CSV_Projekte Makro
'
' Tastenkombination: Strg+Umschalt+Q
'
Dim strBlattname As String
Dim strPfad As String
Dim lngFF As Long

With ActiveSheet
strBlattname = .Name
Select Case strBlattname
Case "blogs"
strPfad = "D:\Dokumente\Blogs\CSV\"
lngFF = xlCSVUTF8
Case "beispiel1"
strPfad = "D:\Dokumente\beispiele\"
lngFF = xlCSV
Case "beispiel2"
strPfad = "D:\Dokumente\noch_ein_beispiele\"
lngFF = xlCSVUTF8
Case Else
Exit Sub
End Select
.Copy
End With
ActiveWorkbook.SaveAs Filename:=strPfad & strBlattname & ".csv", _
FileFormat:=lngFF, CreateBackup:=False, local:=True
ActiveWorkbook.Close False
End Sub
Gruß Uwe
[-] Folgende(r) 1 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • n8lauscher
Antwortento top
#3
Hallo Kuwer,

vielen Dank für Dein Beispiel!
Es funktioniert! mit der "CASE"-Abfrage super!


Nur leider bekomme ich es noch nicht hin, dass es global funktioniert und ich es für jede Arbeitsmappe aktiviert bekomme. 
Hier bin ich gerade mit Sabina in einem anderen Thema am schreiben:
https://www.clever-excel-forum.de/thread-19104.html
Antwortento top


Gehe zu:


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