Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zelle in Excel mit Maus markieren

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:   Zelle in Excel mit Maus markieren (700 mal gelesen)
Pietzonka
Mitglied
Maschinening.


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

Beiträge: 102
Registriert: 14.03.2006

Catia V5-6 R2016 SP5 Build Number 26
Win10 64 pro
HP Z440
Xeon CPU E5-1630 V3
128 GB

erstellt am: 02. Jan. 2018 13:32    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

Sehr geehrte Mitglieder der Catia-Gemeinde,

zunächst noch meine besten Wünsche zum neuen Jahr!

Und hier mein Problem:
Aus Catia heraus starte ich ein Makro, das eine Tabelle mit Wertereihen öffnet.
Leider gelingt es mir nicht, eine Zelle mit der Maus zu markieren. Von dieser soll der Zeilenwert ermittelt werden.
Dann könnte ich die jeweiligen Spaltenwerte meinen Catia-Parametern zuordnen.

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part
Dim relations1 As Relations
Set relations1 = part1.Relations
Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim strParam1 As Parameter
Set strParam1 = parameters1.Item("Bezeichnung")

Dim strParam2 As Parameter
Set strParam2 = parameters1.Item("M")

'Hier habe ich den Code für Excel:

  Dim oExcel As Application
  Dim oWB As Workbook
  Dim oWS As Worksheet
  Set oExcel = CreateObject("Excel.Application")
  oExcel.Visible = True
  Set oWB = oExcel.Workbooks.Open("Z:\Konstruktionstabellen\Z31, Zylinderschraube mit Innensechkant ISO 4762\Z31 Konstuktionstabelle opt1.xls")
  Set oWS = oWB.Worksheets.Item(1)
  Dim rngZelle As Range
  Set rngZelle = Application.InputBox("Wähle bitte die Zelle.", "Zelle wählen", ActiveCell.Address, Type:=8)
  MsgBox( rngZelle(1).Address )

oExcel.Quit   ' Excel schliessen
part1.Update

End Sub

Hat jemand eine Idee, warum die Zeile mit "Set rngZelle =" eine Fehlermeldung bringt?

Mit freundlichem Gruß
Stephan

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: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 02. Jan. 2018 16:44    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 Pietzonka 10 Unities + Antwort hilfreich

Servus Stephan

Wie lautet die Fehlermeldung?
Schon mal folgende Dinge probiert:
- rngZelle als Object deklarieren
- ActiveCell.Address mal im Aufruf weg lassen (bzw was willst du damit bezwecken)

Gruß
Bernd

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

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 102
Registriert: 14.03.2006

Catia V5-6 R2016 SP5 Build Number 26
Win10 64 pro
HP Z440
Xeon CPU E5-1630 V3
128 GB

erstellt am: 03. Jan. 2018 07: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


Fehlermeldung1.JPG

 
Hallo Bernd!

Set rngZelle = Application.InputBox("Wähle bitte die Zelle.", "Zelle wählen", ActiveCell.Address, Type:=8) hat offenbar einen Syntaxfehler.

ActiveCell.Address soll ausgehend von der gewählten Zelle die Zeilennummer liefern.
in Excel sieht das lauffähige Makro so aus:

Sub Makro1()
' Makro1 Makro
    'Range("A15").Select

Dim rngZelle As Range
Set rngZelle = Application.InputBox("Wähle bitte die Bezeichnungs-Zelle.", "Zelle wählen", ActiveCell.Address, Type:=8)
'    MsgBox (" T1  " & ActiveCell.Address)
    Bezugszeile = rngZelle(1).Row
    Cells(Bezugszeile, 1).Activate
    MsgBox ("rngZelle(1).Address  :  " & rngZelle(1).Address)
    MsgBox ("rngZelle(1).Row  :  " & rngZelle(1).Row)
    Bezeichnung = Cells(Bezugszeile, 1)
    MsgBox ("Bezeichnung = Cells(Bezugszeile, 1  : " & Bezeichnung)
    M = Cells(Bezugszeile, 2)
    MsgBox ("M = Cells(Bezugszeile, 2  : " & M)
End Sub

Die Werte von Bezeichnung und M will ich meinen Part-Parametern zuweisen.

Ich habe mir auch schon einen zweiten, aber eben Umweg überlegt: vom Catia-Makro aus das Excel-Makro zu starten.
Doch wie das gehen soll, weiß ich noch nicht.


Zu Deinem Vorschlag, rngZelle als Object zu deklarieren:

  Dim rngZelle As Object 'Dim rngZelle As Range
  Set rngZelle = Application.InputBox("Wähle bitte die Zelle.", "Zelle wählen", ActiveCell.Address, Type:=8)
Hier erhalte ich wieder die beigefügte Fehlermeldung.

Mit
Dim rngZelle As Object
Set rngZelle = Application.InputBox("Wähle bitte die Zelle.", "Zelle wählen",  Type:=8)
erhalte ich eine ähnliche Fehlermeldung.
Hier weiß ich nicht, ist die Anwendung Catia oder Excel. Falls Catia gemeint ist, muss es eine Fehlermeldung geben. Dann müsste ich Ecxel als aktiv schalten... aber wie?

MfG
Stephan

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: 10840
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 03. Jan. 2018 08: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 Nur für Pietzonka 10 Unities + Antwort hilfreich

Servus Stefan

Der Ansatz, dass Application hier CATIA ist hört sich vielversprechend an.
Schon mal oExcel.InputBox bzw oExcel.Application.InputBox als Aufruf probiert?
Falls die Tabelle als Konstruktionstabelle für das geöffnete Teil angelegt ist könntest du ggf auf den Zugriff auf Excel verzichten und die DesignTable direkt ansprechen (ja nach dem was du vor hast)

Gruß
Bernd

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

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 102
Registriert: 14.03.2006

Catia V5-6 R2016 SP5 Build Number 26
Win10 64 pro
HP Z440
Xeon CPU E5-1630 V3
128 GB

erstellt am: 03. Jan. 2018 11:46    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


Fehlermeldung2.JPG

 
Deine Vorschläge habe ich erfolglos getestet.

Folgendes Skript möchte ich als Basis nutzen:

Sub CATMain()

'Hier habe ich den Code für Excel:
  Dim oExcel As Application
  Dim oWB As Workbook
  Dim oWS As Worksheet
  Set oExcel = CreateObject("Excel.Application")
  oExcel.Visible = True
  Set oWB = oExcel.Workbooks.Open("Z:\Konstruktionstabellen\Z31, Zylinderschraube mit Innensechkant ISO 4762\Z31 Konstuktionstabelle opt2.xls")
  Set oWS = oWB.Worksheets.Item(1)
  oWS.Activate 'ok
' oWS.Range("C15").Activate 'ok
' oWS.Cells(2, 2).Activate 'ok
Dim rngZelle As Range 'ok
'Set rngZelle = Application.InputBox("Wähle bitte die Bezeichnungs-Zelle.", "Zelle wählen", ActiveCell.Address, Type:=8) in Excel ok
Set rngZelle = oExcel.InputBox("Wähle bitte die Bezeichnungs-Zelle.", "Zelle wählen", ActiveCell.Address, Type:=8)

'  MsgBox( rngZelle(1).Address )
'oExcel.Quit   ' Excel schliessen
'part1.Update

End Sub

Die Fehlermeldung weist auf das Komma nach Address hin. Diese Meldung habe ich angehangen.

Die Versuche, das Makro1 in Excel zu starten, klappten leider auch nicht.

MfG
Stephan

[Diese Nachricht wurde von Pietzonka am 03. Jan. 2018 editiert.]

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

C.Samer
Mitglied
CAD Administrator


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

Beiträge: 70
Registriert: 03.05.2017

erstellt am: 10. Jan. 2018 13: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 Pietzonka 10 Unities + Antwort hilfreich

Bei mir funktioniert folgender Code (VB6):
Code:
Sub CATMain()
      Dim oExcel As Object
      Dim oBook As Object
      Dim oSheet As Object
 
      Set oExcel = CreateObject("Excel.Application")
      Set oBook = oExcel.Workbooks.Open("Z:\Konstruktionstabellen\Z31, Zylinderschraube mit Innensechkant ISO 4762\Z31 Konstuktionstabelle opt2.xls")
      Set oSheet = oBook.Worksheets(1)
      oExcel.Visible = True
 
      Dim rngZellen As Object
      Set rngZellen = oExcel.Application.InputBox("Wähle bitte die Zellen.", "Zellen wählen", Type:=8)
      For Each e In rngZellen
        MsgBox e.Value
      Next e
      oExcel.Quit
End Sub

Beste Grüße aus Wien,
Christoph

[Diese Nachricht wurde von C.Samer am 10. Jan. 2018 editiert.]

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

Pietzonka
Mitglied
Maschinening.


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

Beiträge: 102
Registriert: 14.03.2006

Catia V5-6 R2016 SP5 Build Number 26
Win10 64 pro
HP Z440
Xeon CPU E5-1630 V3
128 GB

erstellt am: 16. Jan. 2018 15:51    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

Danke für die Unterstützung!

Jetzt sieht das CatVBA-Makro so aus und funktioniert:

Sub Z31_Zylinderschraube_mIS_EN_4762_KTab()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part

Dim parameters1 As Parameters
Set parameters1 = part1.Parameters

Dim Bezeichnung As Parameter
Set Bezeichnung = parameters1.Item("Bezeichnung")

Dim d_dia As Parameter
Set d_dia = parameters1.Item("d_dia")

Dim l_nom As Parameter
Set l_nom = parameters1.Item("l_nom")

Dim k_head_depth_max As Parameter
Set k_head_depth_max = parameters1.Item("k_head_depth_max")

Dim s_nom As Parameter
Set s_nom = parameters1.Item("s_nom")

Dim r_min As Parameter
Set r_min = parameters1.Item("r_min")

Dim ds_max As Parameter
Set ds_max = parameters1.Item("ds_max")

Dim e As Parameter
Set e = parameters1.Item("e")

Dim t_min As Parameter
Set t_min = parameters1.Item("t_min")

Dim p_pitch As Parameter
Set p_pitch = parameters1.Item("p_pitch")

Dim Threading As Parameter
Set Threading = parameters1.Item("Threading")

Dim dk_max As Parameter
Set dk_max = parameters1.Item("dk_max")

Dim M As Parameter
Set M = parameters1.Item("M")


      Dim oExcel As Object
      Dim oBook As Object
      Dim oSheet As Object

      Set oExcel = CreateObject("Excel.Application")
      Set oBook = oExcel.Workbooks.Open("Z:\Konstruktionstabellen\Z31, Zylinderschraube mit Innensechskant ISO 4762\Z31.xlsx")
      Set oSheet = oBook.Worksheets(1)
      oExcel.Visible = True
      Dim Bezugszeile As Integer
      Dim BasicCell As Object
      Set BasicCell = oSheet.Cells
       
       
      Dim rngZelle As Object
      Set rngZelle = oExcel.Application.InputBox("Wähle bitte die Zellen.", "Zellen wählen", Type:=8)

    Bezugszeile = rngZelle(1).Row
    BasicCell(Bezugszeile, 1).Activate

Bezeichnung.Value = BasicCell(Bezugszeile, 1).Value
    M.Value = BasicCell(Bezugszeile, 2)
    d_dia.Value = BasicCell(Bezugszeile, 3)
    l_nom.Value = BasicCell(Bezugszeile, 4)
    k_head_depth_max.Value = BasicCell(Bezugszeile, 5)
    s_nom.Value = BasicCell(Bezugszeile, 6)
    r_min.Value = BasicCell(Bezugszeile, 7)
    ds_max.Value = BasicCell(Bezugszeile, 8)
    e.Value = BasicCell(Bezugszeile, 9)
    t_min.Value = BasicCell(Bezugszeile, 10)
    p_pitch.Value = BasicCell(Bezugszeile, 11)
    Threading.Value = BasicCell(Bezugszeile, 12)
    dk_max.Value = BasicCell(Bezugszeile, 13)
     
    oExcel.Quit
    part1.Update
End Sub

Falls Ihr Unsauberkeiten in der Programmierung entdeckt, lasst es mich bitte wissen!

Mit freundlichem Gruß
Stephan

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