| |
 | 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: Dateiöffnendialog (4118 mal gelesen)
|
Gerd_Ecke Mitglied Bergbauingenieur
 
 Beiträge: 148 Registriert: 28.08.2002
|
erstellt am: 06. Dez. 2004 09:25 <-- editieren / zitieren --> Unities abgeben:         
Hallo NG, bin erst wenige Wochen VBA-Anwender, komme aus der Rcihtung Pascal. Grundlegende Fragen, wie binde ich in meine Routine einen Dateiöffnen-Dialog ein ( möglichst den Standartdialog von Windows ), möchte meinem Programm nur mitteilen wo sich eine bestimmte Textdatei befindet. Mit freundlichen Grüßen und besten Dank GE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cnc Mitglied cnc,..

 Beiträge: 37 Registriert: 19.09.2004
|
erstellt am: 06. Dez. 2004 14:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
|
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 06. Dez. 2004 14:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
Hallo Gerd, kannst auch nachfolgenden Code in ein Modul kopieren und immer bei Bedarf aufrufen. Ein Beispiel, wie die Funktionen benutzt werden finden sich in 'DateiDialogStart()'. Code: Public Declare Function GetOpenFileName Lib "comdlg32.dll" _ Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As LongPublic Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Function fkt_FileOpen() As String Dim sFilters, sType As String Dim pos As Integer Dim buff As String Dim sLname As String Dim sSname As String Dim OFName As OPENFILENAME sFilters = "VB-Dateien (*.frm;*.bas;*.cls)" & vbNullChar & _ "*.frm;*.bas;*.cls" & vbNullChar & _ "Formulardateien(*.frm)" & vbNullChar & "*.frm" & vbNullChar & _ "Basic-Dateien (*.bas)" & vbNullChar & "*.bas" & vbNullChar & _ "Klassendateien (*.cls)" & vbNullChar & "*.cls" & vbNullChar & _ "Alle Dateien (*.*)" & vbNullChar & "*.*" & vbNullChar With OFName .lStructSize = Len(OFName) .hwndOwner = &O0 .lpstrFilter = sFilters .nFilterIndex = 1 .lpstrFile = sModul & Space$(1024) & vbNullChar & vbNullChar .nMaxFile = Len(.lpstrFile) .lpstrFileTitle = Space$(254) .nMaxFileTitle = 255 .lpstrInitialDir = "c:\temp" .lpstrTitle = "Modul exportieren" .flags = OFN_LONGNAMES End With If GetOpenFileName(OFName) Then fkt_FileOpen = Left(OFName.lpstrFile, InStr(1, OFName.lpstrFile, Chr(0)) - 1) ElseIf intError = 0 Then End If End Function Sub DateiDialogStart() Dim sPfad As String
sPfad = fkt_FileOpen Debug.Print "Ausgewählte Datei: ", sPfad End Sub
Gruß TP
------------------ [Diese Nachricht wurde von BloodyMess am 06. Dez. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Gerd_Ecke Mitglied Bergbauingenieur
 
 Beiträge: 148 Registriert: 28.08.2002
|
erstellt am: 07. Dez. 2004 09:25 <-- editieren / zitieren --> Unities abgeben:         
DANKE  @cnc : Lösungsansatz war voll richtig, aber beim Einbinden kommt der Fehler auf fehlende Lizenzierung. @BloodyMess : AHA - Effekt ist genau was ich suchte. Aber gleich ergibt sich noch eine Frage im Nachhinein : Wie bekomme ich heraus welche Funktionen noch in der dll stecken wenn ich diese über Verweise und dem Objektkatalog nicht ansprechen kann ? Meine Firma gibt zwar k€ fur 1000 Lizenzen MS-Office Pro. und k€ für 20 L. Acad Map 2005 aus aber wenn man MS-VB will kommt als Antwort: "mit VBA : findfirst, findnext ..." MfG GE  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 07. Dez. 2004 10:54 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
Hallo Gerd, mit dem Dependency Checker kommst Du an die Funktionen, welche sich in der DLL befinden (eigentlich ist er dazu gedacht um die Abhängigkeiten einer DLL anzuzeigen). Die Frage ist nur immer, werden die Funktionen auch exportiert und noch wichtiger, wie kann man sie aufrufen? Die Funktionen bekommst Du über den Dependency Checker, wie Sie aufgerufen werden, aber meist nicht. Das kann man aber auf Seiten im Netz nachlesen. Am besten Du googelst mal nach der DLL und der Funktion irgendwo gibt es eine Übersicht über die Funktionen der einzelnen DLLs. Kann Dir die Seite spätestens heute abend schicken . Hoffe das hilft Dir weiter Gruß TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 08. Dez. 2004 18:17 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
|
s.wickel Mitglied Bauingenieur Wasserwirtschaft
 
 Beiträge: 422 Registriert: 17.12.2001
|
erstellt am: 04. Feb. 2005 08:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
|
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002 AutoCAD ACA 2024 Solidworks 2022 Sp5 Enterprise PDM 2022 Sp5 Pascam Woodworks Visual Studio 2017 Pro Windows 10 64Bit Dell Precision 3660 Intel Core i9-12900K 32 GB Arbeitsspeicher 2x Dell U2415
|
erstellt am: 27. Feb. 2005 13:33 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
|
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
 
 Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 02. Nov. 2006 13:34 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
Zitat: Original erstellt von Carsten1210: Man besorge sich von Microsoft die kostenlose Visual Basic Control Creation.
Hallo, kann mir jemand sagen, wo man die derzeit noch herbekommt? Der Link funktioniert leider nicht mehr, MS scheint die nicht mehr anzubieten. Kennt jemand Alternativen? Vielen Dank schonmal! Grüße! René
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 02. Nov. 2006 13:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
|
Headcase Mitglied Dipl.-Ing. (FH) --> Maschinenbau
 
 Beiträge: 141 Registriert: 14.10.2004 WinXP Prof., SP3 AutoCAD Mechanical 2010 (2008) Inventor 2010 (2008)
|
erstellt am: 02. Nov. 2006 14:06 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
Hallo Carsten, danke für die schnelle Antwort. Für den Dateiöffnendialog habe ich einen ähnlichen Workaround gefunden, jedoch geht es mir auch um die restlichen Dialoge wie Schriftart ändern usw. Ich habe hier ein paar tolle Beispieldateien mit dem Steuerelement, die funktionieren auch, aber sobald ich etwas anpassen will, gibts Gemecker wg. fehlender Lizenz  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 03. Nov. 2006 20:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
|

| |
Nepumuk Mitglied Entwicklungsleiter
 
 Beiträge: 351 Registriert: 16.10.2004
|
erstellt am: 03. Nov. 2006 21:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Gerd_Ecke
Nochwas, die Dialoge lassen sich auch ohne Control aufrufen. Das geht über die comdlg32.dll und das ganz ohne zusätzliche Lizensierung. Kleines Beispiel: Code: Option ExplicitPrivate Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" ( _ pChoosecolor As ChooseColor) As Long Private Type ChooseColor lStructSize As Long hwndOwner As Long hInstance As Long rgbResult As Long lpCustColors As Long flags As Long lCustData As Long lpfnHook As Long lpTemplateName As String End Type Private Function ShowColor(Optional PresetColor As Long = 0) As Long Dim udtColor As ChooseColor Dim lngCustomColors(0 To 15) As Long udtColor.lStructSize = Len(udtColor) udtColor.lpCustColors = VarPtr(lngCustomColors(0)) udtColor.flags = 0 'normal ' udtColor.flags = 2 'erweitert If ChooseColor(udtColor) <> 0 Then ShowColor = udtColor.rgbResult Else ShowColor = -1 End If End Function Public Sub Test() Dim lngColor As Long lngColor = ShowColor If lngColor >= 0 Then MsgBox "RGB: " & lngColor Else MsgBox "Abgebrochen" End If End Sub
------------------ Gruß Nepumuk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |