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, 5123 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
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ä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
gelöst PDF Datei auslesen und per VBA in Excel schreiben (3)

Frage von Julian8990 zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...