Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Excel Daten in .idw Textfeld importieren

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Excel Daten in .idw Textfeld importieren (1883 mal gelesen)
The doctor123
Mitglied



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

Beiträge: 12
Registriert: 04.12.2010

Inventor 2015

erstellt am: 19. Nov. 2014 14: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


Unbenannt.JPG

 
Hallo liebes Forum,

ich möchte gerne aus einem Excelsheet mehrere untereinander stehende Zellen kopieren und mit Hilfe eines Makros in ein Textfeld (Textfeld liegt in einer bestehenden Skizze) einfügen. Ich habe Erfahrungen mit VBA im Allgemeinen, weiß aber nicht, wie ich die kopierten Zellen nun in Inventor einfügen kann.

Kann mir hier vielleicht jemand einen Ansatz liefern?

Vielen Dank und viele Grüße
Lars

[Diese Nachricht wurde von The doctor123 am 22. Nov. 2014 editiert.]

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 19. Nov. 2014 22:23    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 The doctor123 10 Unities + Antwort hilfreich

Hallo

Hast du die 5 Zellinhalte in 5 Strings zwischengespeichert? Ich unterstell das jetzt mal. Hier ein Beispiel das mehrere Arten der Erzeugung von Textboxen in einer Zeichnung demonstriert.

Code:
Public Sub SketchTextAdd()
    ' Set a reference to the drawing document.
    ' This assumes a drawing document is active.
    Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = ThisApplication.ActiveDocument
   
    ' Create a new sketch on the active sheet.
    Dim oSketch As DrawingSketch
    Set oSketch = oDrawDoc.ActiveSheet.Sketches.Add
   
    ' Open the sketch for edit so the text boxes can be created.
    ' This is only required for drawing sketches, not part.
    oSketch.Edit
   
    Dim oTG As TransientGeometry
    Set oTG = ThisApplication.TransientGeometry
   
    ' Create text with simple string as input.  Since this doesn't use
    ' any text overrides, it will default to the active text style.
    Dim sText As String
    sText = "Drawing Notes"
    Dim oTextBox As TextBox
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, 18), sText)
   
    ' Create text using various overrides.
    sText = "Notice: All holes larger than 0.500 n are to be lubricated."
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, 16), sText)
   
    ' Create a set of notes that are numbered and aligned along the left.
    Dim dYCoord As Double
    dYCoord = 14
    Dim dYOffset As Double
    Dim oStyle As TextStyle
    Set oStyle = oSketch.TextBoxes.Item(1).Style
    dYOffset = oStyle.FontSize * 1.5
   
    ' Simple single line text.
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, dYCoord), "1.")
    sText = "This is note 1."
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(4, dYCoord), sText)
   
    ' Two line text.  The two lines are defined using the  tag within the text string.
    dYCoord = dYCoord - (oTextBox.FittedTextHeight + 0.5)
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, dYCoord), "2.")
    sText = "This is note 2,  which contains two lines."
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(4, dYCoord), sText)
   
    ' Single line of text.
    dYCoord = dYCoord - (oTextBox.FittedTextHeight + 0.5)
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, dYCoord), "3.")
    sText = "This is note 3."
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(4, dYCoord), sText)
   
    ' Three lines of text.
    dYCoord = dYCoord - (oTextBox.FittedTextHeight + 0.5)
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, dYCoord), "4.")
    sText = "This is note 4,  which contains  several lines."
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(4, dYCoord), sText)
   
    sText = "Here is the last and final line of text."
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(4, dYCoord), sText)
       
    ' Exit the sketch from the edit environment.
    oSketch.ExitEdit
End Sub


' Function to determine the top left corner of the input text box.
Private Sub GetCorner(TextBox As TextBox, Left As Double, Top As Double)
    ' Determine the top left corner of the text box by accounting
    ' for the justifications.
    Select Case TextBox.HorizontalJustification
        Case kAlignTextLeft
            Left = TextBox.Origin.X
        Case kAlignTextCenter
            Left = TextBox.Origin.X - (TextBox.Width / 2)
        Case kAlignTextRight
            Left = TextBox.Origin.X - TextBox.Width
    End Select

    Select Case TextBox.VerticalJustification
        Case kAlignTextUpper
            Top = TextBox.Origin.Y
        Case kAlignTextMiddle
            Top = TextBox.Origin.Y + (TextBox.height / 2)
        Case kAlignTextLower
            Top = TextBox.Origin.Y + TextBox.height
    End Select
End Sub


------------------
MfG
Ralf

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

The doctor123
Mitglied



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

Beiträge: 12
Registriert: 04.12.2010

Inventor 2015

erstellt am: 20. Nov. 2014 07: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 Ralf,

vielen Dank für die schnelle Antwort. Das hilft mir schon mal weiter.

Eine Frage hätte ich noch. Kann man an dieser Stelle:

Set oSketch = oDrawDoc.ActiveSheet.Sketches.Add

etwas ändern, damit keine neue Skizze erstellt wird, sondern das Textfeld immer in eine Skizze mit Namen "Skizze1" erstellt wird?

Viele Grüße
Lars

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 20. Nov. 2014 19:18    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 The doctor123 10 Unities + Antwort hilfreich

Hallo

Dann mach aus der Zeile bitte

Code:
Set oSketch = oDrawDoc.ActiveSheet.Sketches.Item("Skizze1")

------------------
MfG
Ralf

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

The doctor123
Mitglied



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

Beiträge: 12
Registriert: 04.12.2010

Inventor 2015

erstellt am: 21. Nov. 2014 12: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 Ralf,

auch das klappt so wunderbar (Vielen Dank für deine Hilfe!!).
Ich kann jetzt ohne Probleme aus einer Excel Datei Zellen kopieren und in eine Inventor Skizze einfügen.
Jetzt kommt es allerdings manchmal vor, das es bis zu zwanzig Werte sind, die kopiert werden sollen. Gibt es eine elegantere Möglichkeit diese Zellen zu kopieren und einzufügen, ohne für jede Zelle eine neue Variable zu vergeben?

Anbei mal mein Code!

Sub Tabletest()

' Make Inventor be aware of excel file
Dim oExclApp As Excel.Application
    Set oExclApp = New Excel.Application
    oExclApp.Visible = False 'decides wether to open or not the excel file
   
'Give path of used excel file
Dim ExclPath As String
    ExclPath = "C:\Users\...\Desktop\test.xlsx"
    'InputBox(" Bitte geben Sie den vollständigen Pfad" & vbCrLf & _
    '"der zu importierenden Exceldatei ein!", "Eingabe")

'Copy cell from excel file
Dim oExclDoc As Workbook
    Set oExclDoc = oExclApp.Workbooks.Open(ExclPath)
   
Dim test As String
    test = Range("A2")
    MsgBox (test)
     
' Set a reference to the drawing document.
' This assumes a drawing document is active.
Dim oDrawDoc As DrawingDocument
    Set oDrawDoc = ThisApplication.ActiveDocument
 
' Create a new sketch on the active sheet.
Dim oSketch As DrawingSketch
    Set oSketch = oDrawDoc.ActiveSheet.Sketches.Item("Skizze1")
        ' Open the sketch for edit so the text boxes can be created.
    ' This is only required for drawing sketches, not part.
    oSketch.Edit
 
Dim oTG As TransientGeometry
    Set oTG = ThisApplication.TransientGeometry
     
' Create text with simple string as input.  Since this doesn't use
' any text overrides, it will default to the active text style.
Dim sText As String
    sText = test
Dim oTextBox As TextBox
    Set oTextBox = oSketch.TextBoxes.AddFitted(oTG.CreatePoint2d(3, 18), sText)

' Exit the sketch from the edit environment.
    oSketch.ExitEdit
End Sub

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 21. Nov. 2014 13:57    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 The doctor123 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von The doctor123:
Gibt es eine elegantere Möglichkeit diese Zellen zu kopieren und einzufügen, ohne für jede Zelle eine neue Variable zu vergeben?
Code:
Dim test As String
    test = Range("A2")
    MsgBox (test)
     


Hallo Doctor,

mach doch einfach aus der Range("A2") eine Variable.
Mal gesetzt den Fall, du bleibst immer in der Spalte A, dann könnte das ganze so aussehen:

Code:

dim i as integer=1

test = Range("A" & i)



Das ganze dann mit ner Loop-Schleife durchlaufen, bis die Zelle nichts mehr enthält.
Gleiches funktioniert natürlich auch mit ("Skizze" & i) 

Gruß Chris

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

The doctor123
Mitglied



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

Beiträge: 12
Registriert: 04.12.2010

Inventor 2015

erstellt am: 22. Nov. 2014 08: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

Gute Idee..werde ich ausprobieren.

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

The doctor123
Mitglied



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

Beiträge: 12
Registriert: 04.12.2010

Inventor 2015

erstellt am: 24. Nov. 2014 17:27    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


Maske.JPG


Import.JPG

 
Ich habe nun das Programm soweit fertig und es funktioniert so, wie ich es mir vorgestellt habe.
Mit Hilfe eines Userforms kann man den Pfad einer Exceldatei auswählen und zwischen zwei Spalten, die dann aus der Excel Datei importiert werden, unterscheiden. Der Code kopiert die Werte anschließend in einzelne Textboxen und fügt Sie in eine Skizze in der Zeichnung (.idw) ein.

Falls jemand Interesse an dem Code haben sollte, kann er/ sie sich gerne melden!

Noch mal vielen Dank an Ralf und Chris für die Hilfe!

Viele Grüße
Lars

[Diese Nachricht wurde von The doctor123 am 24. Nov. 2014 editiert.]

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

Chris 31
Mitglied
Konstrukteur und Mädchen für alles


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

Beiträge: 575
Registriert: 23.04.2013

Inventor 2013/2015
Windows 7 64 bit
16GB RAM
nVidia Quadro 600

erstellt am: 25. Nov. 2014 07:16    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 The doctor123 10 Unities + Antwort hilfreich

Hallo Lars,

schön dass es geklappt hat. Hier wird doch immer wieder gern geholfen...

Gruß und schönen Tag noch,

Chris

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