Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Lektüre VBA hauptsächlich mit Dateien?!

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  Lektüre VBA hauptsächlich mit Dateien?! (1903 mal gelesen)
Feyza
Mitglied



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

Beiträge: 605
Registriert: 12.01.2004

AutoCAD Mechanical 2017 - Oracle Client 10.2

erstellt am: 30. Jan. 2004 12:24    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 mir das " Mit AutoCAD programmieren mit VBA " gekauft

--> nur, in diesem Buch ist nur mit Elementen Makros erstellen etc.

Ich möchte mir ein Buch beschaffen, wo hauptsächlich mit Dateien gearbeitet wird.

z.B. In ein Textfeld was eingeben, er sucht sich in einem bestimmten Verzeichnis das aus, listet es in einem Bos aus, man kann dies anwählen und öffnen......

Kann mir jemand eine Lektüre, oder sogar eine Internetseite empfehlen, wo man mit Dateien arbeitet?!

Bin für jeden Hinweis dankbar!

Danke im voraus
Feyza

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, Monitore, ...,
einige AutoCADs 200x &
SWX 2kX

erstellt am: 30. Jan. 2004 15:58    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 Feyza 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Feyza:
Hallo,

ich habe mir das " Mit AutoCAD programmieren mit VBA " gekauft
[...]

Danke im voraus
Feyza


ISBN 3-8273-2105-0 ? Solltest vielleicht die ersten Kapitel nochmal lesen und sich ein Scriptähnliches Konstrukt bauen und die Aufgabenstellung etwas genauer beschreiben.

z.B. In ein Textfeld was eingeben, er sucht sich in einem bestimmten Verzeichnis das aus, listet es in einem Bos Block ? aus, man kann dies anwählen und öffnen...... war äusserst ungenau.

Activedwg.com vbdesign.net

------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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

Feyza
Mitglied



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

Beiträge: 605
Registriert: 12.01.2004

AutoCAD Mechanical 2017 - Oracle Client 10.2

erstellt am: 30. Jan. 2004 16:26    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

Nagut,

ich habe mir nur gedacht, dass ich eine bestimmte Lektüre spezial für Dateien finden könnte.

Mein Anliegen:

In einem Ordner sind mehrere Ordner auf einem bestimmten Laufwerk.

E:
Ordner 1
    Unterordner 1
    Unterordner 2
    Unterordner 3

unter diesen Unterordner befinden sich die CAD Files die ich für folgendes brauche:

In einem Formular frm habe ich 2 Textfelder,
wo der erste Textfeld den Pfad auswerten soll, wo die Datei liegt
und die zweite den Dateinamen

bsp. : LM-123456-E001-B1-Lehre.dwg

LM liegt unter E:\Ordner\Unterordner1
(weil es eine Menge von Daten sind, und das wurde zuviel Zeit beanspruchen, bis es alle Verezcihnis durchsucht, soll es gleich bei den ersten zwei Eingaben den Pfad finden.

Durch ein Commandoknopf  Suchen, soll er dann alles was er
mit LM123456 in diesem Verzeichnis gefunden hat, in einem Listbox auflisten.

Es soll möglich sein, in dem Listbox einen oder mehrere Dateien auszuwählen und mit einem weiteren Commandoknopf diese Dateien zu öffnen.

Ich hoffe, das nun ersichtlich ist, was ich vorhabe.

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 30. Jan. 2004 17: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 Feyza 10 Unities + Antwort hilfreich

Hi Feyza,

IMHOIn my humble opinion = Meiner bescheidenen Meinung nach ist das eine reine VB-Sache, weiss nicht ob's da Bücher über VBA so bringen. Du könntest ja mal unter www.addison-wesley.de schauen oder eben ebay 

Versuch' auch mal im VBE auf die M$ Scripting-Runtime Bibliothek zu verweisen, ggf. hilfts bissel weiter.
Ich habe damit aber auch noch nicht gearbeitet und noch weniger mit Datei- & Pfadzeugs.
Kleines Schnipsel nur [nehm ich manchmal zum Testen] gibt zB alle Dateien des aktuellen Ordners mit LM123456 im Direktfenster aus.

Dim x$
x = Dir("LM123456*.dwg")
Do While x <> ""
Debug.Print x
x = Dir
Loop


lg Nancy

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

Proxy
Ehrenmitglied
Stateless-DHCP v6-Paketfragmentierer


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

Beiträge: 1629
Registriert: 13.11.2003

Tastaturen, Mäuse,
Pladden, Monitore, ...,
einige AutoCADs 200x &
SWX 2kX

erstellt am: 30. Jan. 2004 22: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 Feyza 10 Unities + Antwort hilfreich


tipp0128.zip

 
ahh alles klar, ein dir *.dwg /s >> frm_1 


Beispielcode um Dateitypen vorzufiltern, dwg, dxf, 3ds, dwt, dws ist am Ende doch immer ein Bestandteil von einem wichtigen Modul und sollte (womöglich auch schon in Vordergrund in der Form als ein Pulldown existieren.

Code:

Option Explicit

'///API FOR RETURN FOLDER DIALOG///
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long

Private Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type

Private Const MAX_PATH = 2600

'///END API FOR THE RETURN FOLDER DIALOG///

Private Const INVALID_HANDLE_VALUE As Long = -1
Private Const FILE_ATTRIBUTE_COMPRESSED As Long = &H800
Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type

Private Declare Function FindClose Lib "kernel32" _
(ByVal hFindFile As Long) As Long

Private Declare Function FindFirstFile Lib "kernel32" _
Alias "FindFirstFileA" _
(ByVal lpFileName As String, _
lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function FindNextFile Lib "kernel32" _
Alias "FindNextFileA" _
(ByVal hFindFile As Long, _
lpFindFileData As WIN32_FIND_DATA) As Long

Private Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

'A variable to hold found files from the
'FindFile method
Private cFiles As Collection

Private Sub Class_Initialize()
    Set cFiles = New Collection
End Sub

'//Display the Browse For Folder Dialog ///

Public Function ReturnFolder() As String
    Dim Browser As BROWSEINFO
    Dim lngFolder As Long
    Dim strPath As String
    With Browser
        .hOwner = FindWindow(vbNullString, Application.Caption)
        .lpszTitle = "Select Directory to work in"
        .pszDisplayName = String(MAX_PATH, 0)
    End With
    strPath = String(MAX_PATH, 0)
    lngFolder = SHBrowseForFolder(Browser)
    If lngFolder Then
        SHGetPathFromIDList lngFolder, strPath
        ReturnFolder = Left(strPath, InStr(strPath, vbNullChar) - 1)
    End If
End Function

'//Search for files

Public Sub FindFile(StartPath As String, _
    Extension As String, GetSubs As Boolean)
    Dim strFileName As String
    'Dim cDir As New Collection
    Dim intCnt As Integer
    Dim hFile As Long
    Dim WFD As WIN32_FIND_DATA
    On Error GoTo Err_Control
    If Len(StartPath) > 0 Then
        If Right(StartPath, 1) <> "\" Then
            StartPath = StartPath & "\"
        End If
        hFile = FindFirstFile(StartPath & "*.*", WFD)
        If hFile <> INVALID_HANDLE_VALUE Then
            Do
            strFileName = Left(WFD.cFileName, _
            InStr(WFD.cFileName, vbNullChar) - 1)
            If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
                If strFileName <> "." And strFileName <> ".." Then
                    If GetSubs Then
                        FindFile StartPath & strFileName, Extension, GetSubs
                    End If
                End If
                Else
                If StrComp(Right(strFileName, 3), Extension, _
                    vbTextCompare) = 0 Then
                    cFiles.Add StartPath & strFileName
                End If
            End If
            'Just in case someone does a search from the root
            'Of a BIG drive
            DoEvents
            Loop While FindNextFile(hFile, WFD)
            hFile = FindClose(hFile)
        End If
    End If
    Exit_Here:
    Exit Sub
    Err_Control:
    'There are several system files that
    'will cause errors...
    Err.Raise Err.Number, "Find File", Err.Description
End Sub

'After FindFile is run, this will return
'The count of files found!
Public Property Get FileCount() As Long
    FileCount = cFiles.Count
End Property

'Get the path of a file in the cFiles collection
Public Function GetFile(lngID As Long) As String
    On Error GoTo Err_Control
    GetFile = cFiles(lngID)
    Exit_Here:
    Exit Function
    Err_Control:
    Err.Raise Err.Description
End Function

'//Returns just the file name, no path
Public Function GetFileName(strFilePath) As String
    Dim intPos As Integer
    Dim intCnt As Integer
    GetFileName = strFilePath
    intPos = InStr(strFilePath, "\")
    Do While intPos
    intCnt = intPos
    intPos = InStr(intCnt + 1, strFilePath, "\")
    Loop
    If intCnt > 0 Then GetFileName = Mid(strFilePath, intCnt + 1)
    End Function

    '// Returns only the path, no file name
    Public Function GetFilePath(strFileName As String) As String
        Dim intCnt As Long
        For intCnt = Len(strFileName) To 1 Step -1
            Select Case Mid(strFileName, intCnt, 1)
                Case ":"
                GetFilePath = Left(strFileName, intCnt)
                Exit For
                Case "\"
                GetFilePath = Left(strFileName, intCnt - 1)
                Exit For
            End Select
        Next intCnt
    End Function

    'Fast way to clear the collection
    Public Sub ResetFiles()
        Set cFiles = New Collection
    End Sub


---------------------------------------------------------------------'
Deine Anpassungen dürften minimal mit dem Beispiel-Projekt, als Anhang eingefügt, sein.

Code:

'Dieser Source stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------

'Control CheckBox: Check1
'Control DriveListBox: Drive1
'Control DirListBox: Dir1
'Control TextBox: Text2
'Control TextBox: Text1
'Control CommandButton: Command1
'Control ListBox: List1
'Control Label: Label6
'Control Label: Label5
'Control Label: Label4
'Control Label: Label3
'Control Label: Label2
'Control Label: Label1

'Dank an Lothar Kriegerow für die Verwirklichung der Filter-
'funktion.

Option Explicit

Private Declare Function FindFirstFile Lib "kernel32" _
        Alias "FindFirstFileA" (ByVal lpFileName As String, _
        lpFindFileData As WIN32_FIND_DATA) As Long
       
Private Declare Function FindNextFile Lib "kernel32" _
        Alias "FindNextFileA" (ByVal hFindFile As Long, _
        lpFindFileData As WIN32_FIND_DATA) As Long
       
Private Declare Function FindClose Lib "kernel32" (ByVal _
        hFindFile As Long) As Long

Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
End Type

Const MAX_PATH = 259

Private Type WIN32_FIND_DATA
  dwFileAttributes As Long
  ftCreationTime As FILETIME
  ftLastAccessTime As FILETIME
  ftLastWriteTime As FILETIME
  nFileSizeHigh As Long
  nFileSizeLow As Long
  dwReserved0 As Long
  dwReserved1 As Long
  cFileName As String * MAX_PATH
  cAlternate As String * 14
End Type

Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_COMPRESSED = &H800
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Sub Dir1_Change()
Text1.Text = Dir1.Path
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub


Private Sub Form_Load()
  Text1.Text = Dir1.Path
  Text2.Text = "*.*"
End Sub

Private Sub Command1_Click()
  Dim Files() As String, X&, Such$
  Dim DatCnt%, DirCnt%
  Such$ = Trim$(UCase$(Text2.Text))
  If Left$(Such$, 1) = "*" Then Such$ = Right$(Such$, Len(Such$) -  _
  InStr(Such$, "."))
    ReDim Files(0 To 0)
    MousePointer = 11
    DoEvents
    Call GetAllFiles(Text1.Text, Such$, Files)
    MousePointer = 0
    DoEvents
    List1.Clear
    For X = 0 To UBound(Files) - 1
      List1.AddItem Files(X)
      If Left$(Files(X), 2) = ">>" Then
        DirCnt = DirCnt + 1
        Label5.Caption = DirCnt
        Label5.Refresh
      Else
        DatCnt = DatCnt + 1
        Label6.Caption = DatCnt
        Label6.Refresh
      End If
    Next X
End Sub

Private Sub GetAllFiles(ByVal Root$, ByVal Such$, ByRef Field$())
  Dim File$, hFile&, FD As WIN32_FIND_DATA
DoEvents
    If Right(Root, 1) <> "\" Then Root = Root & "\"
    hFile = FindFirstFile(Root & "*.*", FD)
    If hFile = 0 Then Exit Sub
    Do
      File = Left(FD.cFileName, InStr(FD.cFileName, Chr(0)) - 1)
      If (FD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) _
        = FILE_ATTRIBUTE_DIRECTORY Then
        If (File <> ".") And (File <> "..") Then
        'Verz.: ">>" kann entfernt werden,da nur zur Visualisierung
         
          If Check1.Value Then
          Field(UBound(Field)) = ">>" & Root & File
          ReDim Preserve Field(0 To UBound(Field) + 1)
          End If
          GetAllFiles Root & File, Such$, Field
        End If
      Else
        'Datei: "    " kann entfernt werden,da nur zur Visualisierung
        If Such$ = Right$(UCase$(File), Len(Such$)) Or Such$ = "*" Then
        Field(UBound(Field)) = "    " & Root & File
        ReDim Preserve Field(0 To UBound(Field) + 1)
        End If
      End If
    Loop While FindNextFile(hFile, FD)
    Call FindClose(hFile)
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------


------------------
"Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?"  Read the whole story: The Autodesk File ca. 890 Seiten | 7500 KB PDF

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



Anzeige:Infos zum Werbeplatz >>

GWB Get wooden beams CAD APP für Holzarbeiten, 3D, Tiefbau

An add-on for AUTOCAD wich identifies wooden beams from 3D DWG drawings of wooden houses. The result of the program is a drawing with the identified parts (numbered and dimensioned) and a file of quantities that can be loaded into EXCEL.

Feyza
Mitglied



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

Beiträge: 605
Registriert: 12.01.2004

AutoCAD Mechanical 2017 - Oracle Client 10.2

erstellt am: 02. Feb. 2004 08:39    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  : ))


danke für den Script, frm kann ich nicht aufmachen, das VBA in AutoCAD erkennt das Formular nicht.
Dann habe ich mir gedacht, das ich das Formular selber erstelle, wollte die Elemente einfügen, nur die zwei Elemente die ich zusätzlich dafür brauche,
finde ich nicht:

'Control DriveListBox: Drive1
'Control DirListBox: Dir1

kann es sein, das es in VBA diese nicht existieren?!

Bei zusätzliche Steuerlemente oder in der Hilfeseite gibt es diese Elemente nicht?!?!?

Ich hoffe, dass ich mich irre, weil, wenn dieser Script funktioniert, wäre ich wirklich sehr froh : ))

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)2025 CAD.de | Impressum | Datenschutz