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, 3841 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 ...

Windows Server
Net use Befehl bricht ohne Ergebnis ab
Frage von GwaihirWindows Server9 Kommentare

Hallo zusammen, ich bin gerade etwas ratlos: Ich habe eine Batchdatei, die über den Taskplaner die Freigabe eines nicht ...

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 ...

Neue Wissensbeiträge
Datenschutz

SiSyPHuS Win10: Analyse der Telemetriekomponenten in Windows 10

Tipp von freesolo vor 13 StundenDatenschutz1 Kommentar

Alle die sich detailliert für die Datensammlung interessieren die unter Windows 10 stattfindet, sollten sich folgende Analyse des BSI ...

Sicherheit
Adminrechte dank Intel-Grafikkarte
Information von DerWoWusste vor 16 StundenSicherheit1 Kommentar

ist das Advisory, welches beschreibt, welche Intel HD Graphics Modelle Sicherheitslücken haben, mit denen sich schwache Nutzer zu Admins ...

Internet

EU Urheberrechtsreform: Eingriff in die Internetkultur

Information von Frank vor 1 TagInternet1 Kommentar

Liebe Besucherin, lieber Besucher, warum erscheint das obere Banner in allen Beiträgen? Aus Protest gegen Teile der geplanten EU-Urheberrechtsreform ...

Windows Server
Windows Backup - FilterManager Event 3
Tipp von NixVerstehen vor 2 TagenWindows Server

Hallo zusammen, ich bin kein gelernter ITler und auch beruflich nicht in dem Feld tätig. Wir setzen in unserem ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Glasfaserkabel verlegen und Anschlüsse setzen
Frage von LLL0rdLAN, WAN, Wireless21 Kommentare

Hallo Leute, ich muss demnächst ein Netzwerkkabel auf einer Länge von ca. 70 Metern verlegen. Das Netzwerkkabel soll dabei ...

Windows Server
Mac Rechner im Windows Netzwerk - was jetzt?
gelöst Frage von Kopfg3ldWindows Server18 Kommentare

Hallo zusammen, ich habe folgende Herausforderungen. Aber erst mal was kurz zum Netzwerk - Windows Server (ältester ist ein ...

Microsoft Office
Sharepoint 2016 mag keine Umlaute in .docx-Titeln
gelöst Frage von DerWoWussteMicrosoft Office14 Kommentare

Moin Kollegen. Nutzt hier jemand Sharepoint? Könnt Ihr, unabhängig von der Sharepointversion, bitte einen Test machen? Ladet ein .docx ...

Basic
VBS soll alle Ordner auswählen, die im Startmenu angezeigt werden
Frage von Senseless-CreatureBasic12 Kommentare

Guten Morgen - gibt es eine Möglichkeit, per VBS das Startmenu in Win10 zu modifizieren? Ich beherrsche VBS mittlerweile ...