Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Catscript Excel Tabelle kopieren und einfüge

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:  Catscript Excel Tabelle kopieren und einfüge (1252 mal gelesen)
BLD1983
Mitglied
Konstrukteur


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

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 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.

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



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: 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 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 BLD1983 10 Unities + Antwort hilfreich

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




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

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 16. Sep. 2020 15:12    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 BLD1983 10 Unities + Antwort hilfreich

Bisserl gemein, den armen user im Kreis zu schicken 
Ich würd's aber auch eher drüben ansiedeln...

Melde Dich, dann schließe ich einen von beiden threads 

------------------
Gruß,
runkelruebe          Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

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

BLD1983
Mitglied
Konstrukteur


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

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 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.
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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 16. Sep. 2020 17:15    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 BLD1983 10 Unities + Antwort hilfreich

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



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: 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 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 BLD1983 10 Unities + Antwort hilfreich

Hallo,

Code:
Dim exWB_Material As Workbook
Dim exWB_Schein As Workbook

Set 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


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

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 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 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


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

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 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 BLD1983 10 Unities + Antwort hilfreich

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.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:\.....\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


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

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 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 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


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: 17. Sep. 2020 11: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 BLD1983 10 Unities + Antwort hilfreich

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


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

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 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

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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 17. Sep. 2020 14:33    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 BLD1983 10 Unities + Antwort hilfreich

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


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

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 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 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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 22. Sep. 2020 12:47    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 BLD1983 10 Unities + Antwort hilfreich

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.Application

Set 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



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: 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 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 BLD1983 10 Unities + Antwort hilfreich

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


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

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 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 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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 23. Sep. 2020 12:41    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 BLD1983 10 Unities + Antwort hilfreich

Hallo Dragan,

Prima, dann markiere ich den Thread als erledigt.

Grüße
Klaus  

[Edit]Erledigt wieder gelöscht, siehe unten

[Diese Nachricht wurde von KlaK am 23. Sep. 2020 editiert.]

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

BLD1983
Mitglied
Konstrukteur


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

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 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

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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 23. Sep. 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 Nur für BLD1983 10 Unities + Antwort hilfreich

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


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

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 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 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


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

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 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 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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 25. Sep. 2020 09:43    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 BLD1983 10 Unities + Antwort hilfreich

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


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

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 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 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



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

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 25. Sep. 2020 15:30    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 BLD1983 10 Unities + Antwort hilfreich

Prima !
Hättest auch selber machen können  (erledigt markieren)
Schönes Wochenende
KLaus 

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