De VB werkt als macro functie in een programma van de laser vibrometer die ik gebruik. Echter, de functie die ik gebruik is van de window api.
Ik heb een functie geschreven voor het openen en exporteren van een bepaald bestand, een pvd bestand. Die code is vrij specifiek voor het programma, maar waar ik problemen mee heb is het automatiseren zodat hij het automatisch doet voor meerdere bestanden. Ik heb namelijk 63 metingen gedaan, en ik wil het allemaal niet mer de hand doen.
Wat wil ik:
Ik wil dat er een 'file open dialog' komt waarin ik meerdere bestanden kan kiezen, en dan een string of array terug krijg met al de 'path' van de gekozen bestanden
Met die string of array kan ik dan zelf wel functies uitvoeren.
Wat heb ik:
Ik kan één bestand openen:
Code: Selecteer alles
Const c_strFileFilter As String = "Polytec File (*.pvd)|*.pvd|All Files (*.*)|*.*||"
Const c_strFileExt As String = "pvd"
Option Explicit
Sub Main
' get filename and path
Dim strFileName As String
strFileName = FileOpenDialog()
MsgBox(strFileName)
End Sub
' *******************************************************************************
' * Helper functions and subroutines
' *******************************************************************************
Const c_OFN_HIDEREADONLY As Long = 4
Private Function FileOpenDialog() As String
' -------------------------------------------------------------------------------
' Select file.
' -------------------------------------------------------------------------------
On Error GoTo MCreateError
Dim fod As Object
Set fod = CreateObject("MSComDlg.CommonDialog")
fod.Filter = c_strFileFilter
fod.Flags = c_OFN_HIDEREADONLY
fod.CancelError = True
On Error GoTo MCancelError
fod.ShowOpen
FileOpenDialog = fod.FileName
GoTo MEnd
MCancelError:
FileOpenDialog = ""
GoTo MEnd
MCreateError:
FileOpenDialog = GetFilePath(, c_strFileExt, CurDir(), "Select a file", 0)
MEnd:
End Function
Dit is wat ik tracht te doen. Maar het werkt niet: Versie 2
Code: Selecteer alles
' *******************************************************************************
' * Open multiple files, take path-string of each
' *******************************************************************************
Const c_strFileFilter As String = "Polytec File (*.pvd)|*.pvd|All Files (*.*)|*.*||"
Const c_strFileExt As String = "pvd"
Const c_OFN_HIDEREADONLY As Long = &H4
Const c_OFN_ALLOWMULTISELECT As Long = &H200
Const c_OFN_EXPLORER As Long = &H80000
Option Explicit
Sub Main
' get filename and path
Dim strFileName As String
strFileName = FileOpenDialog()
MsgBox(strFileName)
End Sub
Private Function FileOpenDialog() As String
' -------------------------------------------------------------------------------
' Select file.
' -------------------------------------------------------------------------------
On Error GoTo MCreateError
Dim i As Integer
Dim fod As Object
Set fod = CreateObject("MSComDlg.CommonDialog")
fod.Filter = c_strFileFilter
fod.Flags = c_OFN_HIDEREADONLY Or c_OFN_ALLOWMULTISELECT Or c_OFN_EXPLORER
fod.CancelError = True
FileOpenDialog = ""
On Error GoTo MCancelError
If fod.ShowOpen Then
For i = 1 To fod.FileNames.Count
FileOpenDialog = FileOpenDialog + "," + fod.FileName
Next
End If
GoTo MEnd
MCancelError:
FileOpenDialog = ""
GoTo MEnd
MCreateError:
FileOpenDialog = GetFilePath(, c_strFileExt, CurDir(), "Select a file", 0)
MEnd:
End Function
Heeft iemand enig idee wat er fout gaat?