Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBA Code bricht bei Befehl Speichern unter ab

Mitglied: Blu3Scr33n

Blu3Scr33n (Level 1) - Jetzt verbinden

24.10.2013, aktualisiert 14:35 Uhr, 3693 Aufrufe, 14 Kommentare

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

01.
Sub ExportCSV()
02.
 
03.
Dim Bereich As Object, Zeile As Object, Zelle As Object
04.
Dim strTemp As String
05.
Dim strDateiname As String
06.
Dim strTrennzeichen As String
07.
Dim strMappenpfad As String
08.
Dim blnAnfuehrungszeichen As Boolean
09.
Dim Speicherpfad As String
10.
Dim Speichername As String
11.
 
12.
 
13.
strMappenpfad = ActiveWorkbook.FullName
14.
 
15.
Speicherpfad = "SPEICHERORT"
16.
 
17.
strDateiname = InputBox("Bitte den Namen der CSV-Datei angeben.", "CSV-Export")
18.
If strDateiname = "" Then Exit Sub
19.
 
20.
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";")
21.
If strTrennzeichen = "" Then Exit Sub
22.
 
23.
Set Bereich = ActiveSheet.UsedRange
24.
 
25.
Speichername = Speicherpfad & strDateiname
26.
 
27.
ActiveWorkbook.SaveAs Filename:=Speichername
28.
 
29.
ChDrive "T"
30.
ChDir "SPEICHERORT"
31.
 
32.
Open strDateiname For Output As #1
33.
 
34.
For Each Zeile In Bereich.Rows
35.
    For Each Zelle In Zeile.Cells
36.
        If blnAnfuehrungszeichen = True Then
37.
            strTemp = strTemp & """" & CStr(Zelle.Text) & """" & strTrennzeichen
38.
        Else
39.
            strTemp = strTemp & CStr(Zelle.Text) & strTrennzeichen
40.
        End If
41.
    Next
42.
    If Right(strTemp, 1) = strTrennzeichen Then strTemp = Left(strTemp, Len(strTemp) - 1)
43.
    Print #1, strTemp
44.
    strTemp = ""
45.
Next
46.
 
47.
  Close #1
48.
 
49.
  Set Bereich = Nothing
50.
  MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
51.
 
52.
End Sub
Kann mir jemand mit dem Code helfen? Ich habe keine Ahnung, warum er abbricht.

Beste Grüße

Blu3Scr33n
Mitglied: 106543
24.10.2013 um 14:24 Uhr
Hi,

mit welchem Laufzeitfehler bricht der Code denn ab ?

Grüße
Exze
Bitte warten ..
Mitglied: derinderinderin
24.10.2013 um 14:27 Uhr
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.
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 14:32 Uhr
Hallo Exze

Laufzeit '70':
Zugriff verweigert

Gruß Blu3Scr33n
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 14:33 Uhr
Hallo derInderInderin,

das hätte ich vielleicht erwähnen sollen. Wo in meinem Code "SPEICHERORT" steht, steht auch ein tatsächlicher Speicherpfad. Den habe ich jetzt nur auf Grund der Anonymisierung "SPEICHERORT" genannt.

Gruß

Blu3Scr33n
Bitte warten ..
Mitglied: 106543
24.10.2013 um 14:40 Uhr
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
Bitte warten ..
Mitglied: derinderinderin
24.10.2013 um 14:41 Uhr
Aah ich verstehe

Ich hab das Ding mal mal mir laufen lassen. Mit Lokalem Laufwerk klappt es.
Hast du dir nochmal die Berechtigungen auf dem Ziellaufwerk angeguckt?
Klappts bei dir auch mit C:\Temp oder ählnlichen?
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 14:43 Uhr
Ich laufe hier auf nem Thin Client. In diesem Zusammenhang gibt es für mich kein Laufwerk C:
Das Laufwerk, wo die CSV gespeichert werden soll ist ein Netzlaufwerk. Für die entsprechenden Pfade habe ich allerdings Zugriffsrechte.
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 14:45 Uhr
Hallo Exze,

1. Die Datei kann noch garnicht geöffnet sein, da er ja aus der XLSM (Excel mit Makro) eine CSV exportieren soll. Diese wird somit erst erstellt.
2. Wie du schon selber sagst, eher unwahrscheinlich. Ich bin Ersteller der Datei und habe auch auf den Dateipfad, wo die Excel liegt Zugriffsrechte.

Gruß

Blu3Scr33n
Bitte warten ..
Mitglied: 106543
24.10.2013 um 14:48 Uhr
Hi,

du schreibst ja
01.
ActiveWorkbook.SaveAs Filename:=Speichername
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
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 14:56 Uhr
Hallo Exze,

die Excel kann danach gerne geschlossen werden. Hauptsache, die CSV wird korrekt und an den korrekten Ort exportiert.
Welchen Befehl müsste ich denn dafür noch einfügen müssen?

Ich entschuldige mich für das eventuelle Code-Wirrwarr. Meine VBA-Kenntnisse sind eher rudimentär.

Grüße

Blu3Scr33n
Bitte warten ..
Mitglied: 106543
24.10.2013 um 15:00 Uhr
Hi,

um komplett Excel zu schließen, bräuchtest du
01.
Application.Quit
ACHTUNG! Das schließt _sämtliche_ Excel-Dateien, die grade offen sind.
Wenn nur das aktuelle Excel-File geschlossen werden soll, solltest du
01.
thisworkbook.Close True
einfügen.
Das "True" am Ende bedeutet, dass die Mappe automatisch beim Beenden gespeichert wird und nicht erst nachgefragt wird.

Grüße
Exze
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 15:12 Uhr
Hy Exze,

Wenn ich
01.
 thisworkbook.close True
in Zeile 31. setze, dann schließt er die Excel und generiert auch ordnungsgemäß die CSV.
Schaue ich dann allerdings in die CSV rein, stehen dort nur Hyroglyphen.

Das muss an dem Codeteil danach liegen, der erst für die Ordnungsgemäße Zuordnung der CSV Einträge zuständig ist.
Hast du diesbezüglich eine Hilfestellung?

Grüße

Blu3Scr33n
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 15:21 Uhr
So...Ich habs gelöst. Auf die nicht schöne aber funktionierende Tour.
Ich habe jetzt einfach ein Makro in Excel aufgezeichnet, dass das Speichern der Datei übernimmt und in den Code mit eingebaut.
Er sieht jetzt folgendermaßen aus:
01.
 Sub ExportCSV()
02.
 
03.
Dim Bereich As Object, Zeile As Object, Zelle As Object
04.
Dim strTemp As String
05.
Dim strDateiname As String
06.
Dim strTrennzeichen As String
07.
Dim strMappenpfad As String
08.
Dim blnAnfuehrungszeichen As Boolean
09.
Dim Speicherpfad As String
10.
Dim Speichername As String
11.
 
12.
 
13.
strMappenpfad = ActiveWorkbook.FullName
14.
 
15.
Speicherpfad = "T:\OTC_Derivate\20_Dokumentation\07_Trade_Repository\EMIR\02 Mapping\Meldevarianten\BTG\Testfiles\"
16.
 
17.
strDateiname = InputBox("Bitte den Namen der CSV-Datei angeben.", "CSV-Export")
18.
If strDateiname = "" Then Exit Sub
19.
 
20.
strTrennzeichen = InputBox("Welches Trennzeichen soll verwendet werden?", "CSV-Export", ";")
21.
If strTrennzeichen = "" Then Exit Sub
22.
 
23.
Set Bereich = ActiveSheet.UsedRange
24.
 
25.
Speichername = Speicherpfad & strDateiname
26.
 
27.
 
28.
   With ActiveWorkbook.WebOptions
29.
        .RelyOnCSS = True
30.
        .OrganizeInFolder = True
31.
        .UseLongFileNames = True
32.
        .DownloadComponents = False
33.
        .RelyOnVML = False
34.
        .AllowPNG = True
35.
        .ScreenSize = msoScreenSize1024x768
36.
        .PixelsPerInch = 96
37.
        .Encoding = msoEncodingUTF8
38.
    End With
39.
    With Application.DefaultWebOptions
40.
        .SaveHiddenData = True
41.
        .LoadPictures = True
42.
        .UpdateLinksOnSave = True
43.
        .CheckIfOfficeIsHTMLEditor = True
44.
        .AlwaysSaveInDefaultEncoding = False
45.
        .SaveNewWebPagesAsWebArchives = True
46.
    End With
47.
    ActiveWorkbook.SaveAs Filename:=Speichername _
48.
        , FileFormat:=xlCSV, CreateBackup:=False
49.
 
50.
  Set Bereich = Nothing
51.
  MsgBox "Export erfolgreich. Datei wurde exportiert nach" & vbCrLf & strDateiname
52.
 
53.
End Sub
Bitte warten ..
Mitglied: Blu3Scr33n
24.10.2013 um 15:22 Uhr
Falls irgendwem eine schönere Codevariante einfällt, nehme ich auch gerne diese.
Ich bedanke mich für die kompetente Hilfe und setze diesen Thread auf gelöst.

Beste Grüße

Blu3Scr33n
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
VBA Shell Befehl asynchron
gelöst Frage von 125218Microsoft Office1 Kommentar

Guten Abend, ich bin im Moment dran ein Makro zu schreiben, dass eine Batch-Datei ausführen soll. Diese Batch-Datei durchsucht ...

Router & Routing
Routing bricht zusammen
gelöst Frage von 127944Router & Routing57 Kommentare

Ich beschäftige mich nun seit diversen Tagen mit einem Problem, bei dem ich einfach nicht weiter komme. Aus mir ...

Windows Netzwerk
Kopiervorgang bricht ab !!!
gelöst Frage von alexlazaWindows Netzwerk6 Kommentare

Hallo Leute, im Einsatz ist ein HP ZBook 17 G4 mit WIN10 Pro. Seit neuestem bricht jeglicher kopiervorgang vom ...

Datenbanken
Syntaxfehler VBA
gelöst Frage von Dr.CornwallisDatenbanken6 Kommentare

Liebe Gemeinde, ich bräuchte Hilfe beim folgenden VBA Code(für Button in Access): Könnte mir bitte jemand erklären was ich ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 1 TagiOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 2 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 4 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 4 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Windows Netzwerk
Kerio. Kann keine Mails empfangen aber senden. Wer ist schuld. Kerio oder Windows domäne?
gelöst Frage von frosch2Windows Netzwerk33 Kommentare

Hallo, es existiert ein Problem bei uns mit dem mailen. Alle bestehenden Nutzer können mailen. Raus wie rein. Neuen ...

LAN, WAN, Wireless
WLAN und Ausmessung - Eine Glaubensfrage?
Frage von ptr2brainLAN, WAN, Wireless23 Kommentare

Liebe Experten, als Sys-Admin habe ich mir schon öfter die Frage gestellt, ob es sich beim Thema WLAN und ...

Hosting & Housing
VMware VM mit über 1TB RAM für S4HANA
Frage von Leo-leHosting & Housing22 Kommentare

Hallo zusammen, wer hat Erfahrng und kann mir einen Tipp zum sizing von S4HANA Systemen geben? Wir möchten, zunächst ...

Virtualisierung
Gebrauchte Server Hardware als Virtualisierungs-"Spielwiese"?
Frage von NixVerstehenVirtualisierung19 Kommentare

Einen wunderschönen guten Morgen zusammen, ich möchte mich gerne etwas tiefer mit dem Thema Virtualisierung beschäftigen und dazu ein ...