5

私はmsaccessを使用していますが、ファイルを参照し、ファイルの名前とそのパスを取得するためのボタンを追加したいと思います。次に、ファイルパスとファイル名を2つの別々の変数に保存します。私がこれまでに持っているコードは以下のとおりです。現時点では、ファイルを参照してファイルの名前のみを取得できます。誰かが私のコードに追加してファイルパスを取得し、ファイル名とファイルパスの両方を別々の変数に格納するのを手伝ってもらえますか?

Private Sub Command7_Click()

Dim f As Object

Set f = Application.FileDialog(3)

f.AllowMultiSelect = True

If f.Show Then
    For i = 1 To f.SelectedItems.Count
        MsgBox Filename(f.SelectedItems(i))
    Next
End If

End Sub


Public Function Filename(ByVal strPath As String) As String

If Right$(strPath, 1) <> "\" And Len(strPath) > 0 Then
    Filename = Filename(Left$(strPath, Len(strPath) - 1)) + Right$(strPath, 1)

End If

End Function
4

3 に答える 3

9

関数にフルパスを渡しているので、そこからパスを取得できます。例えば:

Public Function Filename(ByVal strPath As String, sPath) As String
    sPath = Left(strPath, InStrRev(strPath, "\"))
    Filename = Mid(strPath, InStrRev(strPath, "\") + 1)
End Function

から呼び出されて、次のように言います。

    sFile = Filename(f.SelectedItems(i), sPath)
    MsgBox sPath & "---" & sFile

略さずに

Private Sub Command7_Click()

Dim f As Object

Set f = Application.FileDialog(3)

f.AllowMultiSelect = True

If f.Show Then
    For i = 1 To f.SelectedItems.Count
        sFile = Filename(f.SelectedItems(i), sPath)
        MsgBox sPath & "---" & sFile
    Next
End If

End Sub


Public Function Filename(ByVal strPath As String, sPath) As String
    sPath = Left(strPath, InStrRev(strPath, "\"))
    Filename = Mid(strPath, InStrRev(strPath, "\") + 1)
End Function
于 2013-02-16T21:36:04.240 に答える
5

クリック イベント プロシージャから必要なものについては、別のカスタム VBA 関数を呼び出す必要はありません。

Private Sub Command7_Click()
    Dim f As Object
    Dim strFile As String
    Dim strFolder As String
    Dim varItem As Variant

    Set f = Application.FileDialog(3)
    f.AllowMultiSelect = True
    If f.Show Then
        For Each varItem In f.SelectedItems
            strFile = Dir(varItem)
            strFolder = Left(varItem, Len(varItem) - Len(strFile))
            MsgBox "Folder: " & strFolder & vbCrLf & _
                "File: " & strFile
        Next
    End If
    Set f = Nothing
End Sub
于 2013-02-17T16:30:22.700 に答える