Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro zum Löschen von Spalten aus der Stückliste

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Makro zum Löschen von Spalten aus der Stückliste (259 mal gelesen)
deckelmaho
Mitglied
Konstrukteur

Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 6
Registriert: 03.03.2020

SolidWorks 2019 SP5
Windows 10 64bit
Office 2010

erstellt am: 03. Mrz. 2020 08:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich bin am verzweifeln

Ich habe bereits Code vorbereitet, dieser macht an und für sich auch was er soll (zumindest mit den "Neu" eingefügten Spalten).
Sobald ich eine der Spalten jedoch verschiebe und diese dann mittels Makro löschen möchte geht es nicht.

Boolstatus sagt auch dass er gelöscht hat, macht er aber nicht.

Code:
Private Sub DeleteColumns()
Dim i As Integer
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swFeat As SldWorks.Feature
Dim swBomFeat As SldWorks.BomFeature
Dim vTableArr As Variant
Dim swTable As SldWorks.TableAnnotation
Dim swDraw As DrawingDoc
Dim ZSpalte As Long
Dim strTMP As String
Dim Boolstatus As Boolean


'blendet alle Spalten ein
Call ShowAllColumns

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
   
    Set swFeat = swDraw.FirstFeature
    Do While Not swFeat Is Nothing
        If "BomFeat" = swFeat.GetTypeName Then
            Set swBomFeat = swFeat.GetSpecificFeature2
            vTableArr = swBomFeat.GetTableAnnotations
            Set swTable = vTableArr(0)
           
           
                'Bestehende Spalten löschen
                For ZSpalte = swTable.TotalColumnCount - 1 To 0 Step -1
                   
                    'Spaltentitel holen
                    strTMP = swTable.GetColumnTitle2(ZSpalte, True)
       
                    'Wenn "'" im Titel vorhanden, dann löschen
                    If InStr(1, strTMP, "'") >= 1 Then
                        Boolstatus = swTable.DeleteColumn2(ZSpalte, True)
                        Debug.Print "Spalte: " & strTMP & " gelöscht"
                    End If
               
       
                Next ZSpalte

       
                     
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop


End Sub



Bitte bitte helft mir


 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nahe
Ehrenmitglied



Sehen Sie sich das Profil von nahe an!   Senden Sie eine Private Message an nahe  Schreiben Sie einen Gästebucheintrag für nahe

Beiträge: 1544
Registriert: 18.01.2001

arbeite mit:
HP Z440 Workstation
Xenon (12-Kern) 3.5GHz
32GB RAM
238GB SSD
------------------------
SWX-2016 SP5.0
DBWorks-R15 SP2.17
----------------
Windows 7 64 bit
----------------
VB
VBA
Lotus Notes Datenbanken
erste Schritte mit Swift

erstellt am: 03. Mrz. 2020 09:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für deckelmaho 10 Unities + Antwort hilfreich

Hallo deckelmaho,

hast Du schon mal untersucht wie sich "TotalColumnCount" verhält, wenn Du Spalten löscht?

Meiner Erfahrung nach, kann es problematisch sein, wenn Du in einer Schleife,
was löscht und dabei die Anzahl der Elemente veränderst, die als Schleifenparameter verwendet werden.
In dem Fall ändert sich ja der Wert von "TotalColumnCount" wenn eine Spalte gelöscht wird.

Ev. bringt das Dein Makro durcheinander

Gut wäre auch noch, wenn Du Dein Profile etwas vervollständigst
Windows Ver.
SWX Ver.
SP Ver.

und ev. ein paar Bilder um das Fehlverhalten darzustellen

------------------
Grüße
Heinz

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

deckelmaho
Mitglied
Konstrukteur

Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 6
Registriert: 03.03.2020

SolidWorks 2019 SP5
Windows 10 64bit
Office 2010

erstellt am: 03. Mrz. 2020 11:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Heinz,

erst einmal Danke für deinen Ansatz.

Ich hab es auch schon mit ".ColumnCount" anstelle des ".TotalColumnCount" probiert.
Ebenfalls hab ich die Schleife mal vorwärts laufen lassen, also: "For ZSpalte = 0 To swTable.TotalColumnCount - 1" mit dem selben Ergebnis.

Profil hab ich aktualisiert 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

deckelmaho
Mitglied
Konstrukteur

Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 6
Registriert: 03.03.2020

SolidWorks 2019 SP5
Windows 10 64bit
Office 2010

erstellt am: 03. Mrz. 2020 11:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Der ColumnCount verringert sich mit dem Löschen.

Aktuelle Erkenntnis:
Die Spalten "scheinen" gelöscht zu sein. Sie sind weder bei den sichtbaren noch bei den ausgeblendeten Spalten.
Wenn ich mir jedoch die TableAnnotations neu hole, werden mir die gelöschten Spalten wieder angezeigt. Irgendwo liegen
die noch als Leiche im Hintergrund. Beim Aktualisieren (Strg + Q) sind sie wieder weg. Die GeisterSpalten werden jedoch immer mehr.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2358
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 03. Mrz. 2020 12:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für deckelmaho 10 Unities + Antwort hilfreich

Hallo,

hast du schon mal versucht das Auswerten und Löschen der Spalten zu trennen? Sprich erst in einem Array die zu löschenden Spalten sammeln und dann die im Arry stehenden Spalten von Hinten nach Vorn zu löschen.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

deckelmaho
Mitglied
Konstrukteur

Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 6
Registriert: 03.03.2020

SolidWorks 2019 SP5
Windows 10 64bit
Office 2010

erstellt am: 03. Mrz. 2020 12:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hi Bernd,

ich versuche das mal und berichte dann.
Die Idee ist nicht verkehrt

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

nahe
Ehrenmitglied



Sehen Sie sich das Profil von nahe an!   Senden Sie eine Private Message an nahe  Schreiben Sie einen Gästebucheintrag für nahe

Beiträge: 1544
Registriert: 18.01.2001

arbeite mit:
HP Z440 Workstation
Xenon (12-Kern) 3.5GHz
32GB RAM
238GB SSD
------------------------
SWX-2016 SP5.0
DBWorks-R15 SP2.17
----------------
Windows 7 64 bit
----------------
VB
VBA
Lotus Notes Datenbanken
erste Schritte mit Swift

erstellt am: 03. Mrz. 2020 13:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für deckelmaho 10 Unities + Antwort hilfreich

Eine Frage wäre auch noch, was macht "ShowAllColumns"?

------------------
Grüße
Heinz

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

deckelmaho
Mitglied
Konstrukteur

Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 6
Registriert: 03.03.2020

SolidWorks 2019 SP5
Windows 10 64bit
Office 2010

erstellt am: 03. Mrz. 2020 14:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Beispiel.jpg

 
Zitat:
Original erstellt von nahe:
Eine Frage wäre auch noch, was macht "ShowAllColumns"?


Das Zeigt vorher alle ausgeblendeten Spalten an, weil diese beim "normalen" .ColumnCount sonst nicht mitgezählt werden.

@Bernd

Ich hab jetzt die Spalten von hinten nach vorn in einem Array gespeichert und dann auch in der Reihenfolge gelöscht.

Der Fehler bleibt weiterhin, ich hole mir die TableAnnotation's und da sind sie wieder dabei. Das sogar wenn ich Solidworks komplett schließe
und neustarte.   

EDIT:
Die beiden hinteren Spalten füge ich per Makro ein, wenn ich sie dort stehen lasse kann ich sie auch mit dem o.g Makro löschen.(ohne Probleme)
Wenn ich diese verschiebe (egal ob manuell oder via VBA) dann treten die Fehler auf.

Meine letzten Versuche ergaben, selbst wenn ich die verschobenen Spalten manuell lösche (RMT Spalte löschen) besteht der Fehler.

[Diese Nachricht wurde von deckelmaho am 03. Mrz. 2020 editiert.]

[Diese Nachricht wurde von deckelmaho am 03. Mrz. 2020 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

deckelmaho
Mitglied
Konstrukteur

Sehen Sie sich das Profil von deckelmaho an!   Senden Sie eine Private Message an deckelmaho  Schreiben Sie einen Gästebucheintrag für deckelmaho

Beiträge: 6
Registriert: 03.03.2020

SolidWorks 2019 SP5
Windows 10 64bit
Office 2010

erstellt am: 03. Mrz. 2020 16:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

ERLEDIGT

Danke an alle Helferlein,

den richtigen Hinweis hat nahe aus seiner Glaskugel gelesen.
Meine ShowAllColumns Funktion hat anscheinend mehr angezeigt als sie sollte. Die Funktion entfernt und alle .TotalColumnCounts auf .ColumnCount geändert und alles läuft wie es soll.

Auch wenn es mir schwer fällt zuzugeben. Diesmal ist Solidworks nicht schuld    und das Problem war hausgemacht.

Vielen lieben Dank @all

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2020 CAD.de | Impressum | Datenschutz