VBA를 사용하여 파일이 있는지 확인하십시오.
Sub test()
thesentence = InputBox("Type the filename with full extension", "Raw Data File")
Range("A1").Value = thesentence
If Dir("thesentence") <> "" Then
MsgBox "File exists."
Else
MsgBox "File doesn't exist."
End If
End Sub
입력 상자에서 텍스트 값을 가져 오면 작동하지 않습니다. 그러나 If "the sentence"
에서 제거 Dir()
하고 코드의 실제 이름으로 바꾸면 작동합니다. 누군가 도울 수 있습니까?
코드가 포함되어 참고 Dir("thesentence")
해야한다 Dir(thesentence)
.
이 코드를 변경하십시오
Sub test()
thesentence = InputBox("Type the filename with full extension", "Raw Data File")
Range("A1").Value = thesentence
If Dir(thesentence) <> "" Then
MsgBox "File exists."
Else
MsgBox "File doesn't exist."
End If
End Sub
Office FileDialog
개체를 사용하여 사용자가 파일 시스템에서 파일을 선택하도록합니다. VB 프로젝트 또는 VBA 편집기에서 참조를 추가 Microsoft Office Library
하고 도움말을보십시오. 이것은 사람들이 완전한 길로 들어가는 것보다 훨씬 낫습니다.
다음은 msoFileDialogFilePicker
사용자가 여러 파일을 선택할 수 있도록 사용하는 예 입니다. 당신은 또한 사용할 수 있습니다 msoFileDialogOpen
.
'Note: this is Excel VBA code
Public Sub LogReader()
Dim Pos As Long
Dim Dialog As Office.FileDialog
Set Dialog = Application.FileDialog(msoFileDialogFilePicker)
With Dialog
.AllowMultiSelect = True
.ButtonName = "C&onvert"
.Filters.Clear
.Filters.Add "Log Files", "*.log", 1
.Title = "Convert Logs to Excel Files"
.InitialFileName = "C:\InitialPath\"
.InitialView = msoFileDialogViewList
If .Show Then
For Pos = 1 To .SelectedItems.Count
LogRead .SelectedItems.Item(Pos) ' process each file
Next
End If
End With
End Sub
많은 옵션이 있으므로 가능한 모든 것을 이해하려면 전체 도움말 파일을 확인해야합니다. Office 2007 FileDialog 개체로 시작할 수 있습니다 (물론 사용중인 버전에 대한 올바른 도움말을 찾아야합니다).
@UberNubIsTrue에서 fileExists 수정 :
Function fileExists(s_directory As String, s_fileName As String) As Boolean
Dim obj_fso As Object, obj_dir As Object, obj_file As Object
Dim ret As Boolean
Set obj_fso = CreateObject("Scripting.FileSystemObject")
Set obj_dir = obj_fso.GetFolder(s_directory)
ret = False
For Each obj_file In obj_dir.Files
If obj_fso.fileExists(s_directory & "\" & s_fileName) = True Then
ret = True
Exit For
End If
Next
Set obj_fso = Nothing
Set obj_dir = Nothing
fileExists = ret
End Function
편집 : 단축 버전
' Check if a file exists
Function fileExists(s_directory As String, s_fileName As String) As Boolean
Dim obj_fso As Object
Set obj_fso = CreateObject("Scripting.FileSystemObject")
fileExists = obj_fso.fileExists(s_directory & "\" & s_fileName)
End Function
그 음성 표시를 제거하십시오
Sub test()
Dim thesentence As String
thesentence = InputBox("Type the filename with full extension", "Raw Data File")
Range("A1").Value = thesentence
If Dir(thesentence) <> "" Then
MsgBox "File exists."
Else
MsgBox "File doesn't exist."
End If
End Sub
이것은 내가 좋아하는 것입니다.
Option Explicit
Enum IsFileOpenStatus
ExistsAndClosedOrReadOnly = 0
ExistsAndOpenSoBlocked = 1
NotExists = 2
End Enum
Function IsFileReadOnlyOpen(FileName As String) As IsFileOpenStatus
With New FileSystemObject
If Not .FileExists(FileName) Then
IsFileReadOnlyOpen = 2 ' NotExists = 2
Exit Function 'Or not - I don't know if you want to create the file or exit in that case.
End If
End With
Dim iFilenum As Long
Dim iErr As Long
On Error Resume Next
iFilenum = FreeFile()
Open FileName For Input Lock Read As #iFilenum
Close iFilenum
iErr = Err
On Error GoTo 0
Select Case iErr
Case 0: IsFileReadOnlyOpen = 0 'ExistsAndClosedOrReadOnly = 0
Case 70: IsFileReadOnlyOpen = 1 'ExistsAndOpenSoBlocked = 1
Case Else: IsFileReadOnlyOpen = 1 'Error iErr
End Select
End Function 'IsFileReadOnlyOpen
Function FileExists(fullFileName As String) As Boolean
FileExists = VBA.Len(VBA.Dir(fullFileName)) > 0
End Function
내 사이트에서 거의 잘 작동합니다. 빈 문자열 ""로 호출하면 Dir는 " connection.odc "!! 여러분이 결과를 공유 할 수 있다면 좋을 것입니다.
어쨌든, 나는 이것을 좋아합니다 :
Function FileExists(fullFileName As String) As Boolean
If fullFileName = "" Then
FileExists = False
Else
FileExists = VBA.Len(VBA.Dir(fullFileName)) > 0
End If
End Function
귀하의 코드에 어떤 문제가 있는지는 확실하지 않지만 온라인에서 찾은이 함수 (주석의 URL)를 사용하여 파일이 있는지 확인합니다.
Private Function File_Exists(ByVal sPathName As String, Optional Directory As Boolean) As Boolean
'Code from internet: http://vbadud.blogspot.com/2007/04/vba-function-to-check-file-existence.html
'Returns True if the passed sPathName exist
'Otherwise returns False
On Error Resume Next
If sPathName <> "" Then
If IsMissing(Directory) Or Directory = False Then
File_Exists = (Dir$(sPathName) <> "")
Else
File_Exists = (Dir$(sPathName, vbDirectory) <> "")
End If
End If
End Function
Function FileExists(fullFileName As String) As Boolean
FileExists = VBA.Len(VBA.Dir(fullFileName)) > 0
End Function
Very old post, but since it helped me after I made some modifications, I thought I'd share. If you're checking to see if a directory exists, you'll want to add the vbDirectory argument to the Dir function, otherwise you'll return 0
each time. (Edit: this was in response to Roy's answer, but I accidentally made it a regular answer.)
Private Function FileExists(fullFileName As String) As Boolean
FileExists = Len(Dir(fullFileName, vbDirectory)) > 0
End Function
based on other answers here I'd like to share my one-liners that should work for dirs and files:
Len(Dir(path)) > 0 or Or Len(Dir(path, vbDirectory)) > 0 'version 1 - ... <> "" should be more inefficient generally
- (just
Len(Dir(path))
did not work for directories (Excel 2010 / Win7))
- (just
CreateObject("Scripting.FileSystemObject").FileExists(path) 'version 2 - could be faster sometimes, but only works for files (tested on Excel 2010/Win7)
as PathExists(path)
function:
Public Function PathExists(path As String) As Boolean
PathExists = Len(Dir(path)) > 0 Or Len(Dir(path, vbDirectory)) > 0
End Function
참고URL : https://stackoverflow.com/questions/11573914/check-if-the-file-exists-using-vba
'IT TIP' 카테고리의 다른 글
Xcode 4“Clean”vs.“Clean Build Folder” (0) | 2020.10.13 |
---|---|
adapter-Any real example of Adapter Pattern (0) | 2020.10.13 |
정렬 된 키가있는 NSDictionary (0) | 2020.10.12 |
ArrayBlockingQueue에서 최종 멤버 필드를 로컬 최종 변수에 복사하는 이유는 무엇입니까? (0) | 2020.10.12 |
Node.js 애플리케이션에 대한 권한 부여 접근 방식 및 디자인 패턴 (0) | 2020.10.12 |