Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  VBA: Dateien zum Lesen öffnen

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:  VBA: Dateien zum Lesen öffnen (3187 mal gelesen)
Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 11. Aug. 2009 12: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

Hallo,

hier also meine zweite Frage: Ist es möglich, in AutoCAD automatisch eine DXF Datei aus einem Ordner zu öffnen, eine Polylinie darin zu finden (es gibt immer meist nur eine, sonst sind sie anhand der Punktanzahl zu unterscheiden), ein paar Prozeduren darüber laufen zu lassen, die Datei wieder zu schließen und anschließend die nächste auf diese Weise zu verwursten?

Viele Grüße und vielen Dank im voraus,

Fabi


Tante Edit: Jetzt gibts den Beitrag zweimal.. entschuldigung. Bitte an die Moderatoren: Bitte einen Beitrag löschen.

[Diese Nachricht wurde von Fabi143 am 11. Aug. 2009 editiert.]

[Diese Nachricht wurde von Fabi143 am 11. Aug. 2009 editiert.]

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


Ex-Mitglied

erstellt am: 11. Aug. 2009 13:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Fabi,

bitte diesen Thread jetzt als den aktuellen ansehen, Rückfragen von Deinem alten Eintrag dann bitte auch gleich hier beantworten.

- alfred -

------------------
www.hollaus.at

[Diese Nachricht wurde von a.n. am 11. Aug. 2009 editiert.]

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 11. Aug. 2009 13:30    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

Moin,

mit dieser Problemstellung bin ich bisher nicht gar so weit gediehen.
Mir ist leider mein Code dafür abhanden gekommen.   
Ich hatte eine Nutzerabfrage --> Ordnerpfad als String
Und dann eine Schleife, die erst eine Dateiliste erstellen und dann
nacheinander die DXF Dateien öffnen sollte.
Stimmt das so als Herangehensweise?
Was den Code betrifft: Da muß ich nochmal ran.

Fabi

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


Ex-Mitglied

erstellt am: 11. Aug. 2009 13:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi, 
Zitat:
Stimmt das so als Herangehensweise?
...sehe keinen Fehler, Verzeichnis einlesen kannst Du mit dem Windows-Scripting-Object oder mit der VB-Funktion 'DIR'.

Vorsicht bei großer Dateianzahl, Öffnen von 100ten Zeichnungen kann irgendwann mal ein MemoryLeak hinterlassen und AutoCAD ist tschüss.

- alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 11. Aug. 2009 14:47    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,

ich habe es nun mit dieser Prozedur probiert:

Code:

Original erstellt von startrek:
.....

    Code:
    Sub asdf()
      Dim f$, p$, i&
      p = "D:\Cad\"
      f = Dir(p & "*.dwg")
      i = 1
      Do While f <> ""
          Documents.Open p & f
          With ActiveDocument
            MsgBox i & ": " & .WindowTitle
            If Not .Saved Then .Save
            .Close
          End With
          i = i + 1: f = Dir
      Loop
    End Sub


Gruss Nancy


und erhalten folgenden Fehler vom VBA Editor:
Laufzeitfehler '-2145320845(80210073)':
Ungültiger Dateiname

liegt das jetzt an meinem Code oder am Dateinamen?

Fabi

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


Ex-Mitglied

erstellt am: 11. Aug. 2009 14:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

Dein Code läuft bei mir, bei welcher Zeile steckt er bei Dir?

- alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 11. Aug. 2009 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

Bei mir sieht es etwas anders aus, da ich dazwischen noch prozeduren hängen habe.
Es hängt allerdings schon recht früh:
Code:

Dim Pathname As String
  Pathname = InputBox("Bitte geben Sie den Pfad zu den Schablonendateien an")
     
  p = Pathname
  f = Dir(p & "*.dxf")
  g = 1
  Do While f <> " "
      Documents.Open p & f


Er bleibt direkt nach Documents.Open hängen.

Gruß,

Fabi

[Diese Nachricht wurde von Fabi143 am 11. Aug. 2009 editiert.]

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


Ex-Mitglied

erstellt am: 11. Aug. 2009 15:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

kann es sein, dass Du im AutoCAD die Systemvariable 'SDI' auf 1 stehen hast?

- alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 11. Aug. 2009 16: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

nein.. die ist auf "0" von daher müßte es gehen.
Kann es sein, daß die Variable p den Wert Pathname nicht im geeigneten Format übernimmt?

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


Ex-Mitglied

erstellt am: 11. Aug. 2009 16:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi, 
Zitat:
Kann es sein, daß die Variable p den Wert Pathname nicht im geeigneten Format übernimmt?
...wenig wahrscheinlich, bei Strings kann es ev. Unterschiede zwischen ASCII und UNICODE geben, diese sind zwar in ObjectARX, aber nicht in VB/VBA-Strings relevant.

Du könntest aber mal versuchen, Zeichnungsnamen explizit ohne Sonderzeichen, ohne Leerschritte und in einem Verzeichnis mit gleichen Regeln zu versehen.

Und was noch offen ist bzw. eine Möglichkeit wäre: Dein erstes Beispiel war '*.dwg', das zweite war '*.dxf' ==> Du hast aber schon die DXF's mal händisch versucht, zu öffnen?

- alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 11. Aug. 2009 17:12    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

Ahso, entschuldigung.
Das obere Beispiel war ein Zitat aus einem anderen Thread. deswegen das DWG. Händisch lassen sich alle Dateien öffnen und bearbeiten.

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


Ex-Mitglied

erstellt am: 11. Aug. 2009 17:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

sorry, war ein bisschen unterwegs. 

Nachdem ich es nicht nachvollziehen kann, starten wir mal vom Anfang:

a) hast Du zumindest eine leere Zeichnung offen?

b) hast Du Deinen Code in VBA oder in einem externen VB6

c) wenn Du einen Breakpoint setzt (bei der Zeile mit '...open') und eine Überwachung auf 'Documents' machst, ist es ein gültiges Objekt?

d) schreib mal nur eine Zeile hardcoded mit einem Dir bekannten (natürlich vorhandenen) Dateinamen, geht das?

- alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 12. Aug. 2009 17:54    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 habe heute nur an meiner Arbeit geschrieben und kam nicht zum Programmieren. Ich probiere es gleich morgen aus.

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

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 13. Aug. 2009 12:27    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

Moin.

Ich habs mal hardcoded geschrieben.. und den Fehler gefunden. Es fehlte ein "\" hinter dem gewünschten Ordner. Ansonsten funktionupselt das jetzt.. allerdings bricht er nun das restliche Programm ab.. sowas doofes.

Viele Grüße,

Fabi

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


Ex-Mitglied

erstellt am: 13. Aug. 2009 12:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Fabi, 
Zitat:
allerdings bricht er nun das restliche Programm ab.. sowas doofes.
Was wird abgebrochen?

Läuft die Schleife nach dem ersten Document-Open nicht mehr weiter? Oder kommt eine (neue) Fehlermeldung?

Heikel könnte sein, wenn Du das VBA aus einem ThisDrawing-Objekt startest, das Du nachher (oder im Lauf) schließt, darum war meine Frage, ob Du ein Doc offen hast, wenn Du Deinen Code startest bzw. was bei der Prüfung des Objekts 'Documents' drinsteht (ob's überhaupt initialisiert ist).

- alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 13. Aug. 2009 12:53    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 hatte ein Doc offen. Allerdings führte das dazu, daß er dieses Doc mitverwursten wollte, ich dort aber keine Polylinie anklicken konnte; danahc ist es abgestürzt.

jetzt habe ich nach der Auswahlabfrage für die Polylinie noch eine Überprüfung drin:

Code:
On Error Resume Next
        ThisDrawing.Utility.GetEntity Ent, Inspkt, Chr(10) & "Polylinie wählen: "
        If Err.Number Then
            Exit Sub
        End If


sie sorgt jetzt, nachdem ich das automatische Öffnen der Dateien eingebaut habe dafür, daß das Programm die Sub beendet. Wenn ich die Überprüfung auskommentiere, funktioniert es, ACad hängt sich allerdings nach Bearbeitung der letzten Datei auf. Ich konnte in dem Fall auch nicht überprüfen, ob wirklich alles richtig bearbeitet wurde.

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

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 13. Aug. 2009 12: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

Vll. muß ich wirklich vom ThisDrawing weg. Wie mache ich das aber am besten?

Ich schreibe übrigens mit dem vba editor von autocad

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


Ex-Mitglied

erstellt am: 13. Aug. 2009 12:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi, 
Zitat:
ACad hängt sich allerdings nach Bearbeitung der letzten Datei auf
...viele Dateien öffnen und schliessen mag AutoCAD (und auch andere nicht), egal ob Word oder AutoCAD - 5000 Dateien öffnen, darauf zugreifen und wieder schliessen ist der Tod für Windows und dessen Memory-Verwaltung.

Du kannst aber (empfehle ich bei der Abhandlung solcher Dinge grundsätzlich) ein Log-File mitschreiben, am Anfang einer Zeichnung fügst Du eine Zeile mit Dateiname ein (ev. mit Datum/Uhrzeit), dann LogFile schliessen. An Ende der Zeichnungsbehandlung eine weitere Zeile mit Fehlermeldungen oder Erfolg.

In diesem Fall könntest Du auch erkennen, ob die letzte Datei ordnungsgemäß abgehandelt wurde und AutoCAD erst danach gecrashed ist oder während der letzten Datei.

- alfred -

------------------
www.hollaus.at


Ex-Mitglied

erstellt am: 13. Aug. 2009 16:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi, 
Zitat:
Vll. muß ich wirklich vom ThisDrawing weg. Wie mache ich das aber am besten?
...sorry, da haben sich unsere Antworten überkreuzt und damit ist mir dieser Beitrag entkommen.

Du kannst einmal auf das Application-Objekt referenzieren mit
dim tAcadApp as AcadApplication
set tAcadApp = ThisDrawing.Application

oder der noch weiter entfernte Weg:

set tAcadApp = GetObject(,"AutoCAD.Application")

Und wenn Du nicht viel in der Zeichnung machen mußt, dann kannst Du von 'ganz aussen' kommen und z.B. Excel starten, dort in den VBA-Editor und mit zweitem oberen Weg auch Zugriff auf AutoCAD bekommen.

Dieser Weg hätte den Vorteil, dass Du z.B. alle 100 Zeichnungen das AutoCAD schliessen und neu starten kannst.
Dieser Weg hat den Nachteil, dass der Zugriff auf Elemente/Eigenschaften der Zeichnung im AutoCAD deutlich langsamer ist.

Viel Erfolg, - alfred -

------------------
www.hollaus.at

Fabi143
Mitglied
Student


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

Beiträge: 18
Registriert: 11.08.2009

Windows Xp Professional SP3;Athlon64 X2 6000+;Radeon X1550 64-bit;
AutoCAD 2010, vba enabler

erstellt am: 13. Aug. 2009 19:48    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

Hmm..
Da das mit dem  automatischen Öffnen der Dateien nicht klappt, ich aber thematisch mit meiner Studienarbeit eigentlich weit genug gekommen bin, habe ich mich entschlossen, das aufzugeben und meine bisherigen Ergebnisse zu verarbeiten.

Danke an Alfred für die vielen Antworten :-)

Fabi

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