none
enregistrement en .xlsx endommagé RRS feed

  • Question

  • Bonjour à tous,

    je suis néophyte dans les scripts donc soyez indulgent sur mon manque de connaissance ;(

    un script qui tournait parfaitement jusqu'à présent ne fonctionne plus correctement :

    le but est de générer un rapport qui va être enregistrer en .xls mais pour notre besoin il doit être en .xlsx

    jusqu'à présent nous n'avions aucun soucis mais depuis peu une fois la modification faites il devient endommagé 

    j'ai fait différents tests et identifier le problème , pour moi c'est uniquement lié à la partie saveas , quand le rapport est généré il est nommé AAAAAAAA.xls et le script a donc pour but de le renommer de changer l'extension en : BBBBBBB.xlsx et le mettre dans un dossier spécifique.

    j'ai trouvé un contournement pour qu'il ne soit pas endommagé , une fois le rapport AAAAAAAA.xls généré je dois manuellement ouvrir excel pour l'enregistrer sous le nom BBBBBBB.xlsx du coup il est endommagé uniquement quand c'est fait via la script.

    si une bonne âme a une idée de pourquoi il est devenu corrompu ( une fois encore en sachant que ca fonctionnait avant) je suis preneur, voici la partie du script concerné: 

    -----------------

    # Variable USERPROFILE
    $profil= "XXXXX"
    $profil2= "XX"
    # Variable des fichiers téléchargé sur Service Now
    $sourceProfil = "C:\users\" + $profil
    $filename_BBBBBBB = $sourceProfil +  "\Downloads\AAAAAAAA.xls"
    # Variable Identifiant Chrome sur 
    $username = "XXX\" + $profil
    # Variable mot de passe et chemin fichier password crypter
    $password = cat XXXXX
    $password2 = cat XXXXXX
    # Variable Secure Connexion autre user sur Firefox
    $credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username,$password)
    #Variable du site Sharepoint XXXX à la racine
    $url_SP = "https://XXXX
    #Variable des fichiers à déplacer vers le Sharepoint
    $Fichier_Source = "C:\Sharepoint\FULL_Backlog.xlsx"
    $file = "C:\users\XXXX\Downloads\AAAAAAAA.xls.xls"
    $filename = "C:\Sharepoint\BBBBBBB.xlsx"

    # Fonction d'ouverture Excel
    $Excel = New-Object -ComObject "Excel.Application"
    Start-Sleep -s 30
    write-host "OUVERTURE D'EXCEL : OK"
    # -------------------------------------------------------------------------------------------------------------------------------------------------------------
    # Désactivation des fênetres de paramètres
    $Excel.DisplayAlerts = $false
    $Excel.ScreenUpdating = $false
    $Excel.visible = $false
    $Excel.UserControl = $false
    $Excel.Interactive = $false
    # -------------------------------------------------------------------------------------------------------------------------------------------------------------
    # Ouverture du fichier
    $Fonction = $Excel.workbooks.Open($file)
    Start-Sleep -s 15
    write-host "Chargement du fichier : OK"
    #--------------------------------------------------------------------------------------------------------------------------------------------------------------
    # Fonction de l'enregistrement
    $Fonction.SaveAs($filename)
    Start-Sleep -s 15
    write-host "Enregistrement du fichier dans C:\Sharepoint : OK"#

    ----------------------------------------------------------------------------------------------------------------------------------------------
    # Fermeture de la feuille et du logiciel Excel
    $Fonction.Close()
    Start-Sleep -s 15
    $Excel.Quit()
    Remove-Variable Fonction,Excel
    taskkill /f /im EXCEL.EXE

    dimanche 5 juillet 2020 14:04

Toutes les réponses

  • Bonjour Charles_Ingalls

    Tu utilises des COM Object qui sont donc dépendant de la version de MS Office (Excel dans ton cas) installé sur la machine. Si tu as une vieille version d'Excel, les .xlsx elle ne connait pas. D'autre part, pour pouvoir exporter comme tu le fais, cela requiert d'avoir Excel installé sur la machine.

    Il y a un module powershell qui permet d'importer/Exporter et plein d'autres choses sans avoir Excel sur la machine (Qui installe Excel sur un serveur ?) https://www.powershellgallery.com/packages/ImportExcel/7.1.0

    Ce module c'est juste une tuerie ! Tu crées des documents Excel et tu ça les met en forme comme tu veux. Il existe plein de tuto vidéo sur le Net tant de l'auteur que d'autres pour comment s'en servir. Mon conseil : commence simple.

    cordialement

    Olivier

    lundi 6 juillet 2020 07:18
  • Bonjour,

    merci pour le retour mais cela ne correspond pas vraiment à mon besoin.

    le script fonctionnait très bien et du jour au lendemain ce n'est plus le cas.

    quand le script se lance le "saveas" enregistrer bien en .xlsx mais le fichier passe de 8000 KO a 10000 KO

    alors que quand je le fais à la main il passe à 2000ko.

    je suis vraiment perdu là.

    mardi 7 juillet 2020 12:46
  • Bon finalement j'ai trouvé il fallait rajouté la variable $FileFormat =51

    ce qui est étonnant c'est que ca fonctionnait dans cette variable avant.

    vendredi 10 juillet 2020 14:33