参照ファイル名をテキスト ボックスに取得する方法は? ファイルパスを取得する場合、ファイル名を分割する方法は?
私は試したapplication.GetOpenFilename("Text Files(*.txt),*.txt")
テキスト ボックスに表示する方法と、テキスト ファイルを読み取るためだけに正確なファイル名を分割する方法を教えてください。
Dir 関数は、存在するファイルである限り、ファイル名を提供します。GetOpenFilename を使用すると、あなたのファイル名になります。
Sub GetFileName()
Dim sFullName As String
Dim sFileName As String
sFullName = Application.GetOpenFilename("*.txt,*.txt")
sFileName = Dir(sFullName)
Debug.Print sFullName, sFileName
End Sub
車輪の再発明に時間を無駄にしないでください。FileSystemObjectがこれを行います。
Dim FSO As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
Sheet1.TextBox1.Text = FSO.GetFilename("C:\mydir\myfile.dat")
テキストボックスにテキストが含まれるようになりましたmyfile.dat
。
パスを取り除いたファイル名を返すVBAルーチンを次に示します。代わりにパスを返すように、またはその両方に簡単に変更できます。
'====================================================================================
' Returns the file name without a path via file open dialog box
'====================================================================================
' Prompts user to select a file. Which ever file is selected, the function returns
' the filename stripped of the path.
Function GetAFileName() As String
Dim someFileName As Variant
Dim folderName As String
Dim i As Integer
Const STRING_NOT_FOUND As Integer = 0
'select a file using a dialog and get the full name with path included
someFileName = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If someFileName <> False Then
'strip off the folder path
folderName = vbNullString
i = 1
While STRING_NOT_FOUND < i
i = InStr(1, someFileName, "\", vbTextCompare) 'returns position of the first backslash "\"
If i <> STRING_NOT_FOUND Then
folderName = folderName & Left(someFileName, i)
someFileName = Right(someFileName, Len(someFileName) - i)
Else 'no backslash was found... we are done
GetAFileName = someFileName
End If
Wend
Else
GetAFileName = vbNullString
End If
End Function
最も簡単な方法は、単純に final から読み取ること"\"
です。
tbx.text = mid$(someFileName, 1 + InStrRev(someFileName, "\"), Len(someFileName))
ボタン1クリック
OpenFileDialog1.ShowDialog()
Me.TextBox1.Text = OpenFileDialog1.FileName
End Sub
Textbox1 の変更
Dim File As System.IO.FileInfo
File = My.Computer.FileSystem.GetFileInfo(TextBox1.Text)
Dim Path As String = File.DirectoryName
TextBox2.Text = Path
Dim fileName As String = File.Name
TextBox3.Text = fileName
End Sub