ich habe folgende 2 Probleme:
1. Wie kann man aus einem Tabellenblattname nur die letzten Leerzeichen im Tabellenblattname entfernen? Bisher entfernt er bei mir auch diejenigen im Namen mit.
Also zum Beispiel: "Schwarzer Stein " wird zu "SchwarzerStein"
Mein bisheriger Code sieht folgender Maßen aus:
Sub leerzeichen_entfernen()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Name = Replace(ws.Name, " ", "")
End Sub
Am Ende löscht er schon die Leerzeichen, aber halt auch das zwischen den Wörtern, was ich aber vermeiden möchte.
Anmerkung: Im Tabellenblattname muss das Leerzeichen zwischen den zwei Wörtern erhalten bleiben, aber halt die hinteren sollen gelöscht werden. Ich weiß das es ohne Leerzeichen im Tabellenblattnamen leichter wäre, aber es muss doch auch mit Leerzeichen im Tabellenblattnamen gehen, das er nur die falschen Leerzeichen dahinter entfernt?
2. Spaltenbreite in CSV-Exportdatei automatisieren
Folgenden Code habe ich getestet, leicht abgewandelt von:
Link: https://lexa-it.de/2013/03/ein-kleines-excel-makro-fuer-den-csv-export-code-tipp/
Anmerkung Man gibt statt xlsm als Dateiendung csv ein.
Link zu Datei: https://www.herber.de/bbs/user/120256.xlsm
Sub ExportCSV()
Dim Bereich As Object, Zeile As Object, Zelle As Object
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim strMappenpfad As String
Dim blnAnfuehrungszeichen As Boolean
strMappenpfad = ActiveWorkbook.FullName
strDateiname = InputBox("Bitte den Namen der CSV-Datei angeben.", "CSV-Export", strMappenpfad)
If strDateiname = "" Then Exit Sub
'strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ",")
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";")
If strTrennzeichen = "" Then Exit Sub
'If MsgBox("Sollen die Werte in Anführungszeichen exportiert werden?", vbQuestion + vbYesNo, " _
CSV-Export") = vbYes Then
' blnAnfuehrungszeichen = True
'Else
' blnAnfuehrungszeichen = False
'End If
Set Bereich = ActiveSheet.UsedRange
Open strDateiname For Output As #1
For Each Zeile In Bereich.Rows
For Each Zelle In Zeile.Cells
If blnAnfuehrungszeichen = True Then
strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
Else
strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
End If
Next
If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
Print #1, strTemp
strTemp = ""
Next
Close #1
Set Bereich = Nothing
MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
ActiveSheet.UsedRange.EntireColumn.AutoFit 'funktioniert nicht
End Sub
Ich hab was mit dem Befehl
DoCmd.OutputTo
gelesen, ist aber wohl nur für VB und nicht VBA.
Ich hatte es dann mit ActiveSheet.UsedRange.EntireColumn.AutoFit probiert, aber dieses EntireColumn.AutoFit gilt scheinbar nur für Formatierungen in Excel Sheets, nicht aber für CSV-Dateien oder?
Hat jemand eine Idee wie man den oberen Code so abändern kann, das wenn man die CSV Datei öffnet man dann nicht diese #### in den Spalten drin stehen hat, sondern das ich die Spaltenbreite automatisch anpasst bei der Ausgabe CSV-Datei?
Hoffe mir kann da jemand helfen bei den zwei Problemen.
Beste Grüße
Markus