| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | PRO.FILE Kundentag, eine Veranstaltung am 16.06.2026
|
|
Autor
|
Thema: autocad/vba/excel (697 mal gelesen)
|
jobau Mitglied Bauingenieur
 
 Beiträge: 209 Registriert: 21.01.2003
|
erstellt am: 11. Mrz. 2003 15:43 <-- editieren / zitieren --> Unities abgeben:         
hallo zusammen, ich hab folgendes problem: ich hab eine excel-tabelle, die mir (kurz gesagt) die höhe eines punktes, der beliebig zwischen drei weiteren punkten liegt, ermittelt. die x,y,z werte der punkte lese/schreibe ich aus autocad heraus mit vba in eine textdatei. diese daten lese ich dann wieder mit vba in die excel-tabelle ein. wie kann ich mir diesen zwischenschritt über die textdateien sparen und die daten direkt in excel einlesen? in der hilfe hab ich gelesen, dass dies eigentlich funktioniert, aber irgendwie kapier ich nicht so ganz wie.... hat einer vielleicht ein beispiel für mich? mit dank im voraus jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Cuder Mitglied Selbständig
  
 Beiträge: 692 Registriert: 10.07.2002 AutoCAD 2002/2004/2005 unter Windows 2000 Professional SP3 PIV 3.4GHz 1024MB NVIDIA GeForce FX Go5700
|
erstellt am: 11. Mrz. 2003 16:01 <-- editieren / zitieren --> Unities abgeben:          Nur für jobau
|
Nesquiker Mitglied CAD - Zeichner

 Beiträge: 69 Registriert: 16.01.2003
|
erstellt am: 11. Mrz. 2003 22:59 <-- editieren / zitieren --> Unities abgeben:          Nur für jobau
hallo hier ein Versuch!! ist die Textdatei eine csv (durch kommas getrennte Zellen) in die du von Acad aus schreibst? wenn ja, dann dem Excel sagen das es als Dezimaltrennzeichen einen Punkt nehmen soll anstatt ein komma (also die zahl PI = 3,14usw sollte 3.14usw. werden) Da Acad das komma als x,y,z koordinaten nutzt und Excel standardmässig mit komma als Dezimaltrennzeichen arbeitet kann es da zu fehlermeldung kommen. grüsse ------------------ gruss Nesquiker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bernd Cuder Mitglied Selbständig
  
 Beiträge: 692 Registriert: 10.07.2002 AutoCAD 2002/2004/2005 unter Windows 2000 Professional SP3 PIV 3.4GHz 1024MB NVIDIA GeForce FX Go5700
|
erstellt am: 12. Mrz. 2003 00:49 <-- editieren / zitieren --> Unities abgeben:          Nur für jobau
|
jobau Mitglied Bauingenieur
 
 Beiträge: 209 Registriert: 21.01.2003
|
erstellt am: 12. Mrz. 2003 06:55 <-- editieren / zitieren --> Unities abgeben:         
Qbernd ja super!! das mit dem beispiel hat geklappt. ich kann jetzt aus autocad heraus excel öffnen. wie ich jetzt meine daten an den richtigen ort bringe, muss ich jetzt mal sehen... nochmal danke jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Autodesk Building Design Suite Premium 2021 Windows 10 Pro 64bit HP Workstation Z620, 24GB GeForce GTX 970
|
erstellt am: 12. Mrz. 2003 07:34 <-- editieren / zitieren --> Unities abgeben:          Nur für jobau
Hi Jörg, hier ein Beispiel wie ich es gemacht habe. Ist schon etwas älter, daher vielleicht nicht so schön programmiert. Code: Public ExcelVBA As Excel.Application ' stellt Excel für alle Prozeduren bereit' Übergibt Punktekoordinaten in Exeldatenblatt und ' speichert in Zeichnungspfand und Zeichnungsnamen Public Sub Dots_Extract_Excel() Dim ExcelSheet As Object Dim ExcelWorkbook As Object Dim RowNum As Integer Dim Count As Integer Dim Pfad As String Dim DatName As String Dim PfadDatei As String Dim SS As AcadSelectionSet Dim Punkt As Object Dim PunktElem As AcadPoint Dim pointUCS As Variant Dim pointWCS As Variant Dim FltTypes(0) As Integer Dim FltData(0) As Variant 'Filter für Selectionset erstellen FltTypes(0) = 0: FltData(0) = "POINT" ' Selectionset bilden und befüllen On Error Resume Next Set SS = ThisDrawing.SelectionSets("Dots_Extract_ExcelAuswahl") If Err Then On Error GoTo 0 Set SS = ThisDrawing.SelectionSets.Add("Dots_Extract_ExcelAuswahl") Else On Error Resume Next End If SS.Clear SS.SelectOnScreen FltTypes, FltData If SS.Count = 0 Then GoTo ENDE ' Pfad für Speicherung Datei ermitteln Pfad = ThisDrawing.GetVariable("DWGPREFIX") DatName = ThisDrawing.GetVariable("DWGNAME") DatName = Left(DatName, Len(DatName) - 4) PfadDatei = Pfad & DatName & ".xls" ' Excel starten. If ExcelVBA Is Nothing Then Set ExcelVBA = New Excel.Application ExcelVBA.Visible = True ' Erstellen einer neuen Arbeitsmappe und Suchen des aktiven Arbeitsblatts. Set ExcelWorkbook = ExcelVBA.Workbooks.Add Set ExcelSheet = ExcelVBA.ActiveSheet ExcelWorkbook.SaveAs PfadDatei RowNum = 1 ExcelSheet.Cells(RowNum, 1).value = "X" ExcelSheet.Cells(RowNum, 2).value = "Y" ExcelSheet.Cells(RowNum, 3).value = "Z" ' Modellbereich durchlaufen, umalle Blockreferenzen zu finden. For Each Punkt In SS Set PunktElem = Punkt 'Eingabe des Einsetzpunktes pointWCS = PunktElem.Coordinates ' Translate the point into UCS coordinates pointUCS = ThisDrawing.Utility.TranslateCoordinates(pointWCS, acWorld, acUCS, False) ' X-, Y-, Z-Werte der Punkte in Excel kopieren RowNum = RowNum + 1 For Count = 1 To 3 ExcelSheet.Cells(RowNum, Count).value = pointUCS(Count - 1) Next Count Next Punkt ExcelVBA.WindowState = xlMinimized ENDE: SS.Delete End Sub
------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |