1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
String vFileName;
Variant vXLWorkbooks, vXLWorkbook, vMSExcel,fichier;
Variant vOrigin = 3; // = xlMSDOS format MSDOS
Variant vStartRow = 1; // on commence à la 1ère ligne (par défaut)
Variant vDataType = 2; // = xlFixedWidth format délimité (par défaut)
Variant vTextQualifier = 1; // = xlTextQualifierDoubleQuote qualificateur de texte (par défaut)
Variant vConsecutiveDelimiter = false; // pas de délimitateur consécutif
Variant vTab = false; // pas délimitateur tab
Variant vSemicolon = true; // délimitateur ";"
Variant vComma = false; // pas délimitateur virgule
Variant vSpace = false; // pas délimitateur espace
Variant vOther = false; // pas délimitateur autre
Variant vOtherChar = NULL ; // délimitateur Other non actif
Variant vFieldInfo; // On veut {{0,1},{10,1},{20,1},{34,1},{48,1},{60,1},{94,1},{112,1}}
vFieldInfo = VarArrayCreate(OPENARRAY(int, (0, 7, 0, 1)), varInteger);
vFieldInfo.PutElement(0,0,0); //on affecte 0 à la ligne 0 colonne 0 du tab
vFieldInfo.PutElement(1,0,1); //on affecte 1 à la ligne 0 colonne 1 du tab
vFieldInfo.PutElement(10,1,0); //on affecte 10 à la ligne 1 colonne 0 du tab
vFieldInfo.PutElement(1,1,1); //on affecte 1 à la ligne 1 colonne 1 du tab
vFieldInfo.PutElement(20,2,0); //on affecte 20 à la ligne 2 colonne 0 du tab
vFieldInfo.PutElement(1,2,1); //on affecte 1 à la ligne 2 colonne 1 du tab
vFieldInfo.PutElement(34,3,0); //on affecte 34 à la ligne 3 colonne 0 du tab
vFieldInfo.PutElement(1,3,1); //on affecte 1 à la ligne 3 colonne 1 du tab
vFieldInfo.PutElement(48,4,0); //on affecte 48 à la ligne 4 colonne 0 du tab
vFieldInfo.PutElement(1,4,1); //on affecte 1 à la ligne 1 colonne 1 du tab
vFieldInfo.PutElement(60,5,0); //on affecte 60 à la ligne 5 colonne 0 du tab
vFieldInfo.PutElement(1,5,1); //on affecte 1 à la ligne 5 colonne 1 du tab
vFieldInfo.PutElement(94,6,0); //on affecte 60 à la ligne 6 colonne 0 du tab
vFieldInfo.PutElement(1,6,1); //on affecte 1 à la ligne 6 colonne 1 du tab
vFieldInfo.PutElement(112,7,0); //on affecte 112 à la ligne 7 colonne 0 du tab
vFieldInfo.PutElement(1,7,1); //on affecte 1 à la ligne 7 colonne 1 du tab
try
{
vMSExcel = Variant::GetActiveObject("Excel.Application");
}
catch(...)
{
vMSExcel = Variant::CreateObject("Excel.Application");
}
Excel = 1;
vMSExcel.OlePropertySet("Visible", true);
vMSExcel.OlePropertySet("ScreenUpdating",true);
Variant title = StringToOleStr("Ouvrir"); // titre à donner à la boite de dialogue
Variant multiselect = true; // selection multiple autorisée
fichier = vMSExcel.OleFunction("GetOpenFilename",EmptyParam, EmptyParam, title, EmptyParam, multiselect);
if(fichier.IsArray())
{
for(j=1 ; j<=fichier.ArrayHighBound(1) ; j++)
{
vFileName = fichier.GetElement(j);
vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
vXLWorkbook = vXLWorkbooks.OleFunction("OpenText", vFileName.c_str(), vOrigin, vStartRow, vDataType, vTextQualifier, vConsecutiveDelimiter, vTab, vSemicolon, vComma, vSpace, vOther, vOtherChar, vFieldInfo);
vMSExcel.OlePropertySet("DisplayAlerts", false);//Désactive les alertes
vMSExcel.OlePropertySet("WindowState", -4140);//Minimise la fenêtre Excel
vFileName = "c:\\Affsiam\\test.csv";
Variant FileFormat = 6; // fichier CSV (extension .csv)
//FileFormat = -4158; //fichier TXT et separateur tabulation (extension .txt)
//FileFormat = 36; //fichier TXT et separateur espace (extension .prn)
//FileFormat = -4143; // valeur de xlNormal "sauvegarde sous format classeur excel"
// pour les autres format de sauvegarde faire un essai avec VBE
// creation d'un mot de passe protegeant l'ouverture du fichier
//Mot_passe = Unassigned; //"jpb"; // pour la protection du fichier
Variant Password = Unassigned; //Mot_passe; // mot de passe pour proteger le fichier
Variant WriteResPassword = Unassigned; //Mot_passe; // confirmation du mot de passe
Variant ReadOnlyRecommended = false; // fichier en lecture seule (False True Unassigned)
// creation d'une copie si le fichier existe deja
Variant CreateBackup = false; //Unassigned; // creation d'une copie (False True Unassigned)
// fermeture d'un fichier (ouvert au format csv) au format xls
vFileName = "C:\\essais.csv";
vXLWorkbook.OleProcedure("Saveas", vFileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup);
}
}
} |
Partager