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

Excel In mehreren Exceldateien Texte auslesen u in neue Spalte mit Zahlenformat einfügen

Frage Entwicklung

Mitglied: newbie89

newbie89 (Level 1) - Jetzt verbinden

21.07.2008, aktualisiert 16:55 Uhr, 5456 Aufrufe, 4 Kommentare

Hallo.

Bin neu hier und habe aber sogleich eine wichtige Frage (für mich jedenfalls). Kenne micht mit VBA usw. leider nicht so gut aus, aber sollte jetzt dennoch etwas zustande bekommen. Folgendes Problem:

In einem Ordner X sind mehrere Excel-Dateien (immer selber Formatierung) und in einer Spalte Y steht ein gewisser Wert (00,00 l) in jeder Zeile. So das 1. Problem ist, das ich nur die Zahlen brauche ohne das l (=Liter) und diese Werte müssen dann eine Spalte weiter rechts (ist frei) kopiert werden! So und nun sollen alle Werte über 40 fett und rot markiert werden!!

Und diese Prozedur sollte in allen Excel-Tabellen in diesem Ordner statt finden. Am besten wäre wenn dies dann per .vbs oder .bat (weiß ja nicht welche es sein muss) ausführbar sein. Geht das?

Ich bedanke mich jetzt schon für eine rasche Antwort. Bei evt. Rückfragen stehe ich gerne zur Verfügung.


Danke.


lg
Mitglied: bastla
21.07.2008 um 16:18 Uhr
Hallo newbie89 und willkommen im Forum!

Als VBScript etwa so:
01.
Ordner = "D:\X" 
02.
AbZeile = 3 'Einträge ab dieser Zeile suchen 
03.
Spalte = "Y" 
04.
Wert = 40 'Grenzwert für Formatierung 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
Set oXL = CreateObject("Excel.Application") 
09.
Const xlCellValue = 1 
10.
Const xlGreater = 5 
11.
 
12.
'Alle Dateien des angegebenen Ordners ... 
13.
For Each oExcelDatei In fso.GetFolder(Ordner).Files 
14.
    '... erfassen, und, falls der Typ "xls" ist, bearbeiten 
15.
    If LCase(fso.GetExtensionName(oExcelDatei.Name)) = "xls" Then 
16.
        'Datei öffnen 
17.
        oXL.Workbooks.Open oExcelDatei.Path 
18.
        Zeile = AbZeile 
19.
        'Solange die vorgegebene Spalte Einträge enthält 
20.
        Do While oXL.Cells(Zeile, Spalte).Value <> "" 
21.
            'Rechte Nachbarzelle ... 
22.
            With oXL.Cells(Zeile, Spalte).Offset(0, 1) 
23.
                '... mit Zahlenwert ohne " l" füllen ... 
24.
                .Value = CDbl(Replace(oXL.Cells(Zeile, Spalte).Value, " l", "")) 
25.
                '... und Bedingte Formatierung erstellen 
26.
                .FormatConditions.Add xlCellValue, xlGreater, Wert 
27.
                With .FormatConditions(1).Font 
28.
                    .Bold = True 
29.
                    .ColorIndex = 3 'Rot 
30.
                End With 
31.
            End With 
32.
            Zeile = Zeile + 1 
33.
        Loop 
34.
        'Datei schließen und speichern 
35.
        oXL.ActiveWorkbook.Close True 
36.
    End If 
37.
Next 
38.
	 
39.
oXL.Application.Quit
Du solltest vielleicht einmal nur mit 2 Dateien (Kopien) in einem Ordner testen ...

Noch eine Anmerkung: Es wird die beim Öffnen der jeweiligen Exceldatei aktuelle Tabelle bearbeitet.

Grüße
bastla
Bitte warten ..
Mitglied: newbie89
21.07.2008 um 16:39 Uhr
hallo

Das hat prima funktioniert! Komischerweise hat das Skript aber bis zu 2x eine Zahl unter 40 auch formatiert. Sonst hat es bis jetzt einwandfrei funktioniert. Herzlichen Dank!!

Aber gibt es eine Möglichkeit diesen Fehler auszubessern oder wieso ist das passiert?

lg u danke


zusätzlich:
Also beim 1. Mal ausführen hat alles geklappt . Wurde wunderbar formatiert. und nun bekomme ich folgende Meldung immer wieder:

http://c.imagehost.org/view/0362/fehler.jpg


Aber den Code habe ich genauso belassen:

Ordner = "C:\Dokumente und Einstellungen\AndreaHoedl\Eigene Dateien\Timur"
AbZeile = 2 'Einträge ab dieser Zeile suchen
Spalte = "B"
Wert = 40 'Grenzwert für Formatierung

Set fso = CreateObject("Scripting.FileSystemObject")

Set oXL = CreateObject("Excel.Application")
Const xlCellValue = 1
Const xlGreater = 5

'Alle Dateien des angegebenen Ordners ...
For Each oExcelDatei In fso.GetFolder(Ordner).Files
'... erfassen, und, falls der Typ "xls" ist, bearbeiten
If LCase(fso.GetExtensionName(oExcelDatei.Name)) = "xls" Then
'Datei öffnen
oXL.Workbooks.Open oExcelDatei.Path
Zeile = AbZeile
'Solange die vorgegebene Spalte Einträge enthält
Do While oXL.Cells(Zeile, Spalte).Value <> ""
'Rechte Nachbarzelle ...
With oXL.Cells(Zeile, Spalte).Offset(0, 1)
'... mit Zahlenwert ohne " l" füllen ...
.Value = CDbl(Replace(oXL.Cells(Zeile, Spalte).Value, " l", ""))
'... und Bedingte Formatierung erstellen
.FormatConditions.Add xlCellValue, xlGreater, Wert
With .FormatConditions(1).Font
.Bold = True
.ColorIndex = 3 'Rot
End With
End With
Zeile = Zeile + 1
Loop
'Datei schließen und speichern
oXL.ActiveWorkbook.Close True
End If
Next

oXL.Application.Quit
Bitte warten ..
Mitglied: bastla
21.07.2008 um 16:47 Uhr
Hallo newbie89!

Aber gibt es eine Möglichkeit diesen Fehler auszubessern oder wieso ist das passiert?
Wahrscheinlich; keine Ahnung.

Es wird eine "Bedingte Formatierung" verwendet - schau doch einmal für die betreffenden Zellen nach ("Format / Bedingte Formatierung..."), ob Dir etwas auffällt.

Grüße
bastla
Bitte warten ..
Mitglied: newbie89
21.07.2008 um 16:55 Uhr
hab das mit der bedingten formatierung mal gecheckt. also ab und zu geht es ganz normal und dann wiederum kommt der fehler. es ist ganz verschieden. aber irgnd. ist da kein system hinter den fehlern ;) ... weil ab und zu ist eine bedingte formatierung vorhanden und es geht nicht. und ab und zu nicht. und wenn ich das skript das 2. mal starte ist es auch 1x nicht gegangen...

und jetzt geht es wieder ;P ... wenn ich herausfinde an was es liegt melde ich mich. vielen dank für die hilfe.

lg
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
Excel VBA XML-Nodes auslesen (4)

Frage von chef1568 zum Thema VB for Applications ...

Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...