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

Mehrere Excell Datein an genau einer Stelle auslesen und weiterverarbeiten

Frage Microsoft Microsoft Office

Mitglied: Deecay

Deecay (Level 1) - Jetzt verbinden

24.11.2010, aktualisiert 18.10.2012, 2910 Aufrufe, 8 Kommentare

Hallo zusammen, steh da vor nem kleinen Problemchen:

Das Problem ist folgendes:
In einem Ordner befinden sich ca. 50 xls-Datein. In allen 50 dieser Datein steht in der genau gleichen Zeile eine 1 oder nichts.
Ich würd es gern automatisieren (Im Optimalfall durch eine Batch Datei, oder ähnliches), dass diese Datein eingelesen werden und diese Zelle betrachtet wird.
Sollte eine 1 in der Zelle sein soll nichts weiter passieren, sollte keine 1 dort sein soll der Name der XLS-File in eine Neue Datei geschrieben werden, (alle Namen die sich so ergeben natürlich in eine Datei).

Ich steh jetzt hier wie der Ochs vorm Berg und verzweifel etwas daran, Hilfe wäre super.
Danke im Vorraus Deecay.
Mitglied: bastla
24.11.2010, aktualisiert 18.10.2012
Hallo Deecay und wilkommen im Forum!

Schau mal hier vorbei ...

Grüße
bastla
Bitte warten ..
Mitglied: Deecay
24.11.2010 um 09:45 Uhr
Danke schonmal für die schnelle Hilfe. war zeimlich Informativ der Link, ich hab das Script angepasst: aus den For Schleifen eine IF Anweisung, da ja nur eine Sache geprüft werden muss.
Bei nem Test hab ich jedoch die Fehlermeldung 400 bekommen. Ich hab den Verdacht, dass meine IF-Anweisung nich sauber läuft hier nochmal der Quellcode:

Sub Auswerten()
sQuellpfad = "D:\Test"


Set wbGes = ActiveWorkbook
Set fso = CreateObject("Scripting.FileSystemObject")

For Each oFile In fso.GetFolder(sQuellpfad).Files
If LCase(Right(oFile.Name, 4)) = ".xls" Then
Application.Workbooks.Open oFile.Path
If wbGes.Worksheets(1).Cells(A1).Value = "1" Then
sFileName = fso.GetBaseName(oFile.Name)
ActiveWorkbook.Close False
End If
End If
Next

wbGes.Worksheets(1).Activate
wbGes.Save
MsgBox "Fertig."
End Sub


Ordner: D:\Test
Zelle A1 gefüllt mit 1 oder 0
Zu Testzwecken malö mit 4 Datein ausprobiert
Bitte warten ..
Mitglied: Miyamoto
24.11.2010 um 09:55 Uhr
Hi,
mit der Windows PowerShell kannst du es so machen:
01.
cls 
02.
 
03.
#Variablen 
04.
$pfad="E:\temp2" 
05.
$dateien=Get-ChildItem -Path $pfad -Name -Include *.xls 
06.
$ausgabedatei="E:\log.txt" 
07.
 
08.
#hier musst du angeben in welcher Spalte und in welcher Zeile sich dein Wert befindet 
09.
$zeile=2 
10.
$spalte=1 
11.
 
12.
# Excel starten  
13.
$excel = New-Object -comobject Excel.Application 
14.
 
15.
# für die Fehlersuche sollte man Excel vielleicht anzeigen! 
16.
$excel.Visible = $FALSE 
17.
 
18.
foreach($i in $dateien){ 
19.
 
20.
    # ExcelDatei laden 
21.
    $arbeitsmappe = $excel.Workbooks.Open($pfad+"\"+$i) 
22.
 
23.
    # Erstes Worksheet öffnen 
24.
    $seite = $arbeitsmappe.Worksheets.Item(1) 
25.
    if ($seite.Cells.item($zeile,$spalte).value() -ne 1){ 
26.
        echo $i 
27.
        $i | out-file -filepath $ausgabedatei -Append 
28.
29.
30.
# Excel verlassen 
31.
$excel.quit()
Gruß Miyamoto
Bitte warten ..
Mitglied: Deecay
24.11.2010 um 10:15 Uhr
HI Miyamoto mit Powershell kenn ich mich leider garnich aus.

wenn ich das Script ausführe kommt immer eine Fehlermeldung, ich kann die jedoch nich auswerten, weil sich kurz danach das Fenster schließt
Bitte warten ..
Mitglied: 76109
24.11.2010 um 10:24 Uhr
Hallo Deecay!

Dann versuchs mal mit nem VB-Script (*.vbs):
01.
Const QuellPfad = "D:\Test" 
02.
Const LogDatei = "D:\Test\Test.Log" 
03.
 
04.
Dim Fso, File, Wkb, Log 
05.
 
06.
Set Fso = CreateObject("Scripting.FileSystemObject") 
07.
Set Log = Fso.CreateTextFile(LogDatei) 
08.
     
09.
For Each File In Fso.GetFolder(QuellPfad).Files 
10.
    If LCase(Right(File.Name, 4)) = ".xls" Then 
11.
        Set Wkb = GetObject(File.Path) 
12.
        If Wkb.Sheets(1).Range("A1").Value <> 1 Then 
13.
            Log.WriteLine Fso.GetBaseName(File.Name) 
14.
        End If 
15.
        Wkb.Close False 
16.
    End If 
17.
Next 
18.
 
19.
Log.Close 
20.
     
21.
MsgBox "Fertig."
Gruß Dieter
Bitte warten ..
Mitglied: Deecay
24.11.2010 um 10:29 Uhr
HI Dieter,

das Script funktioniert 1a, danke für die Hilfe an dich und an die andern, die sich die Mühe gemacht haben.

Gruß Deekay.
Bitte warten ..
Mitglied: bastla
24.11.2010 um 10:30 Uhr
Hallo Deecay!

So könnte das eher funktionieren (ist aber ungetestet):
01.
Sub Auswerten() 
02.
sQuellpfad = "D:\Test" 
03.
 
04.
 
05.
Set wbGes = ActiveWorkbook 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
 
08.
iZeile = 2 
09.
For Each oFile In fso.GetFolder(sQuellpfad).Files 
10.
    If LCase(Right(oFile.Name, 4)) = ".xls" Then 
11.
        Application.Workbooks.Open oFile.Path 
12.
        If Worksheets(1).Range("A1").Value = "1" Then 
13.
            sFileName = fso.GetBaseName(oFile.Name) 
14.
            ActiveWorkbook.Close False 
15.
            wbGes.Cells(iZeile, "A").Value = sFileName 
16.
            iZeile = iZeile + 1 
17.
        End If 
18.
    End If 
19.
Next 
20.
 
21.
wbGes.Worksheets(1).Activate 
22.
wbGes.Save 
23.
MsgBox "Fertig." 
24.
End Sub
Grüße
bastla

[Edit] Hat sich dann ja inzwischen erledigt ... [/Edit]
Bitte warten ..
Mitglied: Deecay
24.11.2010 um 10:35 Uhr
Jo trotzdem nochmal Danke Bastler
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...