Elettracompany.com

Компьютерный справочник
12 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba excel проверка наличия файла

Конференция VBStreets

Весь вкус программирования!

  • Список форумовVisual BasicVisual Basic 1–6
  • Изменить размер шрифта
  • FAQ
  • Вход

Проверка наличия файла

Проверка наличия файла

goro » 26.04.2003 (Сб) 15:12

Damage » 26.04.2003 (Сб) 15:14

вот код функции
Код: Выделить всё Private Declare Function PathFileExists Lib «shlwapi.dll» Alias «PathFileExistsA» (ByVal pszPath As String) As Long

возвращает 1 если существует

RayShade » 28.04.2003 (Пн) 10:33

А поискать лень что ли было? Этот вопрос уже поднимался сто раз.

И делается все очень просто и без API:

Код: Выделить всё If Len(Dir(Fname))>0 Then MsgBox «Файл » & Fname & » существует.»

goro » 28.04.2003 (Пн) 15:41

Emzari » 30.04.2003 (Ср) 15:38

привет всем

сначала проекту подключаеш Microsoft scripting runtime через диалоговое окно Refferenses

Dim FSO As New FileSystemObject

IF FSO.FileExists(Text1.Text)=True Then
‘фаил сушествует
Else
‘фаил не сушествует
End IF

Не проверял но должен работать

GoGosha » 30.04.2003 (Ср) 16:16

Emzari писал(а): привет всем

сначала проекту подключаеш Microsoft scripting runtime через диалоговое окно Refferenses

Dim FSO As New FileSystemObject

IF FSO.FileExists(Text1.Text)=True Then
‘фаил сушествует
Else
‘фаил не сушествует
End IF

Не проверял но должен работать

Этот кодв отличие от Dir провеяет наличие ФАЙЛА, а Dir может реагировать и на папки

goro » 30.04.2003 (Ср) 17:06

Emzari » 01.05.2003 (Чт) 14:44

проверить сушествует или нет папка можно точно также

IF FSO.FolderExists(Text1.Text)=True Then
‘Папка сушествует
Else
‘Папка не сушествует
End IF

Firestorm » 01.05.2003 (Чт) 20:21

Emzari писал(а): проверить сушествует или нет папка можно точно также

IF FSO.FolderExists(Text1.Text)=True Then
‘Папка сушествует
Else
‘Папка не сушествует
End IF

можно и файл и папку проверить (аналогично примеру RayShade’а) как if dir$(путь к папке или файлу) <> «» then msgbox «существует»

v-adix » 06.05.2003 (Вт) 8:51

ASD » 06.05.2003 (Вт) 10:41

Согласен. Проще некуда.

-=Jaga=- » 29.10.2007 (Пн) 9:13

HandKot » 29.10.2007 (Пн) 9:35

alibek » 29.10.2007 (Пн) 9:38

-=Jaga=- » 29.10.2007 (Пн) 10:11

Немного не о том просил. Мне нужно проверить есть ли файлы и папки на диске не зная конкретного имени папок и файлов.
Не просто пуст диск или не пуст.

Таким образом не работает:
Код: Выделить всё fso.FileExists «A:*.*»
fso.FolderExists «A:*»

Как возможно проверить?

alibek » 29.10.2007 (Пн) 10:24

-=Jaga=- » 29.10.2007 (Пн) 13:28

Vba excel проверка наличия файла

Книга: Excel. Трюки и эффекты

Проверка наличия файла по указанному пути

Разделы на этой странице:

Проверка наличия файла по указанному пути

При необходимости можно быстро проверить, существует ли файл по указанному адресу. Чаще всего для этого используется макрос, приведенный в листинге 3.46 (путь и название файла условные, взяты только для примера).

Листинг 3.46. Проверка наличия файла (вариант 1)

Dim strFileName As String

Dim strFileTitle As String

‘ Имя и путь искомого файла

‘ Проверка наличия файла (функция Dir возвращает пустую _

строку, если по указанному пути файл обнаружить не удалось)

If Dir(strFileName) <> «» Then

MsgBox «Файл » & strFileTitle & « найден»

MsgBox «Файл » & strFileTitle & « не найден»

Результатом выполнения данного макроса является выводимое на экран окно, в котором сообщается, существует данный файл по указанному адресу или нет (рис. 3.14).

Рис. 3.14. Результат поиска файла

Для такой же проверки можно применить макрос, код которого приведен в листинге 3.47 (путь и название файла условны).

Листинг 3.47. Проверка наличия файла (вариант 2)

Dim strFileName As String

‘ Имя искомого файла

‘ Проверка наличия файла (функция Dir возвращает пустую _

строку, если по указанному пути файл обнаружить не удалось)

If Dir(strFileName) <> «» Then

MsgBox «Файл » & strFileName & « найден»

MsgBox «Файл » & strFileName & « не найден»

После того как макрос будет применен, на экране также появится окно, аналогичное изображенному на рис. 3.14, с информационным сообщением о результатах проверки.

В приведенных выше макросах мы напрямую указывали имя искомого файла. Однако такой подход не всегда приемлем, поэтому иногда целесообразнее использовать макрос, код которого приведен в листинге 3.48.

Листинг 3.48. Поиск нужного файла

Dim strFileName As String

Dim strFolder As String

Dim strFullPath As String

‘ Задание имени папки для поиска

strFolder = InputBox(«Определите папку:»)

If strFolder = «» Then Exit Sub

Читать еще:  Редактор макросов excel

‘ Задание имена файла для поиска

strFileName = Application.InputBox(«Введите имя файла:»)

If strFileName = «» Then Exit Sub

‘ При необходимости дополняем имя папки «»

If Right(strFolder, 1) <> «» Then strFolder = strFolder & «»

‘ Полный путь файла

strFullPath = strFolder & strFileName

‘ Вывод окна с отчетом о поиске средствами VBA

MsgBox «Использование команды VBA. » & vbCrLf & vbCrLf & _

dhSearchVBA(strFullPath), vbInformation, strFullPath

‘ Вывод окна с отчетом о поиске средствами объекта _

MsgBox «Использование объекта FileSystemObject. » & vbCrLf

vbCrLf & dhSearchFileSystemObject(strFullPath), vbInformation, _

Function dhSearchVBA(varFullPath As Variant) As Boolean

‘ Использование команды VBA

Function dhSearchFileSystemObject(varFullPath As Variant) As

Dim objFSObject As Object

‘ Использование объекта FileSystemObject

Set objFSObject = CreateObject(«Scripting.FileSystemObject»)

В результате запуска макроса открывается окно, в котором указывается папка для поиска, а затем (после нажатия кнопки ОК) – имя искомого файла. В данном примере для поиска файла используются два разных метода. После ввода имени папки и файла они будут применены поочередно, и в каждом случае будет показан отдельный результат: если файл обнаружен по указанному пути, то отобразится значение True, в противном случае – False.

В результате написания приведенного выше кода, помимо макроса FileSearch, будут созданы три пользовательские функции (их можно найти в категории Определенные пользователем). С помощью этих функций можно отдельно использовать каждый из методов, которые автоматически применяются при выполнении макроса. В данном случае в качестве аргументов функций указываются ячейки, содержащие путь к искомому файлу. Если файл обнаружен по указанному пути, то в активной ячейке отобразится значение ИСТИНА, в противном случае – ЛОЖЬ.

VBA check if file exists

I have this code. It is supposed to check if a file exists and open it if it does. It does work if the file exists, and if it doesn’t, however, whenever I leave the textbox blank and click the submit button, it fails. What I want, if the textbox is blank is to display the error message just like if the file didn’t exist.

You haven’t provided the problem part of the code (ie the Form that contains the Submit button). Can you share your file? – brettdj 03 май. 13 2013-05-03 03:52:10

the code above is the content of my submit button – Josephine Bautista 03 май. 13 2013-05-03 03:58:29

6 ответов

something like this

best to use a workbook variable to provide further control (if needed) of the opened workbook

updated to test that file name was an actual workbook — which also makes the initial check redundant, other than to message the user than the Textbox is blank

Создан 03 май. 13 2013-05-03 05:01:14 brettdj

This method is not 100% reliable since it does not differentiate file name from a folder name. – Patrick Honorez 19 авг. 15 2015-08-19 11:15:43

@iDevlop I’ve gone a step to test the filename is valid. – brettdj 26 фев. 16 2016-02-26 11:26:44

Maybe it caused by Filename variable

Создан 03 май. 13 2013-05-03 03:52:26 matzone

This is not a bad answer. Using «File» or any other keyword as a variablename has caused trouble for a lot of people. Even though this is not a solution to the problem it is still a good point. – AnyOneElse 17 дек. 14 2014-12-17 16:12:22

You should set a condition loop to check the TextBox1 value.

Hope it help you.

Создан 03 май. 13 2013-05-03 04:05:37 Leng Keong

Use this function to check for file existence:

Since you have ‘On Error Resume Next’, after your main line I would introduce ‘On Error GoTo 0’ just to prevent the error from hanging. Anyways, I like this approach as one can check existence of a file without accidentally checking the existence of a folder. – ZygD 18 ноя. 15 2015-11-18 05:37:55

Does this handle the case where fName is neither a file nor a directory? Seems like a combination of @brettdj and iDevlop’s answers would be best: _IsFile = ((GetAttr(fName) And vbDirectory) <> vbDirectory) And Len(Dir(DirFile)) <> 0_ – riderBill 10 дек. 15 2015-12-10 03:21:43

Investigating further, it appears that _GetAttr(fName)_ will raise exception 53 — FileNotFoundException, invoking Resume Next, and IsFile will keep its prior value (False). So your function _does_ handle all cases. I probably won’t test it, but it may also run faster than brettdj’s since it doesn’t invoke Dir, which looks suspiciously like the system command (?). From my C/C++ experience, invoking a system command takes around 1 second, and maybe another second to resume the executable. Excellent! I up-voted your answer previously. I don’t see why this is not the top vote getter. – riderBill 10 дек. 15 2015-12-10 05:13:34

Читать еще:  Не отображаются листы в excel

@ZygD I’ll admit I’m not completely sure I understand VBA’s _On Error_ style error handling, simple as it appears to be. I think upon exiting the function, the err object is destroyed, cleared, or whatever the correct VBA terminology is. In addition, I’m thinking any _on error_ statements in the function «go out of scope» upon exit. If that’s true, then an _On Error GoTo -1_ statement just before _End Function_ would have no effect. I have been worrying about these very issues, so please correct me if I’m wrong. – riderBill 10 дек. 15 2015-12-10 05:35:57

@riderBill I could have put ‘on error goto 0’ at the end to cancel error handling, but that has no effect since current routine error handling does not affect callers (but could affect called subs — none here) – Patrick Honorez 10 дек. 15 2015-12-10 09:35:44

@riderBill — I use this version (with ‘On Error GoTo 0’ at the end) myself in my projects. I have tested both approaches (with the line and without). From my testing the error object is not destroyed upon the end of this function if you don’t instruct it to be destroyed, because this function is supposed to be called from another sub/function. So when this function ends, the code continues in the caller function, and you still have the error object there. To clear it one could also use something like ‘If Err.Number = . Then Err.Clear’ if the specific error number is known. – ZygD 10 дек. 15 2015-12-10 10:35:01

@iDevlop — I have tested the case once again. if an error is received in this function, when we are back to the caller function, we still have that error. (Error 53: File not found) – ZygD 10 дек. 15 2015-12-10 10:43:02

VBA проверьте, существует ли файл

У меня есть этот код. Предполагается, что он проверяет, существует ли файл, и открывает его, если он существует. Он действительно работает, если файл существует, а если нет, то всякий раз, когда я оставляю textbox пустым и нажимаю кнопку Отправить, он терпит неудачу. То, что я хочу, если textbox пустое, это отобразить сообщение об ошибке так же, как если бы файл не существовал.

Время выполнения-ошибка «1004»

7 Ответов

что-то вроде этого

лучше всего использовать переменную workbook для обеспечения дальнейшего управления (при необходимости) открытой книгой

обновлено, чтобы проверить, что имя файла было фактической рабочей книгой — что также делает начальную проверку избыточной, кроме сообщения пользователю, что Textbox является пустым

Я использую эту функцию для проверки наличия файла:

Для проверки существования можно также использовать (работает как для файлов, так и для папок) :

Результат- True , если файл или каталог существуют.

Возможно, это вызвано переменной Filename

Так и должно быть

Я выброшу это там,а потом пригнусь. Обычная причина, чтобы проверить, существует ли файл, — это избежать ошибки при попытке его открыть. Как насчет использования обработчика ошибок, чтобы справиться с этим:

Вот мой обновленный код. Проверяет наличие версии перед сохранением и сохраняет как следующий доступный номер версии.

Вы должны установить цикл условий для проверки значения TextBox1.

Надеюсь, это поможет вам.

Похожие вопросы:

я хочу проверить, существует ли файл с расширением jpg, в другом случае проверьте, существует ли gif, в другом загрузите изображение по умолчанию. Все с mod_rewrite, я прочитал много примеров, и все.

Я пытаюсь проверить, существует ли файл с VBA на Mac Office 2011. Мой макрос работает с Office 2004, но не работает с 2011. Я использую функцию Dir. Если функция ничего не возвращает, это означает.

Используя VBA, как я могу: проверьте, существует ли файл, и если да, удалить его?

когда я хочу проверить, существует ли файл и если существует добавить суффикс я использую следующий код, который работает нормально $increment = »; //start with no suffix.

Читать еще:  Как вернуть буквы в excel

Я пытаюсь проверить, существует ли файл в папке с помощью задачи SSIS Script. Если я хочу отправить email, указав, присутствует ли файл, то ForEachLoop не может быть использован. Кроме того, мое имя.

У меня есть база данных, разделенная на FrontEnd и BackEnd. У меня он работает: i) в моем кабинете ii) обновление / тестирование на моем персональном компьютере. Мой BackEnd файл работает в другом.

Я пытаюсь определить, существует ли папка Sharepoint в Excel VBA, используя путь URL, и если нет, то создать папку. Я могу сделать это легко, если сопоставлю сетевой диск: myWorkbookBasePath =.

Мне нужно VBA, чтобы проверить, если папка с именем Secret_information уже существует. Если папка уже существует, то мне нужно сохранить PDF и Excel из листа (1) в эту папку со специальным именем.

Я работаю над программой VBA, где мне нужно сделать следующее: При нажатии на кнопку (макрос запускается): Проверьте, существует ли в папке рабочая книга MS EXCEL. Если нет, то дайте сообщение о.

Пожалуйста, потерпите меня, так как я новичок в VBA. Я пытаюсь открыть файл excel через веб-сайт, используя VBA. Адрес (путь) файла меняется от месяца к месяцу. Например: В июле имя файла будет.

Функции, используемые в процедурах VBA

Настоящая заметка продолжает знакомство с VBA. В ней представлены некоторые «практичные» функции, которые могут использоваться в ваших приложениях либо помогут в создании аналогичных функций. Эти функции наиболее полезны, когда вызываются из другой процедуры VBA. Следовательно, они объявляются с ключевым словом Private и не отображаются в диалоговом окне Excel Мастер функций (подробнее см. Работа с процедурами VBA).[1]

Функция FileExists

Данная функция получает один аргумент (путь и имя файла) и возвращает ИСТИНА, если файл существует.

Скачать заметку в формате Word или pdf, примеры в архиве (политика безопасности провайдера не позволяет загружать файлы Excel с поддержкой макросов)

Функция FileNameOnly

Функция получает один аргумент (путь и имя файла; не забывайте брать строку в кавычки) и возвращает только имя файла.

Функция использует функцию VBA Split, которая принимает строку (вместе с символами-разделителями) и возвращает массив типа variant, содержащий элементы, которые находятся между символами-разделителями. В рассматриваемом случае переменной temp присваивается массив, содержащий текстовые строки между Application.PathSeparater (обычно в качестве разделителя используется обратная косая черта).

Если в качестве аргумента указать » с:excelfiles2010backupbudget.xlsx » , функция возвратит строку budget.xlsx.

Функция FileNameOnly обрабатывает любой путь и имя файла (даже если файла не существует). Если файл существует, лучше воспользоваться следующей более простой функцией.

Функция PathExists

Функция получает один аргумент (путь) и возвращает ИСТИНА, если путь существует.

Функция RangeNameExists

Функция получает один аргумент (название диапазона) и возвращает ИСТИНА, если в активной рабочей книге существует указанное название диапазона.

Функция SheetExists

Функция получает один аргумент (название рабочего листа) и возвращает ИСТИНА, если данный рабочий лист существует в активной рабочей книге.

Функция WorkbooklsOpen

Функция получает один аргумент (название рабочей книги) и возвращает ИСТИНА, если данная рабочая книга открыта.

Проверка принадлежности к коллекции

Следующая функция представляет собой образец «групповой» функции, с помощью которой можно определить, является ли объект членом коллекции.

Эта функция имеет два аргумента: коллекцию (объект) и элемент (строка), который может быть либо не быть членом коллекции. Функция будет создавать объектную переменную, представляющую элемент коллекции. Если попытка увенчается успехом, функция возвратит True; иначе — False. Функцию IsInCollection можно использовать вместо трех других функций, приведенных выше. Чтобы определить, содержится ли в активной рабочей книге диапазон Data, вызовите функцию IsInCollection с помощью следующего оператора:

MsgBox IsInCollection(ActiveWorkbook.Names, » Data » )

Для того чтобы определить, открыта ли рабочая книга с названием Budget, используйте следующий оператор:

MsgBox IsInCollection(Workbooks, » budget.xlsx » )

Чтобы узнать, содержит ли активная рабочая книга рабочий лист Лист1, используйте следующий оператор:

MsgBox IsInCollection(ActiveWorkbook.Worksheets, » Лист1 » )

Получение значения из закрытой рабочей книги

В VBA не существует метода получения значения из закрытого файла рабочей книги. Однако вы можете воспользоваться возможностью управления ссылками на файлы, которая предоставляется в Excel. В настоящем разделе описана функция VBA GetValue, которая получает значение из закрытой книги. Эта задача выполняется в результате вызова макроса XLM, который появился в «доисторических» версиях Excel (до версии 5), но поддерживается до сих пор (подробнее о макрофункциях xlm см. Функция Получить.Ячейку).

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector
×
×