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!
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 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • n8lauscher
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
Top


Gehe zu:


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