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

Mittels VBA Makro Excel Zellen auslesen und diese in eine CSV Datei exportieren

Frage Entwicklung VB for Applications

Mitglied: windowskid

windowskid (Level 1) - Jetzt verbinden

05.06.2014 um 15:47 Uhr, 6633 Aufrufe, 3 Kommentare, 1 Danke

Hallo zusammen

ich möchte gerne ein Makro schreiben, welches eine Zeile auf Inhalt überprüft und falls etwas drin steht, dass dann ein bestimmter Bereich (z. B. A1:D5) in eine CSV Datei exportiert wird. Bevor die CSV Datei gespeichert wird sollte es noch möglich sein den Dateinamen anzupassen, falls man dies möchte.

Könnt ihr mir vllt. einige Tipps sagen oder wie ich am besten, mit welcher Methode beginnen sollte.

Danke im Voraus!

LG
winkid
Mitglied: colinardo
LÖSUNG 05.06.2014, aktualisiert 09.07.2014
Hallo windowskid,
habe hier schon des öfteren dieses Thema behandelt, leider hat der jeweilige User alle seine Beiträge löschen lassen und somit sind diese Beiträge leider weg .(hoffe du machst das nicht auch ). Deswegen hier nochmal der entsprechende Code.

Das gewünschte kannst du hiermit machen: (Kommentare für die Anpassung an deine Zellen stehen im Code)
Zum starten muss die Prozedur TestRange ausgeführt werden.
01.
Sub TestRange() 
02.
    Dim ws As Worksheet, fd As FileDialog, rngTest As Range, rngExport As Range, fltr As FileDialogFilter 
03.
    'Worksheet auf dem die Daten stehen 
04.
    Set ws = Worksheets(1) 
05.
    'Zelle die auf Inhalt überprüft werden soll 
06.
    Set rngTest = ws.Range("A1") 
07.
    'Bereich der exportiert wird 
08.
    Set rngExport = ws.Range("A1:D5") 
09.
    If rngTest.Text <> "" Then 
10.
        Set fd = Application.FileDialog(msoFileDialogSaveAs) 
11.
        With fd 
12.
            .Title = "Wählen sie einen Namen unter der die CSV-Datei gespeichert werden soll" 
13.
            'Filterindex für CSV-Dateien ermitteln 
14.
            For i = 1 To .Filters.Count 
15.
                If .Filters(i).Extensions = "*.csv" Then 
16.
                    .FilterIndex = i 
17.
                    Exit For 
18.
                End If 
19.
            Next 
20.
            'Wenn OK geklickt wurde starte Export 
21.
            If .Show = True Then 
22.
                ExportRangeAsCSV rngExport, ";", .SelectedItems(1) 
23.
            End If 
24.
        End With 
25.
    End If 
26.
End Sub 
27.
 
28.
'Prozedur für den Export eines Ranges in eine CSV-Datei  
29.
Sub ExportRangeAsCSV(ByVal rng As Range, delim As String, filepath As String) 
30.
    Dim arr As Variant, line As String, csvContent As String, fso As Object, csvFile As Object 
31.
    Set fso = CreateObject("Scripting.FileSystemObject") 
32.
    Set csvFile = fso.OpenTextFile(filepath, 2, True) 
33.
    arr = rng.Value 
34.
    If IsArray(arr) Then 
35.
        For r = 1 To UBound(arr, 1) 
36.
            line = "" 
37.
            For c = 1 To UBound(arr, 2) 
38.
                If c < UBound(arr, 2) Then 
39.
                    line = line & """" & arr(r, c) & """" & delim 
40.
                Else 
41.
                    line = line & """" & arr(r, c) & """" 
42.
                End If 
43.
            Next 
44.
            csvContent = csvContent & line & vbNewLine 
45.
        Next 
46.
        csvFile.Write (csvContent) 
47.
        csvFile.Close 
48.
    Else 
49.
        MsgBox "Bereich besteht nur aus einer Zelle!", vbExclamation 
50.
    End If 
51.
    Set fso = Nothing 
52.
    Set csvFile = Nothing 
53.
End Sub
Eine Demo für den Im- und Export von Excel-Ranges kannst du dir auch in diesem Demo-Sheet anschauen)

Grüße Uwe
Bitte warten ..
Mitglied: windowskid
09.07.2014, aktualisiert um 14:46 Uhr
Bitte warten ..
Mitglied: Joerg18470
10.08.2014 um 16:37 Uhr
Hallo colinardo,
zuerst zu deiner Befürchtung das ich das wieder löschen könnte. Du kannst dir sicher sein das von mir nichts gelöscht wird, was irgendwie anderen noch zum Nutzen sein kann schließlich muß man ja heut zu Tage froh sein, wenn sich in der Müllhalde "Internet" noch solche Hoffnungsschimmer wie dieses respektvolle und vor allem Wissen vermittelnde Forum gibt. Leider gibt es diese Art Foren nur noch sehr selten, also müssen wir das auch erhalten !

Deine Lösung ist eine ganz fantastische Lösung wenn man mit externen Dateien arbeiten möchte. Ich habe nur eine Mappe mit immer mehr werdenden Blättern. Das aktuelle ist immer sichtbar , ältere hingegen werden automatisch ausgeblendet. Es gibt einen Archivbutton der mir die versteckten Reiter wieder anzeigt und so ist es gut. Jedoch möchte ich genau aus diesen automatisch generierten Blättern gewisse Zellen in ein anderes Blatt schreiben lassen. Eben so eine Art automatischer Bezug der Zellen. Wenn ich nun mein nächstes Aufmaß schreiben möchte generiere ich mir ein neues Blatt via Button und dieses bekommt automatisch einen neuen Namen der da z.B. heißt : "3.Aufmaß - 10.08.2014". Trage ich da z.B. in B2 etwas ein kann das ja nicht von dem fest eingerichteten Blatt übernommen werden, da es noch keinen Bezug auf dieses Blatt gibt. ( es hat einen vorher nicht bekannten Namen um diesen bei den Bezügen berücksichtigen zu können)
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Zellen aus anderer Excel-Mappe mit vba auslesen
gelöst Frage von speedy132VB for Applications3 Kommentare

Hallo zusammen, Ich habe eine Arbeitsmappe in der ich Werte aus einer anderen geschlossenen Arbeitsmappe auslesen möchte. Das ganze ...

VB for Applications
Excel Makro zum Suchen von Spalten und exportieren in CSV
Frage von RaptoxVB for Applications3 Kommentare

Hallo Zusammen Ich bin nun seit längerem daran beschäftigt in Excel 2013 ein Makro zu basteln, welches folgendes erledigt: ...

Microsoft Office
Excel VBA Makro, WENN Zellenwert, dann Zellen verbinden
gelöst Frage von firelessMicrosoft Office6 Kommentare

Hallo, ich verzweilfe an einem Makro Ich will folgendes machen Per Drop-Down-Menü kann man auswählen: "Arbeitszeit" oder "Materialkosten" Wenn ...

Microsoft Office
Alle CSV-Dateien in einem Ordner mit einem VBA Makro einlesen - Datumsformat weg??
gelöst Frage von br-mv2014Microsoft Office9 Kommentare

Hallo allerseits, ich bin neu hier, versuche mich nur gelegentlich in vba-progrämmchen und war erfreut hier unter "Alle CSV-Dateien ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 19 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 21 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.