Solidworks API: Een Excel-bestand maken

Set xlApplication = CreateObject("Excel.Application")
    xlApplication.Visible = True
    DoEvents
    Set xlWorkBook = xlApplication.Workbooks
    xlWorkBook.Add
    Set xlFeuilEnse = xlApplication.ActiveSheet
    DoEvents
    
    'Création et renommage des feuilles
    
    Set xlFeuilMeca = xlApplication.Sheets.Add(After:=Worksheets(Worksheets.Count))
    Set xlFeuilComm = xlApplication.Sheets.Add(After:=Worksheets(Worksheets.Count))
    xlFeuilEnse.Name = "ENSEMBLES"
    xlFeuilMeca.Name = "PIECES MECANIQUES"
    xlFeuilComm.Name = "ELEMENTS DU COMMERCE"

Hallo

 

Ik maak een macro om een Excel-bestand te maken en er informatie aan toe te voegen. Ik heb een probleem met het maken van het Excel-bestand.

Macro werkt 1 keer op 2 en 1 keer op 2 strikt. Het is in mijn creatie van mijn bestand dat ik denk dat er een probleem is, maar ik keek op het net en ik vond niets.

 

Kan iemand mij helpen?

Hier is mijn stukje code voor het maken van het Excel-bestand:

 

 

 

Ik heb misschien onlangs hetzelfde probleem gehad, kijk naar de processen, na het gebruik van je macro als Excel nog steeds in gebruik is, betekent dit dat je het proces niet volledig afsluit en dat het misgaat bij de tweede keer opstarten

https://www.lynkoa.com/forum/solidworks/probl%C3%A8me-s%C3%A9lection-fichier-api

 

Bijvoorbeeld aan het einde van je macro: 

Sub FermetureExcel()

    Set xlFeuilMeca = Nothing
    Set xlFeuilComm = Nothing

    'Fermeture du classeur et de Excel
    oXL.DisplayAlerts = False
    oXL.Workbooks.Close
    oXL.Quit
    oXL.DisplayAlerts = True
    'Désallocation de la mémoire
    Set oSH = Nothing
    Set oWB = Nothing
    Set oXL = Nothing
End Sub

 

Vriendelijke groeten

2 likes

Hallo

Zoals mandrake zei, en zoals aangegeven op de link waarnaar hij verwijst:

" het ruikt naar een Excel-bron die niet is vrijgegeven !! "

Vriendelijke groeten

Hallo

 

Dank u voor uw antwoord. Dat klopt, maar het probleem is dat ik aan het einde van mijn macro geen Excel wil sluiten. Ik wil dat hij open blijft.

 

Vriendelijke groeten

Ik probeerde toe te voegen aan het einde van mijn macro:

Set xlSheet = niets

Set xlWB = niets

Set xlApp = niets

Maar niets helpt.

Kunnen we de Excel-bron vrijmaken zonder Excel te sluiten?

 

Bij voorbaat dank,

Als u de macro opnieuw start en deze staat nog steeds in hetzelfde bestand, kan de pagina 'SETS', 'MECHANISCHE ONDERDELEN' en 'COMMERCIËLE ITEMS' niet twee keer worden gemaakt

 

Stel een voorwaarde, als de pagina niet bestaat, wordt deze gemaakt.

Uw macro vult uw Excel-bestand elke keer dat u klikt na de assemblage die open is, u maakt / opent een nieuw Excel-bestand elke keer dat u alle informatie op een enkel bestand opslaat?

Elke keer dat ik mijn macro start, maak ik een Excel-bestand.

Ik weet dat het een niet-vrijgegeven probleem met Excel-bronnen is. Ik heb geprobeerd mijn Excel-bestand via Excel te sluiten wanneer mijn macro klaar is en mijn macro opnieuw te starten, maar ik heb nog steeds hetzelfde probleem.

Is er een test waarmee u kunt weten of de bron is vrijgegeven en zo niet, dan vrijgegeven van het vrijgeven ervan?

Probeer het met:

Set xlWorkBook = Nothing

Set xlFeuilEnse = Nothing

Set xlFeuilMeca = Nothing 

Set xlFeuilComm = Nothing

 

Je moet alles wat je hierboven definieert resetten.

Je moet in de processen kijken, nadat je de Excel hebt gesloten, ga je naar je taakbeheerder (Ctrl + SHIFT + Esc) -> Proces    en controleer je of er geen EXCEL.EXE

Ik heb het eerder geprobeerd.

Ik zet het aan het einde van mijn macro ... Maar het werkt niet.

Ik heb geprobeerd mijn Excel-applicatie te declareren als een nieuwe Excel-applicatie, maar werkt ook niet:

Dim xlApplication als nieuwe Excel.Application

Ik heb wel een Excel-proces dat aanwezig is. En ik dacht dat het proces stopte toen ik Excel handmatig sloot, maar blijkbaar niet. 

Misschien is het mijn toevoeging die slecht is?

Stel xlMeca-blad in = xlApplication.Sheets.Add(Na:=Werkbladen(Werkbladen.Count))
Stel xlSheetComm in = xlApplication.Sheets.Add(Na:=Werkbladen(Werkbladen.Count))

Hallo

 

Ik heb dit probleem ook eerder gehad.

De enige oplossing die ik tot nu toe heb gevonden, is om het Excel-proces aan het einde van de verwerking te beëindigen.

Anders is hij als verdwaald tussen de twee aanwezige Excel-processen en weet hij niet in welke hij moet draaien en neemt hij onverschillig het goede of het slechte.

De enige verklaring die ik vond bij mijn weinige VB kennissen.

Vriendelijke groeten

 

A. Mendes

 

 

 

Het hangt af van hoe uw variabelen worden gedeclareerd:

Zon xlLeafMeca Als ...

Dim xlSheetComm als ...

Ben je gegaan om de voorlaatste post van de link te zien die je alruin hebt gezet, vind je wat nuttige informatie ...

Je kunt ook HIER gaan kijken, er is veel informatie over de te gebruiken methode.

Vriendelijke groeten

Ze worden als volgt aangegeven:

Dim xlFeuilMeca                                             As Excel.Worksheet
Dim xlFeuilComm                                             As Excel.Worksheet
Dim xlFeuilEnse                                             As Excel.Worksheet

Ik heb de manier waarop ik mijn werkbladen maak als volgt gewijzigd:

    xlApplication.Sheets.Add
    xlApplication.Sheets.Add
    Set xlFeuilEnse = xlApplication.ActiveSheet
    xlFeuilEnse.Name = "ENSEMBLES"
    Set xlFeuilMeca = xlApplication.Sheets(2)
    xlFeuilMeca.Name = "PIECES MECANIQUES"
    Set xlFeuilComm = xlApplication.Sheets(3)
    xlFeuilComm.Name = "ELEMENTS DU COMMERCE"

 

Ik heb geen bug meer op deze plek, maar ik heb er een op de opmaak van mijn spreadsheet op deze regel:

xlFeuilMeca.ListObjects.Add(xlSrcRange, Range(xlFeuilMeca.Cells(5, 1), xlFeuilMeca.Cells(i - 1, 7)), , xlYes).Name = "Tableau1"

 

Gezien het feit dat het probleem is dat bij het formatteren en dat mijn Excel correct is ingevuld, zullen we zeggen dat dit probleem "acceptabel" is...

Ik denk dat ik het probleem heb gevonden: mijn ONGEDULD

Blijkbaar was ik de macro te snel opnieuw aan het opstarten, waardoor er geen tijd overbleef om het proces te stoppen.