BELEHRUNG:
Ich muss der Vollständigkeit halber darauf hinweisen, daß man hier eigentlich nicht erwarten kann, fertige Scripts programmiert zu bekommen.
Es ist wohl eher so gedacht, daß man hier Hilfe bei Detailfragen bekommt.
Dein Glück ist (falls mein Script bei Dir funktioniert), daß ich gerade sehr viel Lust zum Scripten habe.
ANLEITUNG:
- Den Code in eine neue Textdatei kopieren und speichern
- die Datei umbenennen in zB.: 'xlsCombine.hta'
- Einstellungen müssen gemacht werden, siehe Codeabschnitt
settings = { ... }
HINWEIS:
Mein Script behandelt nicht:
- falsche, fehlende oder schreibgeschützte Dateien oder Dateinamen etc.
- Leere (nicht verwendete) Zelle L24
und wird in solchen Fällen mit 'Skriptfehler' abbrechen.
SCRIPT:
<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>