Autor
|
Thema: Catscript Excel Tabelle kopieren und einfüge (1252 mal gelesen)
|
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 16. Sep. 2020 14:19 <-- editieren / zitieren --> Unities abgeben:
Hallo. Wie kann ich aus einer Excel-Datei ein Arbeitsblatt kopieren und in eine andere (vorhadene) Excel-Datei einfügen. mit objXL3.WorkSheets.("Material").Copy macht Catia eine ganz neue Excel-Datei auf und kopiert mir dieses Materialblatt hinein. '-------------------funktioniert alles nicht-------------------------------------------------- objXL3.WorkSheets.("Material").Copy Before:=objXL1("Schein.xlsx").Worksheets("Fremdvergabe")
objXL3.Worksheets("Material").Copy Before:=objXL1("Z:\XXXXXXX\Schein.xlsx").Worksheets(2) mfg BLD
------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2770 Registriert: 18.07.2012 HP Z400 Workstaion CPU: Intel Xeon 6x 3,33GHz GPU: NVIDEA Quadro 2000 RAM: 12 GB DDR3 Win 7 x64 CAD Hauptberuflich -Solid Works 2015 SP4 -Creo Elements Direct Drafting (ME10) DMS/PDM -Pro.File V8 (8.4) Simulation -Simufact Forming 11.0 CAD Nebenberuflich -Pro Engineer WF 3+4 -Creo Parametric 2.0
|
erstellt am: 16. Sep. 2020 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Hallo BLD, ich würde das im Catia Brett nachfragen da es hier ja um die Catia API handelt wie es scheint oder nutzt Catscript die normalen VBA Methoden? 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 |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 16. Sep. 2020 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
|
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 16. Sep. 2020 15:26 <-- editieren / zitieren --> Unities abgeben:
Hallo. Bin mir da garnicht sicher was Catia akzeptiert oder nicht. Mal so mal so. Wie würdest du es in VBA lösen? Mit freundlichen Grüßen Bld1983 ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 16. Sep. 2020 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Hi, Ich kenne jetzt Catia nicht, stehen denn auf den Tabellen besondere Verknüpfungen. Was passiert wenn Du unten manuell rechte Maustaste auf den Arbeitsblattnamen gehst und dann "verschieben oder kopieren" Wenn das auf Catia keine Auswirkungen hat, könnte man auch VBA-Funktionen verwenden. Aber immer schön der Reihe nach Grüße Klaus [Edit]Ach ja und zum Code: Ein wenig mehr wäre auch hilfreich. Wie ist objXL1 und objXL3 definiert? Warum objXL1("Schein.xlsx").Worksheets("Fremdvergabe") ? Ist denn objXL1 nicht bereits das angezielte Workbook?
[Diese Nachricht wurde von KlaK am 16. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2770 Registriert: 18.07.2012 HP Z400 Workstaion CPU: Intel Xeon 6x 3,33GHz GPU: NVIDEA Quadro 2000 RAM: 12 GB DDR3 Win 7 x64 CAD Hauptberuflich -Solid Works 2015 SP4 -Creo Elements Direct Drafting (ME10) DMS/PDM -Pro.File V8 (8.4) Simulation -Simufact Forming 11.0 CAD Nebenberuflich -Pro Engineer WF 3+4 -Creo Parametric 2.0
|
erstellt am: 16. Sep. 2020 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Hallo, Code: Dim exWB_Material As Workbook Dim exWB_Schein As WorkbookSet exWB_Material = Workbooks.Open("C:\...\...\Material.xlsx") Set exWB_Schein = Workbooks.Open("C:\...\...\Schein.xlsx") exWB_Material.Sheets("Material").Copy Before:=exWB_Schein.Sheets(Worksheets(2))
So hab ich das jetzt in einem anderen Forum gelesen, nur mit der Einfügeposition bin ich mir jetzt nicht ganz sicher, die Beispiele waren alle mit Einfügen an letzter Stelle also mit "After" statt "Before". Bin in Excel VBA nicht so fit . Gruß Bernd EDIT: Jetzt ist ja ein VB(A) Profi (Klaus) da, der kann dir bestimmt besser helfen. ------------------ --- Man muß nicht alles wissen, man muß nur wissen wo es steht --- Staatlich anerkannte Deutschniete [Diese Nachricht wurde von bk.sc am 16. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 17. Sep. 2020 07:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus. Zitat: [Edit]Ach ja und zum Code: Ein wenig mehr wäre auch hilfreich. Wie ist objXL1 und objXL3 definiert? Warum objXL1("Schein.xlsx").Worksheets("Fremdvergabe") ? Ist denn objXL1 nicht bereits das angezielte Workbook?
Tja was soll ich dir antworten....ich hab einfach keinen Durchblick in VBA '-------------------------------------------------------------------------------- Dim objXL1 As Excel.Workbook Dim objXL2 As Excel.Workbook Dim objXL3 As Excel.Workbook
Dim objXL01 As Excel.Application Dim objXL02 As Excel.Application Dim objXL03 As Excel.Application Set objXL01 = CreateObject("Excel.Application") Set objXL1 = objXL01.Workbooks.Open("Z:\.....\Schein.xlsx")
'----------------------------------------------Liste für TEILSUCHE----------------------------------------------------------------------------------------- Set objXL02 = CreateObject("Excel.Application") Set objXL2 = objXL02.Workbooks.Open("Z:\.....\LISTE1.xlsx") '----------------------------------------------------------------------------------------------------- Set objXL03 = CreateObject("Excel.Application") Set objXL3 = objXL03.Workbooks.Open("Z:\........\Material..xlsx") objXL01.Visible = True objXL02.Visible = True objXL03.Visible = True
objXL03.Sheets("Material").Copy Before:=objXL01.Sheets(Worksheets(2)).............hier kommt die Fehlermeldung : Copy Methode konnte nicht ausgeführt werden
------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 778 Registriert: 18.05.2005 SolidWorks 2020 x64 SP3.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 21H1 Microsoft Office 365 ProPlus Microsoft Visual Studio Enterprise 2022
|
erstellt am: 17. Sep. 2020 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Versuch es einmal mit nur einen Excel-Instanz. Das Kopieren zwischen verschiedenen Excel-Instanzen geht meiner Meinung nach nicht. Code: Dim objXL1 As Excel.Workbook Dim objXL2 As Excel.Workbook Dim objXL3 As Excel.WorkbookDim objXL01 As Excel.Application Set objXL01 = CreateObject("Excel.Application") Set objXL1 = objXL01.Workbooks.Open("Z:\.....\Schein.xlsx") '---------- Liste für TEILSUCHE ---------- Set objXL2 = objXL01.Workbooks.Open("Z:\.....\LISTE1.xlsx") '----------------------------------------- Set objXL3 = objXL01.Workbooks.Open("Z:\........\Material..xlsx") objXL01.Visible = True objXL03.Sheets("Material").Copy Before:=objXL01.Sheets(Worksheets(2))
------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 17. Sep. 2020 11:03 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry. Habe ich auch aber dann werden mit objXL01.Visible = True alle 3 Datein sichbar. und mit objXL1.Visible = True kommt eine Fehlermeldung. dein code mit: objXL03.Sheets("Material").Copy Before:=objXL01.Sheets(Worksheets(2)) kann auch nicht funktionieren da nicht definiert und bei: objXL3.Sheets("Material").Copy Before:=objXL1.Sheets(Worksheets(2)) kommt fehelrmeldung Type mismatch
------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Sep. 2020 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Servus Obwohl ich keine Ahnung von Excel hab, misch ich mich mal ein. Visible gibt es vermutlich nur bei der Application (siehe Doku, und ein Hoch auf sinnvolle Variablenname) Schon mal Before:=objXL1.Sheets(2) probiert? ggf den Code erst mal in Excel-VBA aufbauen/testen und dann überführen (Intellisense, eventuell eindeutigere Fehlermeldungen, ...). Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 17. Sep. 2020 13:40 <-- editieren / zitieren --> Unities abgeben:
Hall Bernd. Danke Bernd Before:=objXL1.Sheets(2) funktioniert... ....Before:=objXL1.Sheets(2) hatte ich ausprobiert, jedoch hatte ich vorher 3 Applicationen und da funktioniert es nicht. So aber wie mache ich jetzt nur objXL1. sichtbar. objXL01.Visible = True macht jetzt alle 3 Dateien auf. objXL1.Visible = Fehlermeldung ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. [Diese Nachricht wurde von BLD1983 am 17. Sep. 2020 editiert.] [Diese Nachricht wurde von BLD1983 am 17. Sep. 2020 editiert.] [Diese Nachricht wurde von BLD1983 am 17. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 17. Sep. 2020 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Hi, Mal eine Variante für Excel: Code:
Sub Copy_Test() ' CAD.de 17.09.2020 BLD1983' Wenn das Programm in Autocad oder Catia ausgeführt werden soll ' müssen dort die entsprechenden Verweise (Type Library) aktiviert sein '-------------------------------------------------------------------------------- ' Dim oExcel As Object ' << nur erforderlich wenn Excel nicht bereits geöffnet ist ' Set oExcel = CreateObject("Excel.Application") Dim objXL1 As Excel.Workbook Dim objXL2 As Excel.Workbook Dim objXL3 As Excel.Workbook ' Nachfolgende Aufrufe sind nicht nötig ' Dim objXL01 As Excel.Application ' Dim objXL02 As Excel.Application ' Dim objXL03 As Excel.Application ' Set objXL01 = CreateObject("Excel.Application") ' Set objXL1 = objXL01.Workbooks.Open("Z:\.....\Schein.xlsx") Set objXL1 = Workbooks.Open("Z:\...\Schein.xlsx")
'----------------------------------------------Liste für TEILSUCHE----------------------------------------------------------------------------------------- ' Set objXL02 = CreateObject("Excel.Application") ' nicht erforderlich ' Set objXL2 = objXL02.Workbooks.Open("Z:\.....\LISTE1.xlsx") '----------------------------------------------------------------------------------------------------- ' Set objXL03 = CreateObject("Excel.Application") ' nicht erforderlich Set objXL3 = Workbooks.Open("z:\..\Material.xlsm") ' objXL01.Visible = True ' objXL02.Visible = True ' objXL03.Visible = True
' objXL3.Sheets("Material").Copy Before:=objXL01.Sheets(Worksheets(2)) ' hier kommt die Fehlermeldung : Copy Methode konnte nicht ausgeführt werden objXL3.Worksheets("Material").Copy Before:=objXL1.Worksheets(2) ' So sollte es gehen ' Arbeitsblatt anzeigen objXL1.Worksheets(2).Activate ' oder alternativ kopiertes Blatt anzeigen: ' objXL1.Worksheets("Material").Activate Stop ' Dateien schließen objXL3.Close (False) ' ohne Speichern objXL1.Close (True) ' Mit Speichern MsgBox "Kopieren beendet" End Sub
Grüße Klaus [Diese Nachricht wurde von KlaK am 18. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 22. Sep. 2020 09:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus. Erstmals danke. Habe deinen Code in Excel ausprobiert und da gehen Set objXL1 = Workbooks.Open("Z:\.....\Schein.xlsx") Set objXL2 = Workbooks.Open("Z:\.....\LISTE1.xlsx") Set objXL3 = Workbooks.Open("z:\..\Material.xlsm") automatisch auf und mit objXL1.Worksheets(2).Activate aktiviert sich das eingefügte Blatt. In Catia geht ohne Dim objXL01 As Excel.Application und Set objXL01 = CreateObject("Excel.Application") natürlich garnichts, und wird nur mit objXL01.Visible = True angezeigt. Vielleicht denke ich zu kompliziert....ist es überhaupt notwendig Set objXL3 = Workbooks.Open("z:\..\Material.xlsm") zu öffnen um das Sheets("Material") zu kopieren? mfg BLD ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 22. Sep. 2020 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Hallo BLD, Zitat: Original erstellt von BLD1983: In Catia geht ohne Dim objXL01 As Excel.Application und Set objXL01 = CreateObject("Excel.Application") natürlich garnichts, und wird nur mit objXL01.Visible = True angezeigt. [/i]
Jein, ich teste erst einmal ob Excel bereits offen und ob das benötigte Arbeitsblatt geladen ist Code:
Dim oXL As Excel.ApplicationSet oXL = GetObject(, "Excel.Application") If oXL Is Nothing Then Set oXL = New Excel.Application End If Dim oWB1 As Workbook Set oWB1 = oXL.Workbooks("Material.xlsm") If oWB1 Is Nothing Then Set oWB1 = Workbooks.Open("z:\..\Material.xlsm") End If
Zitat: Original erstellt von BLD1983: Vielleicht denke ich zu kompliziert....ist es überhaupt notwendig Set objXL3 = Workbooks.Open("z:\..\Material.xlsm") zu öffnen um das Sheets("Material") zu kopieren? [/i]
Auch hier ein klares Jein Wenn in der Arbeitsmappe mehrere Blätter sind mußt Du es öffnen, sonst weiß Excel ja nicht was es entnehmen soll Aber Du musst es ja nicht unbedingt darstellen Vor dem Öfnnen der Arbeitmappe Application.ScreenUpdating = False dann Kopieren durchführen, Arbeitsmappe schließen und wieder auf True setzen. Hast Du in der Arbeitsmappe nur eine Tabelle, würde es auch ohne öffnen gehen Sheets.Add after:=Sheets(Sheets.Count), Type:="T:\Test\beta\datei.xls" Grüße Klaus [Edit] Noch mal zum Ansprechen der geöffneten Blätter: Sinnvollerweise sollte man natürlich einen Boolean mitführen der Dir sagt ob Du eine neue Application / Workbook geöffnet hast oder auf eine offenes zugegriffen hast. Nicht dass das Programm unerwünschterweise die Datei schließt. Und natürlich sollte man die Objektbindungen wieder lösen (Set oWB1 = Nothing) um Speicherplatz freizugeben. Macht End (Sub) zwar theoretisch automatisch, wenn es eine Prozedurvariable ist, aber bei Programmabstürzen, offenen "On Error goto ..." Anweisungen kannst Du gelegentlich hübsche Überraschungen erleben. Nur mal so als Hinweis da Du ja geschrieben hast, Du kennst VBA noch nicht so gut
[Diese Nachricht wurde von KlaK am 22. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bk.sc Ehrenmitglied V.I.P. h.c. Konstrukteur Sondermaschinenbau
Beiträge: 2770 Registriert: 18.07.2012 HP Z400 Workstaion CPU: Intel Xeon 6x 3,33GHz GPU: NVIDEA Quadro 2000 RAM: 12 GB DDR3 Win 7 x64 CAD Hauptberuflich -Solid Works 2015 SP4 -Creo Elements Direct Drafting (ME10) DMS/PDM -Pro.File V8 (8.4) Simulation -Simufact Forming 11.0 CAD Nebenberuflich -Pro Engineer WF 3+4 -Creo Parametric 2.0
|
erstellt am: 22. Sep. 2020 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Hallo, Zitat: Vielleicht denke ich zu kompliziert....ist es überhaupt notwendig Set objXL3 = Workbooks.Open("z:\..\Material.xlsm") zu öffnen um das Sheets("Material") zu kopieren?
Kurzanwort Ja es ist notwendig. Ohne die geöffneten (geladenen) Dokumente aus dem du kopieren und wohin du kopieren willst kannst du in Excel nichts kopieren. Du könntest nur evtl. verhindern das es beim Öffnen in den Vordergrund gebracht wird, dafür musst du "Application.ScreenUpdating = False" setzen vor dem Öffnen des Dokumentes. 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 |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 23. Sep. 2020 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, Hallo Bernd. Danke Klaus, Danke Bernd Bei mir führt dieser Code zum gewünschten Zeil: '---------------------------------------------------------------- Dim objXL1 As Excel.Workbook Dim objXL2 As Excel.Workbook Dim objXL3 As Excel.Workbook Dim objXL01 As Excel.Application Set objXL01 = CreateObject("Excel.Application") '---------------------------------------------- Set objXL1 = Workbooks.Open("Z:\.....\Schein.xlsx") '---------- Liste für TEILSUCHE --------------- Set objXL2 = Workbooks.Open("Z:\....\SUCHE.xlsx") '---------------------------------------------- Set objXL3 = Workbooks.Open("Z:\....MATERIAL.xlsx") objXL01.Windows("MATERIAL.xlsx").Visible = False objXL01.Windows("SUCHE.xlsx").Visible = False 'objXL01.Windows(1).Visible = False '.........mit 1 funktioniert es auch- 1 Steht für das zuletzt geöffnete Fenster (akutelle Fenster) objXL01.Visible = True objXL3.Sheets("Material").Copy Before:=objXL1.Sheets(2) objXL1.Worksheets(2).Activate 'objXL1.Close (False) objXL2.Close (False) objXL3.Close (False) '-------------------------------------------------------------------- Mfg Dragan ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 23. Sep. 2020 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
|
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 23. Sep. 2020 13:39 <-- editieren / zitieren --> Unities abgeben:
Nein Halt STOP, da war ich zu voreilig In VBA funktioniert es... In CatScript funktioniert zwar das Ausblenden der xls-Datein jedoch fügt er nichts in "Schein.xlsx" ein.... objXL3.Sheets("Material").Copy Before:=objXL1.Sheets(2).... Ich muss mal Tippfehler suchen ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 23. Sep. 2020 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Ok, Häckchen wieder weg Du kannst ja probehalber mal .Sheets() mit .Worksheets() ersetzen. Sollte zwar keinen Unterschied machen aber wer weiß. Hintergrund: Sheets beinhaltet alle Tabellen, also auch Diagramme, Worksheets nur die Tabellen. Mal ohne die .visible - Anweisungen getestet? Nachdem ich CATIA nicht habe, kann ich hier nur raten. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 24. Sep. 2020 10:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus. mit .Sheets() oder mit .Worksheets() macht es in Catia auch keinen Unterschied Ohne objXL01.Visible = True wird nichts angezeigt....mit objXL01.Windows("MATERIAL.xlsx").Visible = False zeige ich die nicht benötigten Datein nicht an. Somit ist es für mich OK. 1. Lösungweg für Catia '---------------------------------------------------------------- Dim objXL1 As Excel.Workbook Dim objXL2 As Excel.Workbook Dim objXL3 As Excel.Workbook Dim objXL01 As Excel.Application Set objXL01 = CreateObject("Excel.Application") '---------------------------------------------- Set objXL1 = Workbooks.Open("Z:\.....\Schein.xlsx") '---------- Liste für TEILSUCHE --------------- Set objXL2 = Workbooks.Open("Z:\....\SUCHE.xlsx") '---------------------------------------------- Set objXL3 = Workbooks.Open("Z:\....MATERIAL.xlsx") objXL01.Windows("MATERIAL.xlsx").Visible = False objXL01.Windows("SUCHE.xlsx").Visible = False 'objXL01.Windows(1).Visible = False '.........mit 1 funktioniert es auch- 1 Steht für das zuletzt geöffnete Fenster (akutelle Fenster) objXL01.Visible = True Call objXL3.Sheets("Material").Copy (,objXL1.Sheets(2))) 'Sheet("Material") wird kopiert und in "Schein.xlsx" nach Sheets(2) eingefügt Call objXL3.Sheets("Material").Copy (objXL1.Sheets(2))) 'Ohne Beistrich wird es davor eingefügt. objXL1.Worksheets(2).Activate 'objXL1.Close (False) objXL2.Close (False) objXL3.Close (False) '-------------------------------------------------------------------- 2. Lösungsansatz: Mit z.B. Set EingefuegtesBlatt = objXL3.Sheets("Material").Copy (,objXL1.Sheets(2)) kopiert es das Blatt und fügt es auch ins "Schein.xlsx" ein, jedoch kommt die Fehlermeldung "Objekt erforderlich objXL3.Sheets(...)Copy(...)" Ich als End_Loooser versteh nicht was ihm fehlt. Mfg Dragan ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 24. Sep. 2020 11:45 <-- editieren / zitieren --> Unities abgeben:
Ich kann meinen Beitrag nicht editieren deswegen so... '----------------------------------------------------------- Set objXL1 = objXL01.Workbooks.Open("Z:\.....\Schein.xlsx") '---------- Liste für TEILSUCHE --------------- Set objXL2 = objXL01.Workbooks.Open("Z:\....\SUCHE.xlsx") '---------------------------------------------- Set objXL3 = objXL01.Workbooks.Open("Z:\....MATERIAL.xlsx") '---------------------------------------------------------- ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. [Diese Nachricht wurde von BLD1983 am 24. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 25. Sep. 2020 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
Zitat: Original erstellt von BLD1983: 2. Lösungsansatz:Mit z.B. Set EingefuegtesBlatt = objXL3.Sheets("Material").Copy (,objXL1.Sheets(2)) kopiert es das Blatt und fügt es auch ins "Schein.xlsx" ein, jedoch kommt die Fehlermeldung "Objekt erforderlich objXL3.Sheets(...)Copy(...)"
sheets.copy hat keinen Rückgabewert den es der Variablen EingefuegtesBlatt zuweisen könnte. Möglich wäre: Set EingefuegtesBlatt = objXL1.Sheets("Material") Damit kannst Du überprüfen ob der Kopiervorgang erfolgreich war wenn Du nicht eh eine Fehlerüberwachung eingebaut hast (was immer sinnvoll ist). Aber wenn der 1. Lösungsansatz funktioniert ist doch alles prima auch wenn man nicht verstehen muß warum Catia so einen Eigenweg beschreitet. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BLD1983 Mitglied Konstrukteur
Beiträge: 87 Registriert: 27.09.2019 Catia V5 / R26 intel core i7-6700 cpu @ 3.40ghz RAM: 32GB 64Bit
|
erstellt am: 25. Sep. 2020 12:17 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus. Dim objXL1 As Excel.Workbook Dim objXL2 As Excel.Workbook Dim objXL3 As Excel.Workbook Dim objXL01 As Excel.Application Set objXL01 = CreateObject("Excel.Application") '---------------------------------------------- Set objXL1 = objXL01.Workbooks.Open("Z:\.....\Schein.xlsx") '---------- Liste für TEILSUCHE --------------- Set objXL2 = objXL01.Workbooks.Open("Z:\....\SUCHE.xlsx") '---------------------------------------------- Set objXL3 = objXL01.Workbooks.Open("Z:\....MATERIAL.xlsx") objXL01.Windows("MATERIAL.xlsx").Visible = False objXL01.Windows("SUCHE.xlsx").Visible = False objXL01.Visible = True EingefuegtesBlatt = objXL3.Sheets("Material").Copy (objXL1.Sheets(2)) 'objXL1.Close (False) objXL2.Close (False) objXL3.Close (False) '----------------------------------------------------------------------------- EingefuegtesBlatt = objXL3.Sheets("Material").Copy (objXL1.Sheets(2)) ohne Set funktioniert es
und wie geschrieben mit Call objXL3.Sheets("Material").Copy (objXL1.Sheets(2)) DANKE KLAUS, jetzt kannst du es als erledigt markieren. mfg Dragan ------------------ Ich will es gar nicht wissen, aber ich muss.....Das Leben verlangt es. [Diese Nachricht wurde von BLD1983 am 25. Sep. 2020 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 Office 2010; Office365 Visual Basic
|
erstellt am: 25. Sep. 2020 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für BLD1983
|