Extractie uit Excel

Hallo
Vanuit solidworks start ik een macro met een USF die waarden uit een Excel-werkmap zou moeten weergeven bij het openen ervan

Deze code werkt in Excel
haalt cel H2 op van het tabblad ' Lijst '

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

sinds Solidworks heb ik deze fout
Runtime fout ‹ 1004 ›:
De ' Bereik ' methode van het object ' _Global ' mislukte

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

Als iemand een idee heeft

Bonjour;
Ne manquerait-il pas les déclaration/references pour Excel ?

`Dim xlApp As Excel.Application
Set xlApp = New Excel.Application`

Voir (pour plus d'informations):

3 likes

Ik voegde eraan toe

Dim xlApp als Excel.Application
Stel xlApp in = Nieuwe Excel.Toepassing'

het werkt ook niet

Hallo

Tenzij ik me vergis, is het in VBA niet mogelijk om toegang te krijgen tot de inhoud van een Excel-bestand zonder het te openen.
Als het bijvoorbeeld voor een soort " database " is om een vervolgkeuzelijst te voeden, is de gemakkelijkste manier om het in een tekstbestand te schrijven en te lezen.

1 like

Ik heb net getest dat het mogelijk is op Excel, ik kan de match met Solidworks niet vinden

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:

1 like

Ik heb net getest, dus het werkt wel op Excel, maar op SW niet (fout op de bereiklijn).
Op het eerste gezicht denk ik dat het een compatibiliteitsprobleem is tussen SW, dat is in 64bit en Office in 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:

mais aussi:

Het is niet zozeer de ExecuteExcel4Macro-regel die crasht, maar de aanroep naar Range.

De foutmelding is als volgt, zoals geciteerd
De 'Range'-methode van object '_Global' is mislukt

Hallo

De bereikmethode wordt niet ondersteund via de versie van vba die in SW is geïntegreerd, dus er zijn nog twee oplossingen over (de tweede is in dit stadium nog niet getest):

  1. Maak een lus met een functie om elke gewenste kolom/rij op te halen, zie ExecuteExcel4Macro - Microsoft Community

  2. Probeer ADODB-achtige functies. Verbinding, zie Lezen en schrijven in gesloten Excel-werkmappen (developpez.com)

Ik heb dus alleen de eerste getest die goed werkt.

2 likes

kun je de juiste macro zetten, ik kan het niet doen met oplossing 1

Kunt u mij vertellen op welk bereik u de waarden wilt ophalen? (typ bijvoorbeeld A1:C2)

hier is mijn originele code die niet werkt, 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

Om het volledig te begrijpen, wil je alleen de H2-cel?

Ja

In dit geval veel eenvoudiger:

label3= ExecuteExcel4Macro("'" & Url & "[" & Fichier_Excel & "]Liste'!" & "R2C8") 'URL entrée
1 like

Geweldig, het werkt

Hier is nog een voorbeeld voor degenen die geïnteresseerd zijn

Label2 = ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C8") & "\" & _
         ExecuteExcel4Macro("'" & url & "[" & Fichier_Excel & "]Liste'!" & "R11C7") & _
         "-STEP\"  'URL sortie
2 likes

Het is nog steeds vreemd dat de functie "ExcelExcel4Macro" tabelcoördinaten zoals " Rij " +" Kolom " accepteert, maar niet het "Bereik... De geneugten van computers en zijn mysteries... :crazy_face:

1 like

Zoals ik al zei, denk ik dat de SW API op 64 bit functies staat waar het in Excel 32 is.
Als Excel in 64 was, denk ik dat er geen probleem zou zijn.
Ik heb het geval van sommige macro's die alleen kunnen worden gestart vanuit SW en zijn in fout als ik ze start vanuit Excel

2 likes