OVH Cloud OVH Cloud

VBA. Versions d'Excel et références...

1 réponse
Avatar
HD
Bonjour,

J'ai des macros réalisés sous Excel 97 qui fonctionne parfaitement avec
cette version... Mais avec Excel 2003 j'ai certaines macros qui plantent...

Exemple avec cette macro qui me donne le répertoire du Bureau :
Sub Buro()
Dim sPath As String
sPath = String(260, 0)
SHGetFolderPath 0, &H0, 0, 0, sPath
DeskPath = Left(sPath, InStr(sPath, vbNullChar) - 1)
End Sub

J'ai une erreur sur la fonction "String" avec le message : "Erreur de
compilation: Projet ou bibliothèque introuvable".

Dans les références j'ai effectivement en manquant : "Microsoft Windows
Common Controls 5.0 (SP2)".

Je suis sous Excel 2003 avec un Windows XP Pro SP2. Sachant que cette
version d'Excel a déja ses propres références n'y a-t-il pas de risque
(interférences dans les noms des fonctions) à installer une ancienne
référence? Peut il y avoir également d'autres problèmes de compatibilité de
ce genre entre Excel 97 et 2003 ?

Merci d'avance pour votre aide.
--
@+
HD

1 réponse

Avatar
MichDenis
Tu peux utiliser ceci :
'------------------------------------
Sub ObtenirCheminDuBureau()

Dim Obj As Object
Set Obj = CreateObject("WScript.Shell")
MsgBox Obj.SpecialFolders("Desktop")

End Sub
'------------------------------------


'Ou utiliser ceci avec API

'Déclaration des constantes et API dans le haut
'd'un module standard
'-------------------------------------------
Public Const NOERROR = 0
Public Const MAXPATH = 260
Public Const FldrDeskTop1 = &H0
Public Const FldrStartMenuPrograms = &H2
Public Const FldrMyDocuments = &H5
Public Const FldrFavorites = &H6
Public Const FldrStartMenuProgramsStartUp = &H7
Public Const FldrRecent = &H8
Public Const FldrSendTo = &H9
Public Const FldrStartMenu = &HB 'Menu démarrer
Public Const FldrDeskTop2 = &H10 'Bureau
Public Const FldrNetHood = &H13 'Voisinage réseau
Public Const FldrFonts = &H14 'Fonts
Public Const FldrShellNew = &H15 'Modèles

Public Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As Long) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" _
(ByVal pidList As Long, ByVal lpBuffer As String) As Long
'-------------------------------------------

Sub test()
MsgBox GetSpecialFolder(FldrStartMenuPrograms)
End Sub

'-------------------------------------------
'Daniel Lewis, mpep
Public Function GetSpecialFolder(CSIDL As Long) As String
Dim Result As Long
Dim sPath As String
Dim pidl As Long
Result = SHGetSpecialFolderLocation(0, CSIDL, pidl)
If Result = NOERROR Then
sPath = Space(MAXPATH)
Result = SHGetPathFromIDList(ByVal pidl, ByVal sPath)
If Result Then
GetSpecialFolder = Left(sPath, InStr(sPath, Chr(0)) - 1)
End If
End If
End Function
'-------------------------------------------


Salutations!

















"HD" a écrit dans le message de news:
Bonjour,

J'ai des macros réalisés sous Excel 97 qui fonctionne parfaitement avec
cette version... Mais avec Excel 2003 j'ai certaines macros qui plantent...

Exemple avec cette macro qui me donne le répertoire du Bureau :
Sub Buro()
Dim sPath As String
sPath = String(260, 0)
SHGetFolderPath 0, &H0, 0, 0, sPath
DeskPath = Left(sPath, InStr(sPath, vbNullChar) - 1)
End Sub

J'ai une erreur sur la fonction "String" avec le message : "Erreur de
compilation: Projet ou bibliothèque introuvable".

Dans les références j'ai effectivement en manquant : "Microsoft Windows
Common Controls 5.0 (SP2)".

Je suis sous Excel 2003 avec un Windows XP Pro SP2. Sachant que cette
version d'Excel a déja ses propres références n'y a-t-il pas de risque
(interférences dans les noms des fonctions) à installer une ancienne
référence? Peut il y avoir également d'autres problèmes de compatibilité de
ce genre entre Excel 97 et 2003 ?

Merci d'avance pour votre aide.
--
@+
HD