Auteur de questions
enregistrement en .xlsx endommagé

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
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
-
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à.
-