Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Koordinaten aus Shape auslesen

Koordinaten aus Shape auslesen
09.10.2005 12:33:34
Heiko
Hallo erst mal,
ich habe verschiedene Shapes bzw. Freihandzeichnungen erstellt und
möchte die Koordinaten dieser Shapes auslesen. Im Internet habe ich auf einer russischen Seite ein Makro dazu gefunden. Leider kann ich mit diesen Werten
nichts anfangen, da sie offensichtich zu klein sind.
Kann mir da jemand helfen oder hat jemand eine Tip.
Vielen Dank im voraus.
Gruß
heiko

Sub ListNodesCoords_2()
buf = ""
For i = 1 To Selection.ShapeRange.Nodes.Count
With Selection.ShapeRange.Nodes
ptsArr = .Item(i).Points
x = ptsArr(1, 1)
y = ptsArr(1, 2)
buf = buf & x & "," & y & Chr(13)
Cells(i + 35, 1) = i
Cells(i + 35, 2) = x
Cells(i + 35, 3) = y
End With
Next i
MsgBox (buf)
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Koordinaten aus Shape auslesen
09.10.2005 17:07:43
K.Rola
Hallo,
das geht so nicht. Schreib oben ins Modul Option Explicit und verwende Variable.
Beispiel:
Dim ff as Shape
Set ff = Tabelle1.Shapes(1) oder alternativ Name des Shapes, dann klappt es auch
mit den Koordinaten.
Gruß K.Rola
AW: Koordinaten aus Shape auslesen
09.10.2005 18:53:20
Heiko
Hallo K.Rola,
vielen Dank für die Antwort, aber leider bleibt es bei dem Problem.
Die eingabe Werte für ein Dreieck sind z.B 0/0 ; 100/200; 200/100.
Die ausgelesenen Werde sind 0/0; 0,000954652/0,001916483; 0,001916483/0,000954652.
Wie kommt das zustande ?
Gruß
heiko
Anzeige
AW: Koordinaten aus Shape auslesen
09.10.2005 19:16:31
K.Rola
Hallo,
du müßtest schon mal den Code posten. Indem ersten Code liest du nicht den Abstand
zum Tabellenblattursprung sondern zum Shaperange.
Gruß K.Rola
AW: Koordinaten aus Shape auslesen
09.10.2005 20:25:53
heiko
Hallo K.Rola,
wie kann ich den die absoluten werte einlesen,
oder wie muß ich den Code ändern ?
Danke im voraus
gruß
heiko
ich habe nicht viel verändert.
das ist der Code:

Sub ListNodesCoords_2()
Dim ff As Shape
Dim buf
Dim i, ptsArr, x, y
'Set ff = ActiveSheet.Shapes(1).Select
buf = ""
For i = 1 To Selection.ShapeRange.Nodes.Count
With Selection.ShapeRange.Nodes
ptsArr = .Item(i).Points
x = ptsArr(1, 1)
y = ptsArr(1, 2)
buf = buf & x & "," & y & Chr(13)
Cells(i + 20, 1) = i
Cells(i + 20, 2) = x
Cells(i + 20, 3) = y
End With
Next i
MsgBox (buf)
End Sub

Anzeige
AW: Koordinaten aus Shape auslesen
09.10.2005 20:49:01
K.Rola
Hallo,
ich kann dir nur raten, immer Objektvariable zu verwenden, dann kannst du einen Haltepunkt setzen und im Lokalfenster genau sehen, was das Objekt zulässt.

Sub ListNodesCoords_2()
Dim ptsArr, i As Long, x As Double, y As Double, nc As Long
Dim ff As Shape
Set ff = Tabelle1.Shapes(1)
nc = ff.Nodes.Count
'    buf = ""
For i = 1 To nc
With ff.Nodes
ptsArr = .Item(i).Points
x = ptsArr(1, 1)
y = ptsArr(1, 2)
'            buf = buf & x & "," & y & Chr(13)
Cells(i + 35, 1) = i
Cells(i + 35, 2) = x
Cells(i + 35, 3) = y
End With
Next i
'        MsgBox (buf)
End Sub

Das Ganze funktioniert natürlich nur mit einer Freeform.
Gruß K.Rola
Anzeige
AW: Koordinaten aus Shape auslesen
09.10.2005 20:59:45
heiko
hallo K.Rola,
super !!
klappt prima.
besten Dank
gruß
heiko
;
Anzeige
Anzeige

Infobox / Tutorial

Koordinaten aus Shape auslesen in Excel


Schritt-für-Schritt-Anleitung

Um die Koordinaten von Shapes in Excel auszulesen, kannst Du ein einfaches VBA-Makro verwenden. Hier sind die Schritte, die Du befolgen solltest:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (DeineArbeitsmappe)“ und wähle „Einfügen > Modul“.
  3. Füge den folgenden Code ein:

    Sub ListNodesCoords_2()
       Dim ff As Shape
       Dim buf As String
       Dim i As Long, ptsArr, x As Double, y As Double
    
       Set ff = ActiveSheet.Shapes(1) ' Hier kannst Du das spezifische Shape auswählen
       Dim nc As Long
       nc = ff.Nodes.Count
    
       For i = 1 To nc
           With ff.Nodes
               ptsArr = .Item(i).Points
               x = ptsArr(1, 1)
               y = ptsArr(1, 2)
               Cells(i + 20, 1) = i
               Cells(i + 20, 2) = x
               Cells(i + 20, 3) = y
           End With
       Next i
    End Sub
  4. Führe das Makro aus:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Wähle das Shape aus, dessen Koordinaten Du auslesen möchtest, und führe das Makro aus (drücke ALT + F8 und wähle ListNodesCoords_2).

Häufige Fehler und Lösungen

  • Problem: Die Koordinaten werden in sehr kleinen Werten angezeigt (z.B. 0,00095).

    • Lösung: Stelle sicher, dass Du die richtigen Koordinaten aus dem Shape und nicht vom Ursprung des Shape-Bereichs ausliest.
  • Problem: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Überprüfe, ob das Shape, dessen Koordinaten Du auslesen möchtest, tatsächlich ausgewählt ist. Du kannst auch sicherstellen, dass Option Explicit am Anfang des Moduls steht, um Variablen korrekt zu deklarieren.

Alternative Methoden

Falls Du kein VBA nutzen möchtest, kannst Du auch die „Shape-Format“-Optionen in Excel verwenden, um die Position und Größe von Shapes zu bestimmen. Das ist jedoch weniger präzise und nicht so flexibel wie das Auslesen mit VBA.


Praktische Beispiele

Hier sind einige Beispiele, wie Du das Makro anpassen kannst:

  1. Auslesen mehrerer Shapes:

    Dim shapeCount As Long
    shapeCount = ActiveSheet.Shapes.Count
    For j = 1 To shapeCount
       Set ff = ActiveSheet.Shapes(j)
       ' Rest des Codes hier...
    Next j
  2. Koordinaten in einem bestimmten Bereich ausgeben: Du kannst die Zellen anpassen, in die die Koordinaten geschrieben werden, indem Du die Werte der Variablen i und 20 änderst.


Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Codes, um sicherzustellen, dass alle Variablen deklariert sind.
  • Verwende Objektvariablen, um die Lesbarkeit und Wartbarkeit Deines Codes zu verbessern.
  • Experimentiere mit Breakpoints im VBA-Editor, um den Wert von Variablen während der Ausführung zu überwachen.

FAQ: Häufige Fragen

1. Wie kann ich die Koordinaten eines spezifischen Shapes auslesen? Du kannst das Shape mithilfe seines Namens oder Index aus der Shapes-Sammlung auswählen, z.B. Set ff = ActiveSheet.Shapes("MeinShape").

2. Funktioniert das Makro in jeder Excel-Version? Ja, das VBA-Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren, solange die Shapes unterstützt werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige