Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Automatischer Programmstart

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:  Automatischer Programmstart (3432 mal gelesen)
Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 13. Feb. 2008 08:55    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 Leute,
ich hab zwar letzte Nacht bereits diesen Beitrag geschrieben, wahrscheinlich habe ich aber beim Senden einen Fehler gemacht, deshalb hier nochmals mein Problem:
Ich habe dank eurer Hilfestellungen in diesem Forum ein VBA-Programm geschrieben, welches mir bestimmte Daten aus einer Exceltabelle ausliest und diese dann in einer AutoCAD Zeichnung in einer Tabelle ausgibt. Hat auch alles geklappt, obwohl ich noch keine Programmiererfahrung habe!
Nun möchte ich das Programm und die betreffenden Pläne an einen Anwender weitergeben, der sich aber im ACAD nicht auskennt. Deshalb soll das Programm automatisch starten, wenn die entsprechende Acad-Datei geöffnet wird. Gibt es dafür eine Möglichkeit, ohne das Programm in die Startgruppe einzutragen? Oder muß ich dem Anwender eine Anleitung mitgeben, wie er das Programm in seine Startgruppe einlädt? Das Programm würde ja dann immer geladen werden, wenn er ACAD öffnet und nicht nur bei meinen Plänen. Oder sehe ich das falsch?
Ein weiteres Problem ist, das ich nicht weiss, wo der Anwender die Exceldatei auf seinem Rechner speichert und ich so keine konkrete Dateiangabe in meinem Programm machen kann. Gibt es im ACAD eine Datei-Such-Methode ähnlich dem Datei-Suchen-Dialog in Windows?
So nun habe ich Euch aber zugetextet, ich hoffe aber meine Probleme so verständlich rüber gebracht zu haben und Ihr könnt mir weiterhelfen. Vielen Dank schonmal.
Gruß Ines

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: 1357
Registriert: 24.07.2002

erstellt am: 13. Feb. 2008 09: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 Murkel 10 Unities + Antwort hilfreich

Hallo und Willkommen Ines,

Zum Thema Datei suchen schau dir mal diesen Beitrag an. In dem Beispiel geht es um den Datei-Öffnen Dialog, den du dort sicher gebrauchen kannst.
Du kannst eine Acad.dvb erstellen, die immer mitgeladen wird, wenn diese in einem Support-Pfad steht. Dort müsstest dann mit dem "BeginOpen"-Event abfragen, um welche Datei es sich handelt und dann wenn nötig deine DVB laden. Habs aber nicht getestet, ob es so funktioniert.
Ich würde die DVB in die Startgruppe eintragen lassen und gut is.

Gruß, Carsten

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: 1521
Registriert: 17.08.2005

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

erstellt am: 13. Feb. 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 Nur für Murkel 10 Unities + Antwort hilfreich

Hallo Ines,

du kannst eine DVB Datei auch in eine Zeichnung einbetten (im VBAMAN-anger). Dann hängen die Funktionen direkt an der Zeichnung. Allerdings einen BeginOpen Event gibt es IMHO nicht.

Meines Wissens wird beim Laden einer Zeichnung die AcadDoc.Lsp abgearbeitet. Vielleicht kann man aus einer Kombination von eingebundener DVB und dieser Lisp was machen.

Davon abgesehen würde ich das so nicht machen. Ich öffne nie fremde Dateien bei denen man erst die Makros aktivieren muss um sie zu laden. Mit 5 Zeilen ist die Festplatte wieder leer und jungfräulich.

Ich würde eine DVB und eine Lisp mitliefern die das Proggi lädt und einen Befehl zur Verfügung stellt, der z.B. ein Formular aus VBA aufruft. Da kannt du dann deinen Pfad und Datei browsen und die Inhalte nach AutoCAD übertragen.

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

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: 1357
Registriert: 24.07.2002

erstellt am: 13. Feb. 2008 12:22    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 Murkel 10 Unities + Antwort hilfreich

Hi,

Das BeginOpen und Endopen läuft über die Events im AutoCAD.
Aus der Hilfe:

EndOpen Event

Triggered immediately after AutoCAD finishes opening an existing drawing.

See Also | Example

Signature

object.EndOpen(Filename)
object

Application
An object expression that evaluates to a valid container object. In this case, the only valid container is the application.

Filename

String
The name of the file being opened.

Remarks

The EndOpen event follows the BeginOpen event after AutoCAD completes the opening of an existing drawing.

No events will be fired while a modal dialog is being displayed.

Habs aber selber noch nie benutzt und werde es auch nicht tun. 

Gruß, Carsten

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 13. Feb. 2008 12:51    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, Hallo Wilfried,
danke für Eure schnellen Antworten. Ich werde mal heute nacht darüber tüfteln, am Tage muß ich leider arbeiten und meine Familie versorgen. Es klingt jedenfalls alles recht kompliziert, da ich in Bezug auf Programmieren in jeder Hinsicht ein Newcomer bin und mich von Codezeile zu Codezeile hangel. Carsten, den Datei-öffnen-Dialog werde ich versuchen nachzuvollziehen, dazu aber gleich eine Frage vorweg: Da dies ein VB-Programm ist, wie stelle ich zu VB im ACAD-VBA die Verbindung her, muß ich da einen besonderen Funktions-
aufruf starten?
Ich hatte mir das mit dem automatischen Start etwas einfacher vorgestellt: Wenn ich in ACAD eine Exceltabelle als OLE-Objekt einfüge, wird diese doch auch mit Excel verknüpft und bei jedem Mal, wenn ich diese Zeichnung öffne, fragt mich ACAD selbständig, ob die Tabelle aktualisiert werden soll oder nicht. Und genau so eine Routine wollte ich in mein Programm einfügen. Aber wahrscheinlich greife ich da nach den Sternen.
Gruß Ines

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 14. Feb. 2008 12: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

Hallo Leute,
ich hab mir gestern mal die Tipps genauer angeschaut. Ich hatte in meinem jugendlichen Leichtsinn gehofft, das es eine Funktion gibt, die im Hintergrund nach dem Speicherort der Exceldatei sucht, diesem dann in eine Variable schreibt und ich mit dieser Variable den Excelaufruf starten kann. Der Anwender sollte also keine Dialogboxen oder ähnliches sehen. Hat jemand Ahnung wie diese OLE-Verknüpfungen im ACAD gelöst sind?
Vielleicht muß ich doch die ganze Sache von der Excelseite aus betrachten und das Pferd anders aufzäumen:
Anwender startet Excelmappe, wenn er eine bestimmte Zelle anklickt, wird die zugehörige ACAD-Datei geöffnet (wobei auch hier die Frage nach dem Speicherort steht) und einige Zellen werden als Tabelle in die ACAD-Zeichnung übernommen. Kann man das so machen?
Gruß Ines

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: 1521
Registriert: 17.08.2005

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

erstellt am: 14. Feb. 2008 13:05    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 Murkel 10 Unities + Antwort hilfreich

Hallo Ines,

so langsam versteh ich was du machen willst. Einige Restriktionen sollten schon da sein. Das mit dem automatischen Suchen nach einer Datei geht ja ins Uferlose. Wenn da noch im Netzwerk gesucht werden soll. AutoCAD hat ja auch Supportpfade in denen es sucht. Da gibt es schon Funktionen (programmierte) die In Pfaden suchen. Dann hast du aber immer noch das Problem das der Anwender zwei Versionen von deinen Dateien hat.
Ich würde es so machen, dass die Exceldatei und die DWG Datei im gleichen Ordner sein müssen. Ausserdem sollte der Name aus einer Konvention hervorgehen (z.B. Info.xls => Info.dwg)
Eine weitere Variante wäre in deiner Exceldatei mit VBA zu arbeiten. Dieses Modul erzeugt dir eine neue DWG mit den notwendigen Daten.

Ich habe zwar verstanden das du einige Daten aus Excel in die DWG schreiben willst, aber den Sinn habe ich nicht verstanden. Vielleicht erklärst du mal was du insgesamt erreichen willst. Vielleicht gibt es ja andere Lösungsansätze...

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

Oliver_01
Mitglied



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

Beiträge: 14
Registriert: 30.09.2002

erstellt am: 14. Feb. 2008 13:31    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 Murkel 10 Unities + Antwort hilfreich

Hallo,
zum Thema Autostart von vba-Dateien gibt die Acad-Hilfe folgendes her (leider nur in Englisch):

acad.dvb — Automatically Load a VBA Project
The acad.dvb file is useful if you want to load a specific VBA project that contains macros you want each time you start AutoCAD. Each time you start a new AutoCAD drawing session, AutoCAD searches for the acad.dvb file and loads it.

If you want a macro in your acad.dvb file to run each time you start a new drawing or open an existing one, add the following code to your acaddoc.lsp file:

(defun S::STARTUP()
  (command "_-vbarun" "updatetitleblock")
)
The project name in the example is updatetitleblock.


Gruß
Oliver

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 14. Feb. 2008 13:44    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,
ich versuch mich mal verständlicher auszudrücken:
Ich habe eine Exceldatei mit 260 Zeilen. Zu jeder dieser Zeilen wird eine AutoCAD-Datei erstellt.
In jeder dieser Zeichnungen ist ein Schema mit AutoCAD gezeichnet. Zusätzlich soll in jeder Zeichnung die entsprechende Excelzeile als Tabelle dargestellt werden. Leider sind die Einträge in der Exceltabelle nicht statisch, sondern werden immer mal wieder geändert. Das soll sich natürlich auch auf die AutoCAD-Pläne
auswirken und die dort befindliche Tabelle soll automatisch geändert werden.
Wenn ich mit AutoCAD-Bordmitteln eine Exceltabelle als OLE-Objekt einfüge, fragt mich AutoCAD bei jedem
Öffnen, ob ich die verknüpften Objekte aktualisieren möchte oder nicht. Allerdings wird keine Fehlermeldung
ausgegeben, wenn die Exceldatei nicht gefunden wurde, sondern lediglich die Aktualisierung der Tabelle abgebrochen. Dies gefällt mir nicht, ich habe nach einer Möglichkeit gesucht, das die Datei im Hintergrund selbständig gesucht wird. Aber Du hast Recht, wenn ich noch ein eventuelles Netzwerk in Betracht ziehe, dann
wird die Geschichte zu aufwändig. Also werde ich zumindest einen gemeinsamen Speicherordner vorgeben.
Gruß Ines

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 14. Feb. 2008 13:51    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 Oliver,
jetzt habe ich Deine Hilfe völlig übersehen. Sorry. Ich möchte allerdings das Programm nicht bei jedem AutoCAD-Start laden, sondern nur bei ausgewählten Zeichnungen.
Gruß Ines

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: 1521
Registriert: 17.08.2005

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

erstellt am: 14. Feb. 2008 17: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 Murkel 10 Unities + Antwort hilfreich

Hallo Ines,

hier ist mal ein Programmcode mit dem du ab einem Startordner nach einer Datei suchen kannst.

Code:
Sub SucheDatei()
    Debug.Print DateiSuche("C:\temp", "Suchmich.txt")
End Sub

Function DateiSuche(vlst_Root As String, vlst_Datei As String) As String
    ''' !!! Verweis auf Microsoft Scripting setzen !!! '''
   
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim RootFolder As Folder
    Dim SubFolder As Folder
   
    ' Ist die Pfadangabe mit abschliessenden \
    If Right(vlst_Root, 1) <> "\" Then
        vlst_Root = vlst_Root & "\"
    End If
   
    Debug.Print "Suche in Ordner: " & vlst_Root
   
   
    ' Ist die Datei im Verzeichnis vorhanden
    If fso.FileExists(vlst_Root & vlst_Datei) Then
       DateiSuche = vlst_Root & vlst_Datei
       Exit Function
    End If
    ' Springe in die Unterordner und suche da
    Set RootFolder = fso.GetFolder(vlst_Root)

    For Each SubFolder In RootFolder.SubFolders
        ' Der jeweilige Unterordner ist wieder der Ausgang für die Suche
        ' Die eigene Funktion wird wieder (rekursiv) aufgerufen und durchsucht diesen Ordner
        DateiSuche = DateiSuche(SubFolder.Path, vlst_Datei)
        If DateiSuche <> "" Then
            Exit Function
        End If
    Next
End Function



Was hast du denn für einen Programmcode um die Tabelle aus Excel nach AutoCAD zu übertragen ?  

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 15. Feb. 2008 09:08    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 Deine Hilfe. Kleine Frage dazu: Was meinst Du mit "Verweis auf Windows Scripting setzen" oder ist das nur der Kommentar zu der Zeile darüber und der Verweis ist mit der Funktion Dateisuche erledigt?
Anbei mein bisheriger Code um die Tabelle zu übertragen:

Sub Exceltabelle_übertragen()

'ExcelDaten auslesen
Dim XL1 As Object                'Variable für Verweis auf Excel-Datei
Dim XLProg As Object            'Variable für Verweis auf Excel-Applikation

Dim zeile As Integer
Dim spalte As Integer
Dim z As Integer
Dim s As Integer
Dim Datenfeld() As Variant

zeile = 4
spalte = 25

ReDim Datenfeld(zeile, spalte)

'Erfassung der Excel-Daten
Set XLProg = CreateObject("excel.application")

Set XL1 = XLProg.Workbooks.Open("*.xls")

For z = 0 To zeile
    For s = 1 To spalte
        Datenfeld(z, s) = XL1.Worksheets(1).Cells(z, s).Value
    Next s
Next z

XLProg.Quit                    'Excel-Programm beenden

Set XL1 = Nothing              'Verweis auf Tabelle freigeben
Set XLProg = Nothing            'Verweis auf Anwendung freigeben

    Dim MyPaperSpace As IAcadPaperSpace
    Set MyPaperSpace = ThisDrawing.PaperSpace
   
    Dim pt(2) As Double        'Startpunkt (linker oberer Punkt der Tabelle) festlegen
    pt(0) = -660
    pt(1) = 195
   
    Dim MyTable As AcadTable
    'Tabelle zeichnen mit Startpunkt, Zeilenanzahl, Spaltenanzahl, Zeilenhöhe, Spaltenbreite)
    Set MyTable = MyPaperSpace.AddTable(pt, 25, 2, 5, 55)

    Dim i As Double, j As Double
    Dim col As New AcadAcCmColor

    For i = 0 To 24          'für jede Zeile
        For j = 0 To 1      'für jede Spalte
            MyTable.SetCellTextHeight i, j, 3              'Texthöhe = 3
            MyTable.SetCellAlignment i, j, acMiddleLeft    'Textposition = Mitte links innerhalb der Zelle
            'MyTable.SetCellType i, j, acTextCell
            MyTable.VertCellMargin = 0.5                    'horizontaler Abstand Text-Zellenrand = 1
            MyTable.RowHeight = 4
        Next j
    Next i
   
    MyTable.SetText 0, 0, Datenfeld(3, 2)
    MyTable.SetText 1, 0, "Kapitel"
    MyTable.SetText 2, 0, "Gebäudekostenstelle"
    MyTable.SetText 3, 0, "Ordner"
    MyTable.SetText 4, 0, "Anlagentyp"
    MyTable.SetText 1, 1, Datenfeld(3, 3)
    MyTable.SetText 2, 1, Datenfeld(3, 4) & Datenfeld(3, 5)
    MyTable.SetText 3, 1, Datenfeld(3, 6)
    MyTable.SetText 4, 1, Datenfeld(3, 7)

    Dim msgString As String
    msgString = MyTable.GetText(0, 0)
    For i = 0 To 24
        For j = 0 To 1
            msgString = msgString & "Row " & i & ", Column " & j & ": " + MyTable.GetText(i, j) & vbCr
        Next j
    Next i

End Sub

Gruß Ines

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: 1521
Registriert: 17.08.2005

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

erstellt am: 15. Feb. 2008 12:59    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 Murkel 10 Unities + Antwort hilfreich

Hallo

Zitat:
...
Was meinst Du mit "Verweis auf Windows Scripting setzen" oder ist das nur der Kommentar zu der Zeile darüber und der Verweis ist mit der Funktion Dateisuche erledigt?
...


Du musst unter Extras/Verweise Microsoft Sripting Runtime auswählen. Der Compiler kennt sonst das Objekt FileSystemObject nicht. Diese Einstellung kann man im Code nicht vornehmen.

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 15. Feb. 2008 13:50    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,
prima Erklärung, danke.
Ich hab Dir mal 10 Unities gutgeschrieben für Deine ständige Hilfe!
Gruß Ines

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

Nepumuk
Mitglied
Entwicklungsleiter


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

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 15. Feb. 2008 17:59    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 Murkel 10 Unities + Antwort hilfreich

Hallo Wilfried,

Zitat:
Du musst unter Extras/Verweise Microsoft Sripting Runtime auswählen. Der Compiler kennt sonst das Objekt FileSystemObject nicht. Diese Einstellung kann man im Code nicht vornehmen

Das kann ich so nicht stehen lassen, denn auch das FileSystemObject-Objekt lässt sich per Late-Binding erstellen.

Beispiel:

Code:
Public Sub Wilfried()
    Dim objFSO As Object, objDrive As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    For Each objDrive In objFSO.Drives
        If objDrive.IsReady Then MsgBox objDrive.SerialNumber
    Next
End Sub

------------------
Gruß
Nepumuk 

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: 1521
Registriert: 17.08.2005

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

erstellt am: 16. Feb. 2008 12: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 Nur für Murkel 10 Unities + Antwort hilfreich

Hallo Nepumuk,
Zitat:
.. Das kann ich so nicht stehen lassen, denn auch das FileSystemObject-Objekt lässt sich per Late-Binding erstellen.
...

Stimmt. Aber im Beispiel ist es anders und muss von daher eingestellt werden.

Ganz abgesehen von Vor- oder Nachteilen von early- oder latebinding ist es für einen Anfänger auf jeden Fall leichter mit dem Verweis zu arbeiten. So kann der Objekttyp sauber deklariert werden und dadurch steht die "Eingabehilfe" mit Methoden und Eigenschaften zur Verfügung.

Wilfried

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

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

Nepumuk
Mitglied
Entwicklungsleiter


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

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 16. Feb. 2008 13: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 Nur für Murkel 10 Unities + Antwort hilfreich

Hallo Wilfried,

hat natürlich was, auf die Intelsense  zugreifen zu können. Aber wenn du das Programm auf einem anderen Rechner laufen lassen willst, auf dem sich eine andere Version der DLL befindet, oder du einen Update lädst bei dem sich Version ändert,  dann sind die Verweise ungültig  und du bekommst ganz eigenartige Fehlermeldungen  . In größeren Foren kommen jede Woche mehrere Anfragen  nur deswegen. Außerdem, wozu gibts die Hilfe. 

------------------
Gruß
Nepumuk 

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 18. Feb. 2008 00:02    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, hallo Nepumuk,
vielen, vielen Dank für Eure Hilfe. Allerdings muß ich gestehen, daß ich nicht mehr so richtig dahintersteige.
Deshalb habe ich jetzt doch versucht, das ganze von Excel aus zu betrachten, da es im Excel leichter ist, den Dateiöffnen-Dialog aufzurufen. Dies ist mir auch gelungen:

Sub DateiOeffnen()
  Dim MyFileName As Variant
  Dim WildCard$, AnzeigeText$, MyDir$
  MyDir = ""        'durch "" wird das aktuelle Verzeichnis des aktuellen Laufwerks angezeigt
  AnzeigeText = "AutoCAD-Dateien"
  WildCard = "*.dwg)"
  'Speicherort der *.dwg-Datei (kompletter Verzeichnispfad) wird in Variable MyFileName geschrieben:
  MyFileName = Application.GetOpenFileName(AnzeigeText & "(" & WildCard & ",)")
  If MyFileName = "Falsch" Then Exit Sub
 
  Dim acApp As Object      'Anwendungsobject
  Dim acDoc As Object      'Dokumentobject
 
  'Setzen des Aktuellen Dokumentes und öffnen der Datei
  Set acApp = CreateObject("Autocad.Application")
  Set acDoc = acApp.ActiveDocument
 
  acApp.Documents.Open (MyFileName)

End Sub

Leider öffnet er mir anschließend nicht Autocad, gibt aber auch keine Fehlermeldung aus, sondern beendet das Programm stillschweigend. Muß ich eventuell auch im Excel den Verweis auf Autocad setzen? ich hoffte dies umgehen zu können. Ich habe auch schon in diversen Excel-Foren gesucht, aber die haben keinen Bezug zu Autocad. Ich hoffe, ich fall Euch nicht zu sehr auf die Nerven und bitte Euch nochmals um Hilfe!

Gruß Ines

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

Nepumuk
Mitglied
Entwicklungsleiter


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

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 18. Feb. 2008 00:56    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 Murkel 10 Unities + Antwort hilfreich

Hallo Ines,

schon mal das versucht?

Code:
Set acApp = CreateObject("Autocad.Application")
acApp.Visible = True
Set acDoc = acApp.ActiveDocument

Ich kanns nicht testen, ich hab kein AutoCAD.

P.S. Öffnendialog geht auch ohne Excel.

Code:
Option Explicit

Private Declare Function GetFileNameFromBrowseW Lib "shell32.dll" Alias "#63" ( _
    ByVal hwndOwner As Long, _
    ByVal lpstrFile As Long, _
    ByVal nMaxFile As Long, _
    ByVal lpstrInitialDir As Long, _
    ByVal lpstrDefExt As Long, _
    ByVal lpstrFilter As Long, _
    ByVal lpstrTitle As Long) As Long
Private Declare Function GetFileNameFromBrowseA Lib "shell32.dll" Alias "#63" ( _
    ByVal hwndOwner As Long, _
    ByVal lpstrFile As String, _
    ByVal nMaxFile As Long, _
    ByVal lpstrInitialDir As String, _
    ByVal lpstrDefExt As String, _
    ByVal lpstrFilter As String, _
    ByVal lpstrTitle As String) As Long
Private Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" ( _
    ByRef lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function GetActiveWindow Lib "user32.dll" () As Long

Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type

Private Const VER_PLATFORM_WIN32_NT = 2

Public Sub prcOpenFile()
    Dim strFilename As String
    strFilename = Space$(255)
    Const INITIAL_PATH = "D:\Eigene Dateien\"
    If IsWinNT Then
        GetFileNameFromBrowseW GetActiveWindow, _
            StrPtr(strFilename), 255, StrPtr(INITIAL_PATH), _
            StrPtr("dwg"), StrPtr("AutoCAD-Files (*.dwg)" & Chr$(0) & "*.dwg" & Chr$(0)), _
            StrPtr("Open File")
    Else
        GetFileNameFromBrowseA GetActiveWindow, _
            strFilename, 255, INITIAL_PATH, _
            "dwg", "AutoCAD-Files (*.dwg)" & Chr$(0) & "*.dwg" & Chr$(0), "Open File"
    End If
    strFilename = Trim$(strFilename)
    strFilename = Left$(strFilename & Chr$(0), InStr(strFilename, Chr$(0)) - 1)
    If strFilename <> "" Then
        MsgBox strFilename
    Else
        MsgBox "Abbrechen gedrückt"
    End If
End Sub

Private Function IsWinNT() As Boolean
    Dim udtOS_Info As OSVERSIONINFO
    udtOS_Info.dwOSVersionInfoSize = Len(udtOS_Info)
    GetVersionEx udtOS_Info
    IsWinNT = udtOS_Info.dwPlatformId = VER_PLATFORM_WIN32_NT
End Function


------------------
Gruß
Nepumuk  

[Diese Nachricht wurde von Nepumuk am 18. Feb. 2008 editiert.]

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 18. Feb. 2008 13:09    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 Nepumuk,
super dieser Dateiöffnen-Dialog funktioniert auch unter meinem Autocad. Große Klasse, danke! Der 2.Tipp brachte mich auch weiter: acApp.Visible = True hat gefehlt, allerdings muß ich Autocad nun noch beibringen,
das es mit maximiertem Fenster öffnet und nicht verkleinert. Vielleicht fällt mir ja heute abend was dazu ein.
Dir schieb ich erstmal 10Unities zu!
Gruß Ines

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

Nepumuk
Mitglied
Entwicklungsleiter


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

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 18. Feb. 2008 13: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 Nur für Murkel 10 Unities + Antwort hilfreich

Hallo Ines,

das AutoCAD-Fenster hat bestimmt eine Windowstate-Eigenschaft. Versuch es mal so:

acApp.Visible = True
acApp.WindowState = vbMaximizedFocus

Wenn AutoCAD keine VB-Konstanten kennt, oder diese keinen zulässigen Wert hat, dann musst du im Objektkatalog nachschauen, welche Werte / Konstanten da zulässig sind.

------------------
Gruß
Nepumuk 

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

Murkel
Mitglied
CAD-Zeichnerin


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

Beiträge: 20
Registriert: 12.02.2008

AutoCAD 2006 und 2007
Windows XP 32bit
Office 2003

erstellt am: 19. Feb. 2008 23:13    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 Nepumuk,
danke für Deine Hilfe. Es funktioniert.
Eine andere Möglichkeit ist:
acApp.Application.WindowState = acMax
Ich hänge zwar schon wieder fest, aber das ist ein neues Thema!
Deshalb nochmals Danke an alle!
Gruß Ines

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