abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python

Projektinfo exportieren - für Excel

Hallo zusammen,

 

kann man ausgefüllte Projektinfo exportieren? Wenn ich es mache, kommt eine xml Datei, und wenn ich in Excel importiere, sind gar keine Info dabei.

 

Vielen Dank im Voraus 😊

Jaki

AC25 in Mac Ventura 13.6

13 ANTWORTEN 13
archig
Expert

Das ist wohl nur dazu gedacht, dass man die Info von einem Projekt in ein anderes überträgt, in dem noch nichts eingetragen wurde. 

Excel kann damit nicht viel anfangen, und wirft einfach alles in ein oder zwei Zeilen... 

ArchiCAD 25 / Windows 10
Frank Beister
Advisor

Wofür brauchst du sie in einer Excel-Datei?

 

A) Eine Lösung wäre ein VBA-Skript für den Import (Excel).

B) Ungeprüft: Über die Listenauswertung. Wenn es sein muss über ein berechnetes Attribut, das die Projektinfos in irgendein dann auflistbares Attribut eines Dummy- Elementes bereit stellt. (AC, IA)

C) GDL-Dummy-Objekt, das die Werte ausliest und in eine CSV schreibt (AC, GDL)

 

Zurück geht es aber definitiv nur durch eine (selbst erstellte) Schnittstelle, die eine XML erzeugt, wenn das der Plan ist.

 

Ich würde A) nehmen. 

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Xandros
Expert

Hi,

wenn ich die Projektinfos exportiere und in Excel 2016 wie folgt öffne, landen alle Infos in der ersten Zeile.

Xandros_0-1706691447948.png

 

Vorgehensweise:

  1. Zuerst transponiere ich die Zeile in Spalten.
    1. Dazu die Zeile 1 markieren, Strg + C
    2. Klick auf Zelle A2
    3. Einfügen Spezial verwenden (Strg + Alt + V)
      Xandros_1-1706692030171.png
    4. Dann brauche ich die erste Zeile nicht mehr und kann sie löschen.
  2. In den Zellen B1, C1, D1 trage ich Spaltenüberschriften ein → bspw. Info | AutoText-Code | Wert
  3. In Zelle B2 kommt die Formel
    =WENN(REST(ZEILE()-2;3)=1;INDIREKT("$A"&ZEILE());"")
  4. In Zelle C2
    =WENN(REST(ZEILE()-2;3)=1;INDIREKT("$A"&ZEILE()+1);"")
  5. Und in Zelle D2
    =WENN(REST(ZEILE()-2;3)=1;INDIREKT("$A"&ZEILE()+2);"")
  6. Dann die Formeln bis ans Ende der Tabelle runterkopieren
  7. Weil ich auch eigene Felder in der Projektinfo erstellt habt, muss ich die ganze Zeile mit dem Inhalt EDREPORTHEADER suchen und entfernen
    (war bei mir die Zeile 235)
  8. Alles markieren und die Formeln in Werte umwandeln
    1. das geht bspw. mit Einfügen Spezial (Strg + Alt + V) - wie im Screenshot oben allerdings ohne das Häkchen bei Transponieren
    2. dann lässt sich die Spalte A entfernen
  9. Dann die Tabelle unter dem Reiter DatenFiltern
  10. leere Zeilen ausfiltern und entfernen
    1. dazu das Häkchen bei (alles auswählen) entfernen - ist ganz oben in der Dropdown Liste.
    2. dann ans Ende der Liste scrollen und dort das Häkchen bei (Leere) setzen
    3. alle relevanten, leeren Zeilen nach der Spaltenüberschrift markieren und löschen. Die relevanten Zeilen sind blau markiert.
    4. Edit: den Filtern wieder entfernen, nicht vergessen

Damit solltest du dann eine etwas vernünftiger lesbare Excel aus der Projektinfo-xml aus ArchiCAD erzeugt haben.

 

Edit: Formeln korrigiert, hatte aus Versehen die alte Version hier reinkopiert, statt der neuen... Sorry 🙈

ArchiCAD 26 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti

Hallo Frank, ich möchte die Info als Datenbank verwenden. Wenn ich etwas in Projektinfo ändere, kann ich exportieren und es wird in meiner Excel-Datei Vorlage aktualisiert.

 

AC25-27, Excel 365 Version 16.81


@Xandros  schrieb:

RESPEKT!

 

jakelinerosa: ist das aus deiner sicht sinnvoll, die Projektdaten im ArchiCAD zu verwalten, und v.a. laufend aktuell zu halten? 

ArchiCAD 25 / Windows 10

Ich habe deine Frage nicht verstanden. Sorry.

Hallo Xandros,

herzlichen Dank für die detaillierte Erklärung. Es klappt wunderbar, die XML-Datei in Excel zu öffnen und zu transponieren. Tolle Sache!

Wie gehst du jedoch vor, um diese Informationen als Datenbank zu nutzen?

Ich verfüge über Excel-Vorlagendateien und möchte die Informationen projektbezogen anpassen. Meine Idee ist, die Projektinformationen zu exportieren und sie mit meiner Excel-Datei zu verknüpfen. Ich gehe zum Datenabruf, wähle die entsprechende Datei aus, (bearbeite sie bei Bedarf in Power Query und) verknüpfe sie dann erneut nach Projekt.

Meinst du, deine Idee würde dafür funktionieren?

Frank Beister
Advisor

Excel kann sich prinzipiell auch mit XML-Daten verbinden. Wohl auch bidirektional. Dafür brauchst du aber in jedem Fall eine Zuordnung der XML-Struktur zur Tabelle. Da wäre eine Beschreibung der XML-Struktur hilfreich. Eine XSD-Datei (kann GS vielleicht sowas bereitstellen?). Diese kannst du über das Menü "Entwicklertools" in Excel dann verknüpfen. Da hört bei mir aber das vertiefte Wissen auf. V.a. wie man die Daten auch wieder sauber zurück bekommt. Ich habe mal auf die Schnelle eine erstellt, aber die XML aus Archicad hat so ein paar Eigenarten, die ich aus der Hüfte nicht lösen kann.

 

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="ProjectInfo">

    <xsd:complexType>
      <xsd:sequence>

    <xsd:element minOccurs="0" maxOccurs="1" name="version" />

        <xsd:element name="FixKeys">
          <xsd:complexType>
            <xsd:sequence>

              <xsd:element minOccurs="0" maxOccurs="unbounded" name="Fix1">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="1" name="UIKey" />
                    <xsd:element minOccurs="0" maxOccurs="1" name="DBKey" />
                    <xsd:element minOccurs="0" maxOccurs="1" name="value" />
                  </xsd:sequence>
                </xsd:complexType>
              </xsd:element>

            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>

        <xsd:element name="CustomKeys">
          <xsd:complexType>
            <xsd:sequence>

                <xsd:element minOccurs="0" maxOccurs="unbounded" name="Custom1">
                  <xsd:complexType>
                    <xsd:sequence>
                      <xsd:element minOccurs="0" maxOccurs="1" name="UIKey" />
                      <xsd:element minOccurs="0" maxOccurs="1" name="DBKey" />
                      <xsd:element minOccurs="0" maxOccurs="1" name="value" />
                    </xsd:sequence>
                  </xsd:complexType>
                </xsd:element>

            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>

      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

 

Deswegen habe ich es, wie gesagt, bisher immer über VBA-Makros (mit UI, die aber die XML als Textdatei interpretieren und die Werte dann übertragen) gemacht, weil dann Im- und Export auf Knopfdruck funktionieren und mein bei Datenänderung nicht immer von vorne anfängt alles umzuformatieren.

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm

Hi,

ich persönlich hänge mich da an Lösung A aus Frank Beister's erstem Beitrag: ein VBA-Skript in Excel.

Das liegt nicht zwangsläufig daran, dass ich damit die beste Methode gefunden haben könnte, sondern eine, mit  der ich mich in einem Raum bewege, mit dem ich klar komme.

 

Mit VBA würde ich die Schritte, die ich oben beschrieben habe, automatisieren.

Das heißt zunächst die bisherige Datenbank, die auf einem eigenen Tabellenblatt innerhalb oder außerhalb deiner Exceldatei liegt, entfernen.

Dann mit Knopfdruck die neu exportierte xml so verarbeiten, dass sie an die gleiche Stelle tritt, wie deine alte Datenbank.

Und weil sich die Position der verschiedenen Felder evtl verändern könnte, würde ich in den Excelnformeln nicht mit fixen Zellwerten arbeiten, sondern bspw. mit SVERWEIS / XVERWEIS (in neueren Excelversionen) arbeiten.

 

Ich habe ähnliches bereits in Tür-, Wand- und Planlisten programmiert. Und ja, war funktionstüchtig 😉

ArchiCAD 26 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti