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
이 경우 입력 상자에서 텍스트 값을 픽업해도 작동하지 않습니다.단, 삭제한 경우"the sentence"
if부터]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
사무실 사용FileDialog
object를 지정하면 사용자가 파일 시스템에서 파일을 선택할 수 있습니다.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 개체로 시작할 수 있습니다(물론 사용 중인 버전에 대한 올바른 도움말을 찾아야 합니다).
@UberNubIs에서 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
Function FileExists(fullFileName As String) As Boolean
FileExists = VBA.Len(VBA.Dir(fullFileName)) > 0
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
아주 오래된 게시물이지만 수정 후 도움이 되었기 때문에 공유하려고 합니다.디렉토리가 존재하는지 여부를 확인하는 경우 vbDirectory 인수를 Dir 함수에 추가하고 그렇지 않으면 반환됩니다.0
매번. (편집: 로이의 답변에 대한 답변이었는데 실수로 일반 답변으로 만들었습니다.)
Private Function FileExists(fullFileName As String) As Boolean
FileExists = Len(Dir(fullFileName, vbDirectory)) > 0
End Function
여기 있는 다른 답변에 기초하여 dir 및 파일에 사용할 수 있는 한 줄에 대해 공유하겠습니다.
Len(Dir(path)) > 0 or Or Len(Dir(path, vbDirectory)) > 0 'version 1 - ... <> "" should be more inefficient generally
- (그냥)
Len(Dir(path))
디렉토리에서는 동작하지 않는다(Excel 2010/Win7)
- (그냥)
CreateObject("Scripting.FileSystemObject").FileExists(path) 'version 2 - could be faster sometimes, but only works for files (tested on Excel 2010/Win7)
~하듯이PathExists(path)
기능:
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
'bestsource' 카테고리의 다른 글
ListView에서 부모로 스크롤 이벤트 버블링 (0) | 2023.04.19 |
---|---|
Swift를 사용하여 루트 보기로 팝업하려면 어떻게 해야 합니까?UI? (0) | 2023.04.19 |
bash completion을 에일리어스로 작업하려면 어떻게 해야 하나요? (0) | 2023.04.14 |
여러 줄 명령어 내의 Bash 스크립트에 대한 코멘트 (0) | 2023.04.14 |
코드 뒤에 있는 별 모양의 그리드 (0) | 2023.04.14 |