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

Spalte zeilenweise als Dateien rausschreiben und Dateinamen nach Excel zurückschreiben

Frage Microsoft Microsoft Office

Mitglied: Yosimo

Yosimo (Level 1) - Jetzt verbinden

06.06.2011 um 16:05 Uhr, 3127 Aufrufe, 4 Kommentare

Hallo,

mit diverser Hilfe aus diesem Forum habe ich ein Makro geschrieben, das mir den Inhalt der Spalte "E" zeilenweise ab der 2. Zeile als Textdateien herausschreibt und die Dateinamen 5-stellig fortlaufend durchnummeriert. Das funktioniert soweit ganz gut.

01.
Sub ExportiereSpalte(control As IRibbonControl) 
02.
Ziel = ActiveWorkbook.Path & "\" 
03.
Stellen = 5 
04.
Typ = ".txt" 
05.
AbZeile = 2 
06.
Spalte = "E" 
07.
 
08.
Zeile = AbZeile 
09.
Nr = 1000001 
10.
 
11.
Set fso = CreateObject("Scripting.FileSystemObject") 
12.
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\" 
13.
 
14.
Do While Cells(Zeile, Spalte).Value <> "" 
15.
    fso.CreateTextFile(Ziel & Right(Nr, Stellen) & Typ).Write Cells(Zeile, Spalte).Value 
16.
    Zeile = Zeile + 1 
17.
    Nr = Nr + 1 
18.
Loop 
19.
 
20.
End Sub
Nun möchte ich das Makro dermaßen erweitern, dass die erzeugten Dateinamen zusätzlich in eine leere Spalte ins Excelblatt zurückgeschrieben werden.
Der Spaltentitel sollte auch gleich mit eingesetzt werden. Dabei soll berücksichtigt sein, dass, wenn ab Zeile 2 exportiert wurde, auch erst ab Zeile 2 wieder die Dateinamen zurückgeschrieben werden.
Es soll also der entsprechende Dateiname in seinem zugehörigen Datensatz platziert werden.

Da meine VBA-Kenntnisse noch recht bescheiden sind, bin ich um Eure Hilfe dankbar.
(Arbeite mit Excel 2007 unter Win7)

Gruß
Yosimo
Mitglied: bastla
06.06.2011 um 20:45 Uhr
Hallo Yosimo!

Etwa so:
01.
Sub ExportiereSpalte(control As IRibbonControl) 
02.
Ziel = ActiveWorkbook.Path & "\" 
03.
Stellen = 5 
04.
Typ = ".txt" 
05.
AbZeile = 2 
06.
Spalte = "E" 
07.
SpalteNamen = "H" 
08.
 
09.
Zeile = AbZeile 
10.
Nr = 1000001 
11.
 
12.
Set fso = CreateObject("Scripting.FileSystemObject") 
13.
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\" 
14.
 
15.
Do While Cells(Zeile, Spalte).Value <> "" 
16.
    Dateiname = Ziel & Right(Nr, Stellen) & Typ 
17.
    fso.CreateTextFile(Dateiname).Write Cells(Zeile, Spalte).Value 
18.
    Cells(Zeile, SpalteNamen).Value = Dateiname 
19.
    Zeile = Zeile + 1 
20.
    Nr = Nr + 1 
21.
Loop 
22.
 
23.
End Sub
Falls Du mit "Spaltentitel" eine Spaltenüberschrift unmittelbar vor der ersten Datenzeile meinst, dann kannst Du dafür folgende Zeile 8 verwenden:
If AbZeile >= 2 Then Cells(AbZeile - 1, SpalteNamen).Value = "Spaltentitel"
Grüße
bastla
Bitte warten ..
Mitglied: Yosimo
07.06.2011 um 08:02 Uhr
Hallo bastla,

funktioniert prima, vielen Dank!

Den ganzen Pfadnamen brauche ich jedoch nicht in der Excelzelle, nur den Dateinamen.
Und die Spaltenüberschrift soll immer in der ersten Zelle stehen (was bei "AbZeile = 2" ja automatisch der Fall ist).

Ich hab's dahingehend geändert:

01.
Sub ExportiereSpalte(control As IRibbonControl) 
02.
Ziel = ActiveWorkbook.Path & "\" 
03.
Stellen = 5 
04.
Typ = ".txt" 
05.
AbZeile = 2 
06.
Spalte = "E" 
07.
SpalteNamen = "H" 
08.
Cells(1, SpalteNamen).Value = "Spaltentitel"                            '<---------- HIER GEÄNDERT 
09.
 
10.
Zeile = AbZeile 
11.
Nr = 1000001 
12.
 
13.
Set fso = CreateObject("Scripting.FileSystemObject") 
14.
If Right(Ziel, 1) <> "\" Then Ziel = Ziel & "\" 
15.
 
16.
Do While Cells(Zeile, Spalte).Value <> "" 
17.
    Dateiname = Ziel & Right(Nr, Stellen) & Typ 
18.
    DateinameZelle = Right(Nr, Stellen) & Typ                             '<----------HIER ERGÄNZT 
19.
    fso.CreateTextFile(Dateiname).Write Cells(Zeile, Spalte).Value 
20.
    Cells(Zeile, SpalteNamen).Value = DateinameZelle                '<---------- HIER GEÄNDERT 
21.
    Zeile = Zeile + 1 
22.
    Nr = Nr + 1 
23.
Loop 
24.
 
25.
End Sub

Damit ist das Wichtigste vorerst erledigt, alles weitere ist jetzt nur noch Kosmetik (Input- u. Messageboxen, Sanduhr usw.).

Gruß und Dank
Yosimo
Bitte warten ..
Mitglied: bastla
07.06.2011 um 16:09 Uhr
Hallo Yosimo!

Noch eine Kleinigkeit: In den Zeilen 17 und 18 wird zweimal (gleich) der eigentliche Dateiname zusammengesetzt - das ließe sich so umstellen (und damit etwas änderungs-/wartungsfreundlicher machen):
01.
    DateinameZelle = Right(Nr, Stellen) & Typ                             '<----------HIER ERGÄNZT 
02.
    Dateiname = Ziel & DateinameZelle
Ich wollte nicht auch noch die Variablennamen verändern, aber "Dateiname" und "Dateipfad" würden mir besser gefallen ...

Grüße
bastla
Bitte warten ..
Mitglied: Yosimo
08.06.2011 um 07:35 Uhr
Hallo bastla,

Danke für die Hinweise - habe es angepasst.

Gruß
Yosimo
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel Spalten
gelöst Frage von a.grotheMicrosoft Office6 Kommentare

Hallo zusammen, ich habe ein Excel Dokument A. Hier habe ich nun Werte in folgender Form: In Zelle I8 ...

Batch & Shell
Ergänzen einer CSV Datei als letze Spalte mit Teil der Dateiname
Frage von moltitiBatch & Shell11 Kommentare

ich habe ca. 12000 Dateien die im Batch Betrieb ergänzt werden sollen. Der Aufbau der Dateien ist etwa so: ...

Microsoft Office
Eine Excel Datei als Vorlage um in der zweiten Excel Datei überschüssige Spalten zu löschen
gelöst Frage von michi1983Microsoft Office4 Kommentare

Hallo Admins, ich muss vorweg sagen, dass ich ein absoluter Excel Noob bin. Ein Mitarbeiter von uns hat die ...

Batch & Shell
Datei zeilenweise auslesen - es passiert aber nichts
gelöst Frage von NagusBatch & Shell3 Kommentare

Hi zusammen, ich stehe gerade auf dem Schlauch. Ich will mit einem einfachen Script aus einer text-Datei Dateinamen auslesen ...

Neue Wissensbeiträge
Windows 10

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

Tipp von kgborn vor 2 TagenWindows 106 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 2 TagenSicherheits-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 2 TagenInternet5 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 2 TagenDSL, VDSL2 Kommentare

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

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell20 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless9 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Router & Routing
Wieso kann ich den UPD 7000-9000 nicht freigeben?
Frage von Jayk0bRouter & Routing8 Kommentare

Router: Telekom W 723V Ports: UDP 7000-9000 Können nicht frei gegeben werden. Benutzgrund: Rocket League 7000 – 9000 UDP ...

Router & Routing
Fritzbox Gastnetz - exposed Host - zur Sophos IPTV
Frage von medikopterRouter & Routing8 Kommentare

Hallo zusammen, ich habe eine Frage bezüglich des Fritz box Gastzugangs an einer Sophos UTM Home. An liebsten wäre ...