Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 5357 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 ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Microsoft Office
gelöst CSV-Datei mit einem VBA Makro in Excel einlesen und leicht anpassen (5)

Frage von JoSiBa zum Thema Microsoft Office ...

VB for Applications
Excel Makro zum Suchen von Spalten und exportieren in CSV (2)

Frage von Raptox zum Thema VB for Applications ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Windows Server
SBS 2011 Standard virtualisieren (13)

Frage von HeinrichM zum Thema Windows Server ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...