Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Werte von Excel auf Attribute übergeben

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
  
PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
Autor Thema:  Werte von Excel auf Attribute übergeben (3653 mal gelesen)
Bernhard F.
Mitglied



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

Beiträge: 24
Registriert: 17.03.2008

WIN 10
BricsCAD 20
Autocad 2019

erstellt am: 17. Mrz. 2008 11:01    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 möchte von einer Exceldatei bestimmte Werte auf einen ausgewählten Blockattribut übergegeben.

folgenede vorgehensweise:

1. Excel öffen
2. Makro aufrufen
3. Block in Acad wählen (Attribute sollen sich ändern)

Kann mir hier jemand helfen, am besten mit einem Beispiel?

Danke im Voraus.
Bernhard F.

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 17. Mrz. 2008 11:06    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 Bernhard F. 10 Unities + Antwort hilfreich

Hallo Bernhard,

Hallo und Willkommen im Forum.
Nutze mal die Suchfunktion. Zu diesem Thema gab es schon einige Beiträge. Zum Beispiel diesen hier.

Gruß, Carsten

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

Bernhard F.
Mitglied



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

Beiträge: 24
Registriert: 17.03.2008

WIN 10
BricsCAD 20
Autocad 2019

erstellt am: 17. Mrz. 2008 11:42    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 Carsten

Ich hab z.B.: das Beispiel blockattr.xls verwendet.
Hier ist es aber so, dass ich das mit den Block anwählen nicht hingebracht habe.
Und hier werden ja alle Daten wieder in den Block zurückgeschrieben. Ich möchte aber, wie gesagt den Block anwählen und nur bestimmte Daten von Excel zurückgeben. Ich möchte selber bestimmen von welcher  Spalte und Zeile ich die Daten übernehme.

Bernhard F.

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 17. Mrz. 2008 14:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bernhard F. 10 Unities + Antwort hilfreich

Hallo Bernhard,

ich möchte mich so kurz vor dem Urlaub nicht einmischen, aber ..
 

Zitat:
1. Excel öffen
2. Makro aufrufen
3. Block in Acad wählen (Attribute sollen sich ändern)

Woher soll das Programm wissen welche Attribute sich ändern sollen ?
Wie ist denn die Verbindung der Blockreferenz zur Exceltabelle ? (Handle, Koordinate, ???)
Wenn man das dem Programm immer blockweise angeben musst, kann man die Werte ja fast von Hand ändern.
Welchen Programmcode hast du denn schon. Sonst kann man ja keine Vorschläge machen.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht. 
www.ib-stelberg.de

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

Bernhard F.
Mitglied



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

Beiträge: 24
Registriert: 17.03.2008

WIN 10
BricsCAD 20
Autocad 2019

erstellt am: 17. Mrz. 2008 15: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

Zitat:
[/QUOTE]
Woher soll das Programm wissen welche Attribute sich ändern sollen ?
[QUOTE]

Die gebe ich an. z.B.:
ba(6).TextString = Cells(15, 6).Value

Zitat:
[/QUOTE]
Wie ist denn die Verbindung der Blockreferenz zur Exceltabelle ? (Handle, Koordinate, ???)
[QUOTE]

Das ist eben die Frage, das kann ich nicht sagen.

Zitat:
[/QUOTE]
Wenn man das dem Programm immer blockweise angeben musst, kann man die Werte ja fast von Hand ändern.
[QUOTE]

Das ist richtig, aber die Exceltabelle (Blattverzeichniss) wird von jemanden anderen erstellt.

Zitat:
[/QUOTE]
Welchen Programmcode hast du denn schon. Sonst kann man ja keine Vorschläge machen.
[QUOTE]

Sub setattrBlock()
  Dim cad As Object
  Dim acad As AcadApplication
  Dim autocad_gestartet As Boolean
  Dim tempObj As AcadObject
  Dim ssetObj As AcadSelectionSet
  Dim bl As AcadBlockReference
  Dim i, j, k, z As Long
  Dim attr() As String
  Dim dwgname, handle, blname As String
  Dim ba As Variant
  Dim gpCode(0) As Integer
  Dim dataValue(0) As Variant

  autocad_gestartet = True
  On Error Resume Next
  Set cad = GetObject(, "AutoCAD.Application")
  If Err.Number <> 0 Then
    Err.Clear
    MsgBox "AutoCAD ist nicht gestartet", vbOKOnly, "Fehler"
    Exit Sub
  End If
  Set acad = cad
   
  If IsNull(acad.ActiveDocument) Then
    MsgBox "Keine Zeichnung geöffnet", vbOKOnly, "Fehler"
    Exit Sub
  End If
 
    gpCode(0) = 0
    dataValue(0) = "Insert"
   
    Set ssetObj = acad.ActiveDocument.SelectionSets.Add("SS2")
   
    AppActivate acad.Caption
    ssetObj.SelectOnScreen gpCode, dataValue
 
    ...
    ba(6).TextString = Cells(15, 6).Value

   
  ssetObj.Delete
End Sub

Bernhard F.

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

Stelli1
Moderator
Verm.-Ing.


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

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 17. Mrz. 2008 19: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 Nur für Bernhard F. 10 Unities + Antwort hilfreich

Hallo Bernhard,

Zitat:
Die gebe ich an. z.B.:
ba(6).TextString = Cells(15, 6).Value

Aber doch nicht im Programmcode, oder ?

Du kannst es automatisieren wenn es in der Exceltabelle eine Spalte mit einem Elementnamen gibt und dieser auch in einem Blockattribut abgefüllt ist.
Dann kannst du einen Block selektieren, den Elementnamen des Blockes aus dem Attributfeld lesen, diesen in der Exceltabelle suchen. Damit erhälst du z.B. die Zeile in Excel in der die Daten zu diesem Element stehen. Dann liest du die Daten wieder in die Attribute zurück. Wenn das dynamisch gehen soll, kannst du ja z.B. nach einer Formatierung in Excel schauen. z.B. wenn Textfarbe rot dann den Wert ins Attribut schreiben.

In deinem Programmcode für das Selektionset ist ein Fehler drin. Du kannst nicht in jedem Durchlauf ein neues Selektionset anlegen. Das klappt nur beim ersten Mal. Du musst abfragen ob es eines gibt und wenn nicht, ein neues anlegen.

Code:
    Dim sset As AcadSelectionSet
    Dim fType(0 To 0) As Integer
    Dim fData(0 To 0) As Variant
   
    On Error Resume Next
    Set sset = ThisDrawing.SelectionSets("MySel")
    If Err.Number Then
      Set sset = ThisDrawing.SelectionSets.Add("MySel")
    End If
    On Error GoTo 0

   
    fType(0) = 0: fData(0) = "Insert"
    sset.SelectOnScreen fType, fData
    MsgBox sset.Count

So kannst du auch eine Vorauswahl brücksichtigen

Code:
    Set sset = ThisDrawing.PickfirstSelectionSet
    If sset.Count = 0 Then
        sset.Clear
        sset.SelectOnScreen
    End If

Wilfried Stelberg


------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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

Bernhard F.
Mitglied



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

Beiträge: 24
Registriert: 17.03.2008

WIN 10
BricsCAD 20
Autocad 2019

erstellt am: 18. Mrz. 2008 13: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 Wilfried,
Danke für die Hilfe.
Es funktioniert so weit.
In der Exceltabelle finde ich die Zeile mit der Zeichnungsnummer.

------------------
Gruß, Bernhard F.

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