VBA Code bricht bei Befehl Speichern unter ab
Hallo liebe Administratoren,
ich habe eine Excel. Diese soll per VBA in eine CSV exportiert werden und an einen bestimmten Ort X abgelegt werden. Für den Export habe ich mir hier CSV-Export Skript ein entsprechendes Makro besorgt.
Das Makro funktioniert, wenn ich nur den Export vornehmen möchte. Füge ich allerdings den "Speichern unter" Befehl hinzu, so bricht er ab in Zeile 32.
Im Code steht "SPEICHERORT" stellvertretend für den Speicherpfad. Diesen habe ich für dieses Forum allerdings anonymisiert
Kann mir jemand mit dem Code helfen? Ich habe keine Ahnung, warum er abbricht.
Beste Grüße
Blu3Scr33n
ich habe eine Excel. Diese soll per VBA in eine CSV exportiert werden und an einen bestimmten Ort X abgelegt werden. Für den Export habe ich mir hier CSV-Export Skript ein entsprechendes Makro besorgt.
Das Makro funktioniert, wenn ich nur den Export vornehmen möchte. Füge ich allerdings den "Speichern unter" Befehl hinzu, so bricht er ab in Zeile 32.
Im Code steht "SPEICHERORT" stellvertretend für den Speicherpfad. Diesen habe ich für dieses Forum allerdings anonymisiert
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
Dim Speicherpfad As String
Dim Speichername As String
strMappenpfad = ActiveWorkbook.FullName
Speicherpfad = "SPEICHERORT"
strDateiname = InputBox("Bitte den Namen der CSV-Datei angeben.", "CSV-Export")
If strDateiname = "" Then Exit Sub
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";")
If strTrennzeichen = "" Then Exit Sub
Set Bereich = ActiveSheet.UsedRange
Speichername = Speicherpfad & strDateiname
ActiveWorkbook.SaveAs Filename:=Speichername
ChDrive "T"
ChDir "SPEICHERORT"
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
End Sub
Kann mir jemand mit dem Code helfen? Ich habe keine Ahnung, warum er abbricht.
Beste Grüße
Blu3Scr33n
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 220330
Url: https://administrator.de/contentid/220330
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
14 Kommentare
Neuester Kommentar
Hi,
mit welchem Laufzeitfehler bricht der Code denn ab ?
Grüße
Exze
mit welchem Laufzeitfehler bricht der Code denn ab ?
Grüße
Exze
Zeile 15 sowie Zeile 30 kommen mir seltsam vor.
"SPEICHERORT" ist kein Pfad... bzw. du hinterlegst im Quellcode keinen.
Der Variable Speicherpfad weist du den Wert "SPEICHERORT" zu.
Meines erachtens musst du in Zeile 15:
Speicherpfad = "SPEICHERORT" einen gültigen Pfad eintragen z.B.
Speicherpfad = "C:\Temp"
und dann in Zeile 30
statt
ChDir "SPEICHERORT"
dann
ChDir Speicherpfad
Frag mich nur warum er dann bei 32 stehenbleibt, nicht schon bei 30.
einfügen.
"SPEICHERORT" ist kein Pfad... bzw. du hinterlegst im Quellcode keinen.
Der Variable Speicherpfad weist du den Wert "SPEICHERORT" zu.
Meines erachtens musst du in Zeile 15:
Speicherpfad = "SPEICHERORT" einen gültigen Pfad eintragen z.B.
Speicherpfad = "C:\Temp"
und dann in Zeile 30
statt
ChDir "SPEICHERORT"
dann
ChDir Speicherpfad
Frag mich nur warum er dann bei 32 stehenbleibt, nicht schon bei 30.
einfügen.
Hi,
"Zugriff verweigert" ...
da gibt´s 2 plausible Erklärungen.
1. die Datei ist bereits geöffnet und kann nicht nochmal geöffnet werden, wegen Schreibschutz
2. der User, der das Tool ausführt hat keine Berechtigung, die Datei zu öffnen (unwahrscheinlich, ich weiß ...)
Grüße
Exze
"Zugriff verweigert" ...
da gibt´s 2 plausible Erklärungen.
1. die Datei ist bereits geöffnet und kann nicht nochmal geöffnet werden, wegen Schreibschutz
2. der User, der das Tool ausführt hat keine Berechtigung, die Datei zu öffnen (unwahrscheinlich, ich weiß ...)
Grüße
Exze
Hi,
du schreibst ja
das speichert zwar die Excel-Session, beendet diese aber nicht.
Ich denke laut deinem Code du willst dann glaube ich ín die selbe Excel-Datei schreiben, was natürlich so nicht möglich ist, da sie noch geöffnet ist.
Falls ich falsch liege sag Bescheid, ich blick bei deinem Code noch nicht ganz durch.
Grüße
Exze
du schreibst ja
ActiveWorkbook.SaveAs Filename:=Speichername
Ich denke laut deinem Code du willst dann glaube ich ín die selbe Excel-Datei schreiben, was natürlich so nicht möglich ist, da sie noch geöffnet ist.
Falls ich falsch liege sag Bescheid, ich blick bei deinem Code noch nicht ganz durch.
Grüße
Exze
Hi,
um komplett Excel zu schließen, bräuchtest du
ACHTUNG! Das schließt _sämtliche_ Excel-Dateien, die grade offen sind.
Wenn nur das aktuelle Excel-File geschlossen werden soll, solltest du
einfügen.
Das "True" am Ende bedeutet, dass die Mappe automatisch beim Beenden gespeichert wird und nicht erst nachgefragt wird.
Grüße
Exze
um komplett Excel zu schließen, bräuchtest du
Application.Quit
Wenn nur das aktuelle Excel-File geschlossen werden soll, solltest du
thisworkbook.Close True
Das "True" am Ende bedeutet, dass die Mappe automatisch beim Beenden gespeichert wird und nicht erst nachgefragt wird.
Grüße
Exze