Bonjour à tous !!
Au boulot, nous venons (enfin!) de migrer de office 2003 vers office 2007..
Bon, j'ai une macro qui installe une barre d'outils dans Excel avec une gestion de mise à jour distribuée par le réseau.
Je suis en train de porter cette macro de 2003 vers 2007 et je tombe sur un os.....
Voici le code que j'utilise sous 2003 :
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
| Public Const NomFichierXLA As String = "ma_barre.xlam"
Public Const BarreOutils As String = "Ma Barre d'Outils"
Public Sub InstallToolsBar()
' Variables
Dim libPath As String
' Ajout de la Macro Complémentaire
On Error Resume Next
libPath = Application.UserLibraryPath
If Right(libPath, 1) <> "\" Then libPath = libPath & "\"
ThisWorkbook.IsAddin = True '<-- Définition macro complémentaire (XLAM)
ThisWorkbook.SaveAs Filename:=libPath & NomFichierXLA
If Err.Number > 0 Then
MsgBox "Installation """ & BarreOutils & """ :" & vbCrLf _
& "- Erreur n°" & Err.Number & " : " & Err.Description & vbCrLf _
& vbCrLf & "Traitement interrompu...", vbCritical, BarreOutils
Else
Workbooks.Add
Application.AddIns.Add(libPath & NomFichierXLA).Installed = True
MsgBox "Installation """ & BarreOutils & """ :" & vbCrLf _
& "- La barre d'outils à été installée avec succès !" & vbCrLf _
& vbCrLf & "Traitement terminé...", vbInformation, BarreOutils
ThisWorkbook.Close
End If
End Sub |
La ligne en rouge me génère l'erreur n°1004 ("Impossoble d'utiliser cette xtension avec le type de fichier sélectionné. Modifiez l'extension du fichier dans la zone de texte Nom de fichier ou sélectionnez un autre type de fichier dans la zone Type de fichier.")
Cette manip pour passer un xls en xla fonctionne très bien avec XL-2003....
Si quelqu'un a une idée, je suis preneur !!!!!
Merci par avance !!!!!!!
===== EDIT =====
J'ai trouvé la solution pour ce problème.... Il faut préciser le type de fichier à la sauvegarde !
ThisWorkbook.SaveAs Filename:=libPath & NomFichierXLA, FileFormat:=xlOpenXMLAddIn
======================
Par contre, j'ai un autre soucis à la mise à jour en automatique (distribution via un serveur), je n'arrive pas à remplacer le fichier dans le répertoire addin... Ce code fonctionne sous Excel 2003 :
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
| .......
If retMsgBox = vbYes Then
' Sauvegarde de l'ancienne version
Kill Left(Macro.FullName, Len(Macro.FullName) - 5) & "(old).xlam"
ThisWorkbook.SaveAs Left(Macro.FullName, Len(Macro.FullName) - 5) & "(old).xlam", FileFormat:=xlOpenXMLAddIn
Err.Clear
' Installation de la mise à jour
FileCopy NetworkPathTmp & NomFichierXLA, Macro.FullName
If Err.Number = 0 Then
MsgBox "Barre d'outils """ & BarreOutils & """ :" & vbCrLf _
& "- La mise à jour a été effectuée avec succès. Veuillez " & vbCrLf _
& "redémarrez Excel pour qu'elle soit effective." & vbCrLf, _
vbInformation + vbOKOnly, BarreOutils
Else
MsgBox "Une erreur s'est produite lors de l'installation :" & vbCrLf _
& "- Erreur n°" & Err.Number & " : " & Err.Description & vbCrLf _
& vbCrLf & "Traitement interrompu...", vbCritical, BarreOutils
End If
Else
MsgBox "Barre d'outils """ & BarreOutils & """ :" & vbCrLf _
& "- La prochaine vérification aura lieu dans " & NbJourChkIn & " jours !" _
& vbCrLf, vbExclamation + vbOKOnly, BarreOutils
End If
End If
End If
Exit For
End If
Next Macro
CheckVersion = Err.Number
Set Fso = Nothing
Set Macro = Nothing
End Function |
La ligne en rouge me génère l'erreur n°70 (Permission refusée)
Est ce que quelqu'un aurait une solution à me proposer....??
Merci à tous par avance !!!
Partager