Bonjour,
depuis solidworks je lance une macro avec un usf qui doit afficher à l’ouverture des valeurs d’un classeur excel sans l’ouvrir
ce code fonctionne dans excel
récupère la cellule H2 de l’onglet ‹ Liste ›
sub Excel_test()
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
Cells(1, 10) = ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
depuis Solidworks j’ai cette erreur
Erreur d’exécution ‹ 1004 ›:
La méthode ‹ Range › de l’objet ‹ _Global › a échoué
Private Sub UserForm_Initialize()
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
si quelqu’un a une idée
Bonjour ; Ne manquerait-il pas les déclaration/références pour Excel ?
`Dim xlApp As Excel.Application
Set xlApp = New Excel.Application`
Voir (pour plus d’informations) :
Compte tenu de l’omniprésence de Microsoft Excel dans les services d’ingénierie du monde entier, il n’est pas surprenant que notre tutoriel « Utilisation de Microsoft Excel avec l’API SolidWorks », disponible pour les membres Premium, soit l’un de nos plus populaires. Bien que je ne vais pas couvrir...
Temps de lecture estimé : 7 minutes
3 « J'aime »
j’ai rajouté
Dim xlApp As Excel.Application
Set xlApp = New Excel.Application`
cela ne fonctionne pas plus
Bonjour,
Sauf erreur de ma part, en VBA, il n’est pas possible d’accéder au contenu d’un fichier Excel sans l’ouvrir.
Si c’est pour un genre de « base de donnée » pour alimenter une liste déroulante par exemple, le plus simple est d’écrire ça dans un fichier texte et de le lire.
1 « J'aime »
je viens de tester c’est possible sur excel, je ne trouve pas la correspondance avec Solidworks
sub Excel_test()
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
Cells(1, 10) = ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
et en remplaçant
Cells(1, 10) = ExecuteExcel4Macro(.....
par
Set xlapp = CreateObject("Excel.application")
Label13 = xlapp.ExecuteExcel4Macro(.....
des pistes relativement identiques ici :
Excel, VBA, Excel-4.0
1 « J'aime »
Je viens de tester, donc ça fonctionne effectivement sur Excel mais sur SW non (erreur à la ligne range).
En première approche je pense que c’est un problème de compatibilité entre SW qui est en 64bit et Office en 32bit.
essayez avec GetObject(« Excel.Application ») à la place de CreateObject(« Excel.Application ») … il faut aussi penser à « tuer » tous les processus excel residuels : shell « TASKKILL /F /IM Excel.exe », vbHide A voir aussi :
Correction de l’erreur dans la macro qui se connecte à la base de données (e.g. SQL, MySql, Oracle, MS Access etc.) ou à toute autre source de données et ne lit pas/écrit les valeurs ou affiche une erreur
mais aussi :
Merci Yves.T ,
Il me maquait la référence « Microsoft Excel XX.X Object library ».
Comment fait-on pour savoir quelles références sont nécessaires pour quel code ??
Sinon, pour alimenter ma Combobox j’ai utilisé le code suivant :
Sous-marin privé UserForm_Initialize()
Dim i As Octet
Dim e As String
i = 1
Faire
ComboBox1.AddItem ExecuteExcel4Macro("'C :\Documents and Settings\mimi\dossier\excel\[ClasseurBase.xlsx]Feuil1' ! R » & i & « C1 »)
i = i + 1
e = ExecuteExcel4Macro("'C :\Documents et ...
C’est pas tant la ligne ExecuteExcel4Macro qui plante mais l’appel à Range.
Le message d’erreur est le suivant, comme cité
La méthode ‹ Range › de l’objet ‹ _Global › a échoué
Bonjour,
La méthode range n’étant pas gérée via la version de vba intégrée à SW il reste deux solutions (pas testée la seconde à ce stade):
Créer une boucle avec une fonction de récupération de chaque colonne/ligne souhaitées, voir ExecuteExcel4Macro - Communauté Microsoft
Essayer les fonctions de type ADODB.Connection, voir Lire et écrire dans les classeurs Excel fermés (developpez.com)
Je n’ai donc testé que la première qui fonctionne correctement.
2 « J'aime »
peux tu mettre la macro adaptée, je n’y arrive pas avec la solution 1
Tu peux juste m’indiquer sur quelle plage tu veux récupérer les valeurs? (type A1:C2 par exemple)
voila mon code original qui ne fonctionne pas, H2
Private Sub UserForm_Initialize()
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks
Url = "C:\Users\xx\Documents\SYSTEL\02-PROG\Macros\"
Fichier_Excel = "PART_Step.xlsm"
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & Range("H2").Address(, , xlR1C1)) 'URL entrée
end sub
Pour bien comprendre, tu veux juste la cellule H2?
Cyril.f
Septembre 5, 2024, 10:38
17
Dans ce cas, beaucoup plus simple:
label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & "R2C8") 'URL entrée
1 « J'aime »
super, ça fonctionne
voici un autre exemple pour ceux que ça intéresse
Label2 = ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C8") & "\" & _
ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C7") & _
"-STEP\" 'URL sortie
2 « J'aime »
Maclane
Septembre 5, 2024, 12:53
19
C’est tout de même etrange que la fonction " ExecuteExcel4Macro" accepte des coordonnée de tableau type « Row »+« Column » mais pas le "Range…Les joies de l’informatique et ses mystères…
1 « J'aime »
Comme je l’ai dit je pense que l’API SW est sur des fonctions 64 bit là où dans Excel c’est du 32.
Si Excel était en 64 je pense qu’il n’y aurait pas de problème.
J’ai le cas de certaines macros qui ne peuvent se lancer que depuis SW et sont en erreur si je les lancent depuis Excel
2 « J'aime »