Solidworks API: Erstellen einer Excel-Datei

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

 

Ich erstelle ein Makro, um eine Excel-Datei zu erstellen und ihr Informationen hinzuzufügen. Ich habe ein Problem mit der Erstellung der Excel-Datei.

Makro funktioniert 1 Mal von 2 und 1 Mal von 2 strikt. Bei der Erstellung meiner Datei denke ich, dass es ein Problem gibt, aber ich habe im Internet nachgeschaut und nichts gefunden.

 

Kann mir jemand helfen?

Hier ist mein Code-Schnipsel für die Erstellung der Excel-Datei:

 

 

 

Möglicherweise hatte ich kürzlich das gleiche Problem, schauen Sie sich die Prozesse an, nachdem Sie Ihr Makro verwendet haben, wenn Excel noch verwendet wird, bedeutet dies, dass Sie den Prozess nicht vollständig schließen und beim zweiten Start schief geht

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

 

Zum Beispiel am Ende Ihres Makros: 

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

 

Herzliche Grüße

2 „Gefällt mir“

Hallo

Wie Mandrake sagte und wie auf dem Link angegeben, auf den er verweist:

"Es riecht nach einer Excel-Ressource, die nicht freigegeben wird!!"

Herzliche Grüße

Hallo

 

Vielen Dank für Ihre Antwort. Das ist richtig, aber das Problem ist, dass ich Excel am Ende meines Makros nicht schließen möchte. Ich möchte, dass er offen bleibt.

 

Herzliche Grüße

Ich habe versucht, am Ende meines Makros hinzuzufügen:

Set xlSheet = nichts

Setze xlWB = nichts

Setze xlApp = nichts

Aber nichts hilft.

Können wir die Excel-Ressource freigeben, ohne Excel zu schließen?

 

Vielen Dank im Voraus,

Wenn Sie das Makro neu starten und es sich immer noch in derselben Datei befindet, kann es die Seiten 'SETS', 'MECHANICAL PARTS' und 'COMMERCIAL ITEMS' nicht zweimal erstellen

 

Setzen Sie eine Bedingung, wenn die Seite nicht existiert, wird sie erstellt.

Ihr Makro füllt Ihre Excel-Datei jedes Mal, wenn Sie auf die geöffnete Baugruppe klicken, erstellen / öffnen Sie jedes Mal eine neue Excel-Datei, wenn Sie alle Informationen in einer einzigen Datei speichern?

Jedes Mal, wenn ich mein Makro starte, erstelle ich eine Excel-Datei.

Ich weiß, dass es sich um ein unveröffentlichtes Problem mit Excel-Ressourcen handelt. Ich habe versucht, meine Excel-Datei über Excel zu schließen, wenn mein Makro fertig ist, und mein Makro neu zu starten, aber ich habe immer noch das gleiche Problem.

Gibt es einen Test, mit dem Sie feststellen können, ob die Ressource freigegeben ist und ob nicht, um sie freizugeben?

Versuchen Sie es mit:

Set xlWorkBook = Nothing

Set xlFeuilEnse = Nothing

Set xlFeuilMeca = Nothing 

Set xlFeuilComm = Nothing

 

Sie müssen alles, was Sie oben definiert haben, zurücksetzen.

Sie müssen in den Prozessen nachsehen, sobald Sie das Excel geschlossen haben, gehen Sie zu Ihrem Task-Manager (Strg + SHIFT + Esc) -> Prozess    und überprüfen Sie, ob es keine EXCEL.EXE

Ich habe es schon einmal versucht.

Ich habe es an das Ende meines Makros gesetzt... Aber es funktioniert nicht.

Ich habe versucht, meine Excel-Anwendung als neue Excel-Anwendung zu deklarieren, funktioniert aber auch nicht:

Dim xlApplication als neue Excel.Application

Ich habe einen Excel-Prozess, der vorhanden ist. Und ich dachte, der Prozess wurde gestoppt , als ich Excel manuell schloss, aber anscheinend nicht. 

Vielleicht ist es meine Ergänzung, die schlecht ist?

Set xlMeca Sheet = xlApplication.Sheets.Add(After:=Worksheets(Worksheets.Count))
Set xlSheetComm = xlApplication.Sheets.Add(After:=Worksheets(Worksheets.Count))

Hallo

 

Ich hatte dieses Problem auch schon einmal.

Die einzige Lösung, die ich bisher gefunden habe, besteht darin, den Excel-Prozess am Ende der Verarbeitung zu beenden.

Sonst ist er wie verloren zwischen den beiden Excel-Prozessen vorhanden und weiß nicht, in welchem er laufen soll und nimmt gleichgültig das Gute oder das Schlechte.

Die einzige Erklärung fand ich bei meinen wenigen VB-Bekannten.

Herzliche Grüße

 

A. Mendes

 

 

 

Es hängt davon ab, wie Ihre Variablen deklariert werden:

Sun xlLeafMeca As ...

Dim xlSheetComm As ...

Sind Sie gegangen, um den vorletzten Beitrag des Links zu sehen, den Sie Alraune gesetzt haben, finden Sie einige nützliche Informationen ...

Sie können auch HIER nachsehen, es gibt viele Informationen über die zu verwendende Methode.

Herzliche Grüße

Sie werden wie folgt deklariert:

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

Ich habe die Art und Weise, wie ich meine Blätter erstelle, wie folgt geändert:

    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"

 

Ich habe an dieser Stelle keinen Fehler mehr, aber ich habe einen bei der Formatierung meiner Tabelle in dieser Zeile:

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

 

Angesichts der Tatsache, dass das Problem darin besteht, dass es sich um die Formatierung handelt und dass mein Excel korrekt ausgefüllt ist, werden wir sagen, dass dieses Problem "akzeptabel" ist...

Ich glaube, ich habe das Problem gefunden: meine UNGEDULD

Anscheinend habe ich das Makro zu schnell neu gestartet, was keine Zeit ließ , den Prozess zu stoppen.