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, 3621 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
Mit VBA-Code ein Verzeichnis erstellen
gelöst Frage von DockMaster-deMicrosoft2 Kommentare

Hallo, ich habe mit MS Access 2010 eine Datenbank und ein Frontend. Daten werden über ein Formular eingegeben. Ich ...

Basic
Formeln in VBA Code einfügen
gelöst Frage von Dett18Basic6 Kommentare

Hallo liebe Excel VBA Gemeinde, ich habe hier eine Buchungsdatei, die mit Daten einer Rechnung gefüllt wird. Da ich ...

Microsoft Office
Kreuztabelle Access + VBA Code
Frage von Dr.CornwallisMicrosoft Office7 Kommentare

Hallo zusammen, ich habe eine Kreuztabelle aus einer Query erzeugt, aus dieser entsteht wiederum ein Bericht, nun habe ich ...

VB for Applications
Excel VBA Code
gelöst Frage von specialuserVB for Applications2 Kommentare

Hallo zusammen, Hab hier einen Button in einer Excel mit Makros erstellt. Der Button hat die Funktion aus der ...

Neue Wissensbeiträge
Ausbildung

Linux-Ausstieg in Niedersachsen - Windows statt Bugfix

Information von StefanKittel vor 2 TagenAusbildung33 Kommentare

Sind ja nur Steuergelder

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 4 TagenSpeicherkarten4 Kommentare

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 4 TagenSicherheit1 Kommentar

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 4 TagenHardware3 Kommentare

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Passwortwechsel Zeitpunkt festlegen
Frage von Looser27Windows Userverwaltung27 Kommentare

Guten Morgen liebe Kolleginnen und Kollegen, da es eine Userin in meinem Urlaub geschafft hat, sich vom AD vollständig ...

Windows 10
Windows 10 Spracherkennung - Eure Meinungen?
Frage von honeybeeWindows 1014 Kommentare

Hallo, wollte heute mal aus Neugier die Spracherkennung unter Windows 10 (Version 1803) ausprobieren und war mehr wie enttäuscht. ...

Switche und Hubs
POE-Switche
gelöst Frage von MiStSwitche und Hubs13 Kommentare

Guten Morgen, ich überlege ob ich in unserem Netzwerk die aktuellen Switche (D-LINK DGS-1210-28) durch PoE-Switche ersetzen soll. Der ...

Windows Server
Zertifikat RemoteDesktop hinterlegen
gelöst Frage von Green14Windows Server12 Kommentare

Hallo zusammen. ich habe mehrere Server (WinSrv 2016). Die Server sind in keiner Domäne und keine Terminalserver. Ich verbinde ...