//-----------------------------
//-- Initialisierung
//-----------------------------
function init()
{
var infile, list, out, anzahl;
msg( "<br>--- Excel Datei laden: ---<br>" );
infile = loadExcelFile( locations.infile, locations.startSheet );
infile = deleteEmpty( infile );
infile = convertInfile( infile );
//--> Excelliste auslesen, leeren Inhalt löschen, Infile (ausgelesene Excelliste) für das Auslesen vorbereiten
anzahl = loadExcelFile( locations.infile, locations.startSheet );
anzahl = deleteEmpty( anzahl );
anzahl = convertAnzahl( anzahl );
//--> Excelliste auslesen, leeren Inhalt löschen, Anzahl (ausgelesene Excelliste) für das Auslesen vorbereiten
msg( "<br>--- Dateien finden: ---<br>" );
list = getSortedList( [ locations.posA, locations.posB, locations.posC ] );
list = findLast( list );
//--> Dateien finden, Liste sortieren. Liste ist ein Array von Objekten: { p = Pfad, n = File }
//--> jeweils letzte Datei finden, und alle anderen Einträge löschen
out = checkIfInFileList( list, infile, anzahl );
//--> Dateien und Infile vergleichen, sowie deren Anzahl anhängen
save( out );
if( Eingabewerte.STL_vorhanden == "Ja" || Eingabewerte.STL_Tür_Links_vorhanden == "Ja" || Eingabewerte.STL_Tür_Rechts_vorhanden == "Ja" || Eingabewerte.STL_Tür_LinksRechts_vorhanden == "Ja" )
{
document.getElementById( "STL_Meldungen_Überschreiben" ).style.display = "inline";
document.getElementById( "STL_Meldungen_Alt_Text" ).style.display = "inline";
document.getElementById( "STL_Meldungen_Alt_Text" ).disabled = true;
document.getElementById( "Überschreiben_Alt_Text" ).disabled = true;
document.getElementById( "Alt_Text" ).disabled = true;
}
return;
};
//------------------------------------------
//-- Exceldatei laden, Array zurückliefern
//------------------------------------------
function loadExcelFile( fileName, sheetName )
{
var x, y;
var currentRange;
var currentSheet;
var excelApp = new ActiveXObject("Excel.Application");
var wbin;
var out = new Array();
try { wbin = excelApp.Workbooks.Open( fileName ); }
catch(e)
{
STL_Meldungen_Fehler( "(!) konnte folgende Datei nicht öffnen: '" + fileName + "' (!)" );
return [];
}
currentSheet = get_sheet_by_name( wbin, sheetName );
if( currentSheet )
{
currentRange = currentSheet.UsedRange;
for ( y = locations.startRow; y < currentRange.Rows.Count; y++ )
{
out.push( currentRange.Cells( y + 1, locations.startCol1 ).Text + currentRange.Cells( y + 1, locations.startCol1_1 ).Text );
}
for ( y = locations.startRow; y < currentRange.Rows.Count; y++ )
{
out.push( currentRange.Cells( y + 1, locations.startCol2 ).Text + currentRange.Cells( y + 1, locations.startCol2_2 ).Text );
}
}
//--> Matten-Spalte auslesen und Anzahl-Spalte an die Stückliste zeilenweise anhängen
wbin.Close();
excelApp.Quit();
return out;
function get_sheet_by_name( wb, name )
{
var i;
for( i = 1; i < wb.Sheets.Count + 1; i++ )
{
if( wb.Sheets( i ).name == name )
{
return wb.Sheets( i );
}
}
STL_Meldungen_Fehler( "(!) Tabelle '" + name + "' nicht gefunden (!)" );
return false;
}
};
//------------------------------------------------------
//-- leere Elemente der Infile löschen
//------------------------------------------------------
function deleteEmpty( infile )
{
var i = 0;
var out = [];
for( i = 0; i < infile.length; i++ )
{
if( infile[ i ] ) { out.push( infile[i] ); }
}
//--> alle leeren Eintragungen werden gelöscht
out.pop();
//--> der letzte Eintrag wird gelöscht
return out;
};
//------------------------------------------------------
//-- leere Elemente der Anzahl löschen
//------------------------------------------------------
function deleteEmpty( anzahl )
{
var i = 0;
var out_anz = [];
for( i = 0; i < anzahl.length; i++ )
{
if( anzahl[ i ] ) { out_anz.push( anzahl[i] ); }
}
//--> alle leeren Eintragungen werden gelöscht
out_anz.pop();
//--> der letzte Eintrag wird gelöscht
return out_anz;
};
//---------------------------------------------
//-- Infile konvertieren, Ausgabe zur kontrolle
//---------------------------------------------
function convertInfile( infile )
{
var i = 0; var last = "";
for( i = 0; i < infile.length; i++ )
{
if( infile[ i ] )
{
last = infile[ i ].substr( 0, 14 );
infile[ i ] = convertFileNameToObject( infile[ i ] );
msg( "infile: " + last + " / " + i + " " + infile[ i ] + "<br>" )
}
}
return infile;
};
function convertFileNameToObject( fn )
{
fn = fn.replace( /-/g, "_" );
fn = fn.substr( 0, 14 );
out = fn;
return out;
}
//---------------------------------------------
//-- Anzahl konvertieren, Ausgabe zur kontrolle
//---------------------------------------------
function convertAnzahl( anzahl )
{
var i = 0; var last = "";
for( i = 0; i < anzahl.length; i++ )
{
if( anzahl[ i ] )
{
last = anzahl[ i ].substr( 0, 14 );
anzahl[ i ] = anzahl[ i ].substr( 17 , 3 );
//if( anzahl[ i ] == 1 ) { anzahl[ i ] = "" };
msg( "Anzahl: " + last + " ( " + anzahl[ i ] + " )<br>" )
}
}
return anzahl;
};
//---------------------------------
//-- vorhandene Stückliste einlesen
//---------------------------------
function loadFile( FileName )
{
var fso,f1;
var FileStr = "";
fso = new ActiveXObject("Scripting.Filesystemobject");
if( fso.FileExists(FileName) )
{
f1 = fso.OpenTextFile(FileName, 1);
if(f1.AtEndOfStream) msg("(!) Die Datei ist leer<br>", true); else FileStr = f1.ReadAll();
f1.close();
}
else
{
msg("(!) vorhandene Datei nicht gefunden! --->" + FileName + "<br>", true);
}
return FileStr;
}
//-----------------------------
function checkIfInFileList( list, infile, anzahl )
{
var i, temp;
var out = [];
for( i = 0; i < infile.length; i++ )
{
out = out.concat( findInList( infile[i] ) );
}
return out;
function findInList( s )
{
var i = 0;
var out = [];
for( i = 0; i < list.length; i++ )
{
if( s == list[i].n.join("_").substr( 0, 14 ) )
{
out.push( list[i] );
}
}
if( out.length == 0 ) return [s];
return out;
}
};
//----------------------------------------------------------------------------
//-- gefundene Materialien in einer Liste speichern und zur Kontrolle ausgeben
//----------------------------------------------------------------------------
function save( list )
{
var out = [];
for( var i = 0; i < list.length; i++ )
{
if( list[i].n )
{
out.push( list[i].n.join("") + ".nc" );
msg( i + " " + list[i].n + " // ( " + list[i].anzahl + " ) - " + list[i].p + "<br>" );
}
else
{
out.push( "! datei nicht gefunden: '" + list[i] + "'" );
msg( i + " " + "! datei nicht gefunden '" + list[i] + "' !<br>" );
}
}
var infile_vorhanden = loadFile( locations.workFolder_STL + locations.outfile1 ).replace(/\r\n/g,"\n").split("\n");
vergleich( out , infile_vorhanden )
//-------------------------------------------------------------------------------
//-- Ausgabedatei und vorhandene Stückliste vergleichen und Unterschiede ausgeben
//-------------------------------------------------------------------------------
function vergleich( infile_neu , infile_vorhanden )
{
for( var i = 0; i < infile_neu.length; i++ )
{
infile_neu[i] = infile_neu[i].substr( 0 , 15 );
}
for( var i = 0; i < infile_vorhanden.length; i++ )
{
infile_vorhanden[i] = infile_vorhanden[i].substr( 0 , 15 );
}
infile_neu.sort();
infile_vorhanden.sort();
if( infile_neu.length == infile_vorhanden.length )
{
document.getElementById( "STL_Meldungen_Überschreiben" ).innerHTML = '<p class="STL_Meldungen_Überschreiben">Wollen Sie die Stückliste Überschreiben? <input type="button" value="Bestätigen" class="STL_Meldungen_Button" onclick="kommt_noch( out )"></input> <input type="button" value="Abbrechen" class="STL_Meldungen_Button" onclick="Überschreiben_Abbrechen()"></input>';
msg( "<br><b>Es wurden keine Unterschiede gefunden." );
}
else
{
for( var i = 0; i < infile_neu.length && infile_vorhanden.length; i++ )
{
if( infile_neu[i] != infile_vorhanden[i] )
{
document.getElementById( "STL_Meldungen_Überschreiben" ).innerHTML = '<p class="STL_Meldungen_Überschreiben">Wollen Sie die Stückliste Überschreiben? <input type="button" value="Bestätigen" class="STL_Meldungen_Button" onclick="kommt_noch( out )"></input> <input type="button" value="Abbrechen" class="STL_Meldungen_Button" onclick="Überschreiben_Abbrechen()"></input>';
msg( "<br><b>Unterschiede: </b>" + infile_vorhanden[i] + " --> <b>" + infile_neu[i] + "</b>" );
}
}
}
};
//saveFile( locations.workFolder1 + locations.outfile1, out.join("\r\n") );
};
//---------------------------------------------------------
//-- Speichern der Stückliste - Überschreiben und Abbrechen
//---------------------------------------------------------
function Überschreiben_Abbrechen()
{
STL_Meldungen_Fehler( "Ihre Stückliste(n) " + locations.Bereich + "<br>wurde nicht gespeichert." );
};
function kommt_noch( out )
{
out = out;
saveFile( "C:/test/" + locations.outfile1, out.join("\r\n") );
};
//---------------------------------------------------------
//-- Liste in vorgegebenen Ordner durchsuchen und speichern
//---------------------------------------------------------
function getSortedList( locs )
{
var out = new Array();
var temp, i, k;
for( i = 0; i < locs.length; i++ )
{
temp = getFiles( locs[i], 5 )[1];
for( k = 0; k < temp.length; k++ )
{
temp[k] = { p:temp[k].path, n:temp[k].name };
temp[k].p = temp[k].p.replace(/\\/g,"/");
temp[k].p = temp[k].p.substr( 0, temp[k].p.lastIndexOf("/") );
temp[k].n = temp[k].n.split(".")[0];
temp[k].n = [ temp[k].n.substr( 0, 14 ), temp[k].n.substr( 14 ) ];
out.push( temp[k] );
}
}
//--> Dateien finden
out.sort( sort );
out = findLast( out );
return out;
function sort( a, b )
{
var i;
a = a.n;
b = b.n;
for( i = 0; i < a.length; i++ )
{
if( !b[i] ) return 1;
if( a[i].length > b[i].length ) return 1;
if( a[i].length < b[i].length ) return -1;
if( a[i] > b[i] ) return 1;
if( a[i] < b[i] ) return -1;
}
return 0;
//--> Liste sortieren
};
};
function findLast( arr )
{
var i = 0;
var out = new Array();
var temp = [];
var current000, last000;
var currentX, lastX;
var current00x, last00x;
for( i = 0; i < arr.length; i++ )
{
current000 = arr[i].n[0];
current00x = arr[i].n[1].split("_")[1];
currentX = arr[i].n[1].split("_")[0];
if( last000 != current000 )
{
out = out.concat( temp );
temp = [];
}
if( i > 0 && lastX != currentX ) { temp = []; }
temp.push( arr[ i ] );
last000 = current000;
lastX = currentX;
last00x = current00x;
}
return out;
//--> Letzten Eintrag finden, sprich höchste Aktualität (ISSUE)
};
//------------------------------------------
//--Liste im entsprechendem Ordner speichern
//------------------------------------------
function saveFile(FileName,str)
{
var fso, folder, file, foldername;
//____
function getfoldername(s) { s = s.replace(/\\/g,"/"); s = s.substr( 0, s.lastIndexOf("/") ); return s; }
fso = new ActiveXObject("Scripting.Filesystemobject");
foldername = getfoldername(FileName);
if(fso.FolderExists(foldername))
{
folder = fso.Getfolder(foldername);
if(folder.attributes!=16&&folder.attributes!=48)
{
STL_Meldungen_Fehler("[savefile] kann auf Verzeichnis nicht zugreifen ---><b>" + foldername + "</b> (att:" + folder.attributes + ")");
return false;
}
if(fso.FileExists(FileName))
{
file = fso.GetFile(FileName);
if(file.attributes!=0&&file.attributes!=32)
{
STL_Meldungen_Fehler("[savefile] kann auf Datei nicht zugreifen ---><b>" + FileName + "</b> (att:" + file.attributes + ")");
return false;
}
}
file = fso.OpenTextFile(FileName, 2, true);
file.write(str);
file.close();
}
else
{
STL_Meldungen_Fehler("Verzeichnis nicht gefunden! ---><b>" + foldername + "</b>");
}
}
//-----------------------------------------------------------------------------------
//-- 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
//-- ext = extension as STRING
//-- part = member as STRING, eg. "name"
//-----------------------------------------------------------------------------------
function getFiles( startfolder, n , ext, part )
{
if( !n ) n = 0;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var folders = new Array();
var files = new Array();
if( !fso.FolderExists( startfolder ) )
{
STL_Meldungen_Fehler("(!) Folder " + startfolder + " not found!", true );
return [ [],[] ];
}
getNext( startfolder );
return [ folders, files ];
function getNext( fld )
{
var folderObj = fso.getFolder( fld );
var filesEn, foldersEn;
var tmp = "";
if( (n & 2) == 0 )
{
filesEn = new Enumerator( folderObj.Files );
for (; !filesEn.atEnd(); filesEn.moveNext())
{
tmp = filesEn.item().name;
if( typeof(ext) == 'undefined' || tmp.substr( tmp.length - ext.length, ext.length ).toLowerCase() == ext.toLowerCase() )
{
if( typeof(part) != 'undefined' && filesEn.item()[part] != 'undefined' )
files.push( filesEn.item()[part] )
else
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 msg( s ) { document.getElementById("msgs").innerHTML += s; };
function STL_Meldungen_Fehler( Fehler )
{
document.getElementById("STL_Meldungen_Fehlerausgabe").style.display = "inline";
document.getElementById("STL_Meldungen_Fehler").innerHTML += Fehler + '<br>';
};
Excel VBA: Bedingte Formatierung
snailhouse 16.04.2009 - 1134 Hits - 8 Antworten
VBA/excel einfügen in varierende zellen
Kokosk 19.05.2009 - 625 Hits - 2 Antworten
MySQL Summer einer Spalte, allerdings VARCHAR(200)
TByte 27.05.2009 - 357 Hits - 7 Antworten
Excel VBA: FollowHyperlink Mailto:
snailhouse 09.07.2009 - 532 Hits - 1 Antwort
Excel VBA: Modul exportieren
snailhouse 24.07.2009 - 493 Hits - 2 Antworten