| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | SolidWorks und 3D-Druck , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
|
|
Autor
|
Thema: Arbeitsblättername in Excel mit SWX VBA auslesen (544 mal gelesen)
|
Nobody1976 Mitglied

 Beiträge: 52 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 05. Jun. 2023 11:30 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich habe mir in SWX ein Makro geschrieben welches die Stückliste in eine Excel Datei ausgleitet. Nun möchte ich zum Vergleichen in die selbe Datei eine Version der Stückliste schreiben. Der aktuelle Codeauszug zum Öffnen und anlegen des Arbeitsblatts lautet wie folgt: Code: Versionsnummer = Daten_vom_3D_Modell("SAPVersion") ArbeitsblattName = "Rohdaten Vers. " & Versionsnummer & " " & savedate Set Arbeitsbereich = CreateObject("Excel.Application") Arbeitsbereich.Visible = False Set Arbeitsblatt = Arbeitsbereich.Workbooks.Open(Speicherort) Arbeitsblatt.Activate Arbeitsblatt.Worksheets.Add.Name = ArbeitsblattName Arbeitsblatt.Worksheets(ArbeitsblattName).Move After:=Arbeitsblatt.Worksheets(Arbeitsblatt.Worksheets.Count) Arbeitsblatt.Worksheets(ArbeitsblattName).Activate
Mein Problem ist jetzt, wenn ich das ganze an einem Tag 2x ausführe, blockiert das System beim Anlegen des Arbeitsblatts weil es ja schon vorhanden ist. Kann mir hier jemand weiterhelfen, wie ich die vorhandenen Arbeitsblätter auslesen kann. Danke.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1796 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 05. Jun. 2023 11:53 <-- editieren / zitieren --> Unities abgeben:          Nur für Nobody1976
ich würde das einfach mit einer kleinen Funktion prüfen Function SheetOk(Name As String) As Boolean Dim i As Integer For i = 1 To ActiveWorkbook.Sheets.Count If ActiveWorkbook.Sheets(i).Name = Name Then SheetOk = False Exit Function End If Next i SheetOk = True End Function ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nobody1976 Mitglied

 Beiträge: 52 Registriert: 20.05.2014 SWX 2022 SP5.0
|
erstellt am: 05. Jun. 2023 12:00 <-- editieren / zitieren --> Unities abgeben:         
|

| |
nahe Ehrenmitglied
    
 Beiträge: 1796 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 06. Jun. 2023 06:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Nobody1976
Hallo nochmals, wegen löschen würde ich so machen Function SheetOk(Name As String) As Boolean Dim i As Integer For i = 1 To ActiveWorkbook.Sheets.Count If ActiveWorkbook.Sheets(i).Name = Name Then SheetOk = False Exit Function End If Next i SheetOk = True End Function Function DelSheet(SheetName As String) As Boolean Dim wb As Workbook Dim ok As Boolean If SheetOk(SheetName) Then DelSheet = False Exit Function End If Set wb = ActiveWorkbook Application.DisplayAlerts = False ok = wb.Sheets(SheetName).Delete Application.DisplayAlerts = True DelSheet = ok End Function Sub main() Dim BName As String BName = "Tabelle4" If DelSheet(BName) Then MsgBox "Blatt " & BName & " gelöscht", vbOKOnly, "Meldung" Else MsgBox "Blatt " & BName & " konnte nicht gelöscht werden", vbOKOnly, "Meldung" End If End Sub ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |