Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CAtDrawing Tabelle als XLS Datei

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:  CAtDrawing Tabelle als XLS Datei (2943 mal gelesen)
Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 24. Feb. 2015 10:04    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 Zusammen

Ich  habe ein Makro gefunden, welsches jede Tabelle aus CATDrawing als separat XLS Datei speicherst. Der Kode unten.
Mein problem ist, das ich will das machen nur fuer die Tabellen welche is zuerst zeige (anclicke). Ich weiss dass das ueber Selectelement3 geht. Kann mier jemand zeigen wie?

Zweite Sache: meinschmal die Tabellen haben gleiche Name und/oder der Name enthält verbotene Zeichen:

Code:
< > ? [ ] : |
oder
Code:
*

Im diesem Fahl ich kann nicht der XLS-Datei mit solche Name speichern. Ich kann auch nicht mein Datei ueberspeichern 
Wie kann ich Die Zeichen mit z.B.

Code:
_
wechseln/ tauschen vor Datei Abspeicherung?
Zweite Moeglischkeit ist, das drwtable.Name mit ein Tabelle-Index wechseln. Wie kann ich das machen?

Der Kode:

Code:

Sub CATMain()
'\\Global Declarations
Dim bigstring
Dim totalrows
Dim totalcolumns
Dim drwdoc 'As Document
Dim drwsheets 'As DrawingSheets
Dim drwsheet 'As DrawingSheet
Dim drwviews 'As DrawingViews
Dim drwview 'As DrawingView
Dim drwtables 'As DrawingTables
Dim drwtable 'As DrawingTable
Dim objExcel 'As Object
Dim objWorkbook
Dim objSheet
Dim objCell
Dim InputObjectType(0)
Dim i, j, k, r, c
Dim IsExcelRunning 'As Boolean

Set drwdoc = CATIA.ActiveDocument
If TypeName(drwdoc) <> "DrawingDocument" Then
MsgBox "This macro can only be run with a drawing document.", vbInformation, "Document not a Drawing"
Exit Sub
End If
Set drwsheets = drwdoc.Sheets
'Here I capture whether MS Excel is running already or not so we don't close it on the user
On Error Resume Next
Set objExcel = GetObject(, "Excel.Application")
If objExcel Is Nothing Then
IsExcelRunning = False 'false if user does not have excel running
Err.Clear
Else
IsExcelRunning = True 'true if the user has excel running
End If
On Error GoTo 0
'run thru every sheet
For i = 1 To drwsheets.Count
Set drwsheet = drwsheets.Item(i)
Set drwviews = drwsheet.Views
'run thru every drawing view
For j = 1 To drwviews.Count
Set drwview = drwviews.Item(j)
Set drwtables = drwview.Tables
'run thru Tables
If drwtables.Count > 0 Then
For k = 1 To drwtables.Count
Set drwtable = drwtables.Item(k)
'--Define table and extract strings to array.
totalrows = drwtable.NumberOfRows
totalcolumns = drwtable.NumberOfColumns
'Dim table()
Dim table
ReDim table(totalrows, totalcolumns)
For r = 1 To totalrows
For c = 1 To totalcolumns
table(r, c) = drwtable.GetCellString(r, c)
Next
Next
'--Open Excel
On Error Resume Next
Set objExcel = GetObject(, "Excel.Application")
If objExcel Is Nothing Then
Set objExcel = CreateObject("Excel.Application")
Err.Clear
objExcel.Visible = False
End If
On Error GoTo 0
Dim myname
'myname = Left(drwdoc.FullName, Len(drwdoc.FullName) - 11) & "_" & drwsheet.Name & "_" & drwview.Name & "_" & drwtable.Name & ".xls"
myname = Left(drwdoc.FullName, Len(drwdoc.FullName) - 11) & drwtable.Name & ".xls"
Set objWorkbook = objExcel.Workbooks.Add()
objWorkbook.Activate
Set objSheet = objWorkbook.Worksheets.Item(1)
'--Populate spreadsheet with values from array.
For r = 1 To totalrows
For c = 1 To totalcolumns
objSheet.Cells(r, c) = table(r, c)
Next
Next
objWorkbook.SaveAs myname 'ExcelWorksheet.SaveAs sFile
objWorkbook.Close
Next 'k ' table loop
End If
Next 'j ' view loop
Next 'i ' Sheet loop
If IsExcelRunning = False Then
If objExcel Is Nothing Then
MsgBox "There are no Drawing tables to export.", vbInformation, "No Tables to export"
Exit Sub
End If
objExcel.Quit ' Close Excel with the Quit method on the Application object
MsgBox "Your Catia drawing tables have been exported to Excel.", vbInformation, "Table Export Complete"
End If
End Sub


MfG

Lukas

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 24. Feb. 2015 12:25    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 Sylas 10 Unities + Antwort hilfreich

Servus
Das Selektieren sollt am einfachsten über Selectelement2 gehen. (siehe Forensuche und Doku)
Um "verboten Zeichen" zu entfernen könntest du über Zeichenketten-Methoden diese suchen und ersetzen (mehrfaches Replace mit allen "verbotenen Zeichen" siehe zB hier)
Vor dem Speichern könntest du mit "FileExists" des FileSystem-Object prüfen ob es die Datei schon gibt, wenn ja den Dateinamen entsprechend anpassen.

Gruß
Bernd


------------------
Warum einfach, wenn es auch kompliziert geht.

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

Sylas
Mitglied



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

Beiträge: 322
Registriert: 19.11.2012

Dell Precision T3500
Intel Xeon W3550 @ 3,07 GHz
12 GB RAM
CATIA V5 R28

erstellt am: 24. Feb. 2015 13: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

Zitat:
Original erstellt von bgrittmann:
Servus
Das Selektieren sollt am einfachsten über Selectelement2 gehen. (siehe Forensuche und Doku)
Um "verboten Zeichen" zu entfernen könntest du über Zeichenketten-Methoden diese suchen und ersetzen (mehrfaches Replace mit allen "verbotenen Zeichen" siehe zB hier)
Vor dem Speichern könntest du mit "FileExists" des FileSystem-Object prüfen ob es die Datei schon gibt, wenn ja den Dateinamen entsprechend anpassen.

Gruß
Bernd



Halo Bernd


Ich habe Mal Zwischenzeit das Namen-Duplizierung Problem mit zusatzlische Index gelöst :)

Code:

myname = Left(drwdoc.FullName, Len(drwdoc.FullName) - 11) & "_" & drwsheet.Name & "_" & drwtable.Name & "_" & k & ".xlsx"

Ich will aber eine spezifische Tabellen aus "Collection" rausschmeißen :). Die Tabellen heissen immer

Zitat:
RevisionTable_Table

Code:
drwtables.Remove "RevisionTable_Table"
loescht mir die Tabellen aus der Zeichnung statt aus der Selektion  

Ich muss auch der erste Blatt (Baugruppe Uebersicht)und der letzte Blatt (2D-Componente) aus drwsheets loeschen. Was interesiert mir noch, ist warum

Code:
drwsheets.item(2).name

gibts mir der Name von dem letzte Sheet from die Zeichnung... 

Und der Letzte:

Wie kann ich die Tabellen zusammenfassen und nur ein Excel-Datei kriegen?

[Diese Nachricht wurde von Sylas am 24. Feb. 2015 editiert.]

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 24. Feb. 2015 20:28    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 Sylas 10 Unities + Antwort hilfreich

Servus
zu 1)
Du musst auch die Selektion ansprechen und nicht die DrawingTabel-Collection. zB
Code:
oSelection.Remove(3)
zu 2)
Die Reihenfolge der Sheets in der Sheets-Collection entspricht nicht immer der Reihenfolge wie in der Anzeige. ggf bekommst du das Sheet mit den 2D-Components am einfachsten über die Abfrage nach "IsDetail".

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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)2023 CAD.de | Impressum | Datenschutz