settings = { ... }
<html>
<head>
<hta:application id="DeineID" applicationname="DeinAppName" windowState="normal" >
<style type="text/css">
* { font-family:Verdana, Arial, Helvetica, sans-serif; }
h1 { font-size:20px; }
h2 { font-size:14px; }
p { font-size:11px; }
#msgs { border:solid 1px #0099CC; padding:4px; }
</style>
<title></title>
<script type="text/javascript">
settings = {
inFolder: getCurrentDirectory(), // Ordner mit jenen 150 Dateien
outFile: getCurrentDirectory() + "/out.xls", // Ordner und Dateiname der Ausgabedatei
password: "test", // passwort zum öffnen der Dateien
fileNamePrefix: "file" // nur Dateinamen bearbeiten, die mit dem fileNamePrefix beginnen
};
//-----------------------------
//-----------------------------
function getContentOfFiles()
{
var i = 0;
var out = [];
var startFolder = getCurrentDirectory();
var files = getFiles( startFolder, 5 )[1];
var xlsfile;
window.setTimeout( getNext, 100 );
function getNext()
{
if( i < files.length )
{
if( files[i].name.substr( 0, settings.fileNamePrefix.length ) == settings.fileNamePrefix )
{
msg( "loading file: " + files[i] );
xlsfile = loadExcelFile( files[i], settings.password );
out.push( xlsfile[23][11] );
}
i++;
window.setTimeout( getNext, 100 );
}
else
{
writeOutFile( settings.outFile, out );
msg( "outfile saved" );
msg( "done" );
}
}
};
//-----------------------------
//-----------------------------
function writeOutFile( filename, arr )
{
var excelApp = new ActiveXObject("Excel.Application");
var wbnew = excelApp.Workbooks.Add();
var sheet = wbnew.Sheets(1);
var x,y,i;
for ( i = 0; i < arr.length; i++ )
{
y = i + 1;
sheet.Cells( y, 1 ) = arr[i];
}
wbnew.SaveAs( filename );
wbnew.Close();
excelApp.Quit();
};
//-----------------------------
//-----------------------------
function init( )
{
getContentOfFiles();
}
//-----------------------------------------------------------------------------------
//-- get current directory
//-----------------------------------------------------------------------------------
function getCurrentDirectory()
{
var wssh = new ActiveXObject("WScript.Shell");
return wssh.CurrentDirectory.replace(/\\/g,"/");
}
//-----------------------------------------------------------------------------------
//-- returns an array: [ array of folder objects, array of file objects ]
//-- filter:
//-- n = 0000 (0): all folders and subfolders and all files
//-- n = 0001 (1): no folders
//-- n = 0010 (2): no files
//-- n = 0100 (4): no subfolders
//-----------------------------------------------------------------------------------
function getFiles( startfolder, n )
{
n = n || 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folders = new Array();
var files = new Array();
if( !fso.FolderExists( startfolder ) )
{
msg("Folder " + startfolder + " not found!");
return [ [],[] ];
}
getNext( startfolder );
return [ folders, files ];
function getNext( fld )
{
var folderObj = fso.getFolder( fld );
var filesEn, foldersEn;
if( (n & 2) == 0 )
{
filesEn = new Enumerator( folderObj.Files );
for (; !filesEn.atEnd(); filesEn.moveNext()) files.push( filesEn.item() );
}
if( (n & 1) == 0 )
{
folders.push( folderObj );
foldersEn = new Enumerator( folderObj.SubFolders );
if( (n & 4) == 0 )
{
for (; !foldersEn.atEnd(); foldersEn.moveNext()) getNext( foldersEn.item().path );
}
}
}
}
//---------------------------------
//---------------------------------
function loadExcelFile( fileName, password )
{
var x, y;
var currentRange;
var excelApp = new ActiveXObject("Excel.Application");
var wbin = excelApp.Workbooks.Open( fileName, 2, true, 1, password );
var out = new Array();
var row = new Array();
if( wbin.Sheets.Count > 0 )
{
currentRange = wbin.Sheets(1).UsedRange;
for ( y = 0; y < currentRange.Rows.Count; y++ )
{
for ( x = 0; x < currentRange.Columns.Count; x++ )
{
row.push( currentRange.Cells( y + 1, x + 1 ).Text );
}
out.push( row );
row = [];
}
}
wbin.Close();
excelApp.Quit();
return out;
}
//-----------------------------
//-----------------------------
function msg( s )
{
document.getElementById("msgs").innerHTML += s + "<br>";
//alert( s );
//WScript.Echo( s );
}
</script>
</head>
<body onLoad="init()">
<h1>Filelist</h1>
<div id="msgs"></div>
</body>
</html>
out.push( [ files[i], xlsfile[23][11] ] );sheet.Cells( y, 1 ) = arr[i][0];
sheet.Cells( y, 2 ) = arr[i][1];
Option Explicit
Const strPfad = "C:\Eigene Dateien\"
Const strPasswort = "Hier das Passwort"
Sub Auslesen()
Dim Dateityp
Dim Obj As Object
Dim objAnzDateien As Object
Dim lngFirstRow As Long
Application.ScreenUpdating = False
Set Obj = CreateObject("Scripting.FileSystemObject")
Set objAnzDateien = Obj.getfolder(strPfad)
For Each Dateityp In objAnzDateien.Files
If Right(Dateityp.Name, 4) = ".xls" Then
Workbooks.Open Filename:=Dateityp, Password:=strPasswort
With ThisWorkbook.Sheets(1)
lngFirstRow = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
.Cells(lngFirstRow, 1) = Dateityp.Name
.Cells(lngFirstRow, 2) = Range("L24")
End With
Workbooks(Dateityp.Name).Close
End If
Next
End Sub
Du musst in den ZeilenConst strPfad = "C:\Eigene Dateien\"
Const strPasswort = "Hier das Passwort"den Pfad und das Passwort der Dateien anpassen.
.Cells(lngFirstRow, 2) = .Range("L24")in .Cells(lngFirstRow, 2) = Sheets("Tabelle1").Range("L24")
Werte aus verschiedenen Dateien automatisch "sammeln"
wundi23 02.10.2008 - 18 Hits - 7 Antworten
Mittelwert aus verschiedenen Dateien
lauflist 20.11.2008 - 11 Hits - 2 Antworten