Антон91 Пользователь Сообщений: 5 |
#1 27.01.2020 01:11:11 Коллеги, прошу помощи, не могу разобраться в чем проблема, гугл конкретики не внес.
Но данная строка соответственно не работает. Подскажите пожалуйста как правильно это записать. |
||
vikttur Пользователь Сообщений: 47199 |
#2 27.01.2020 01:26:27
|
||
Антон91 Пользователь Сообщений: 5 |
#3 27.01.2020 01:38:21 Благодарю Вас за ответ, если вас не затруднит, просветите пещерного человека как это работает…
|
||
vikttur Пользователь Сообщений: 47199 |
В переменную записываем полный путь к проверяемой папке P.S. |
Ігор Гончаренко Пользователь Сообщений: 13746 |
#5 27.01.2020 01:43:50 название темы:
проверить наличие папки, если нет — создать ее, если есть — удалить одноименный xlsx-файл
Изменено: Ігор Гончаренко — 27.01.2020 01:46:32 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Антон91 Пользователь Сообщений: 5 |
#6 27.01.2020 12:00:57
Я так понимаю что данная строчка удаляет все файлы с данным расширением внутри папки… Ігор Гончаренко, благодарю вас! |
||
Андрей_26 Пользователь Сообщений: 647 |
#7 27.01.2020 12:19:01
Неправильно понимаете. Данная строка проверяет наличие папки и если ее нет — то (MkDir) создает такую папку. |
||
GoodPaul Пользователь Сообщений: 6 |
А как написать конструкцию в цикле такого вида: |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#9 01.02.2020 13:20:47 Доброе время суток
какого макроса?
а где собственно цикл? |
||||
про оператор If слышали? используйте, он справится Изменено: Ігор Гончаренко — 01.02.2020 13:26:59 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
GoodPaul Пользователь Сообщений: 6 |
Прошу прощения, имею скромное представление о VBA Sub test() Изменено: GoodPaul — 01.02.2020 14:22:52 |
Hugo Пользователь Сообщений: 23251 |
Что-то я не улавливаю логику… Если папка существует то проходим мимо, а если папки нет — то открываем из неё файл? Изменено: Hugo — 01.02.2020 14:12:14 |
GoodPaul Пользователь Сообщений: 6 |
если вот эта конструкция значит, что папка НЕ существует If Dir(f, vbDirectory) = «», то все логично. Или неправильно понимаю ее и она означает, что папка существует? |
vikttur Пользователь Сообщений: 47199 |
В комментарии Вы написали «существует», это и ввело в заблуждение Вы уже написали цикл. И условие вписано… В чем вопрос? |
GoodPaul Пользователь Сообщений: 6 |
извиняюсь, не доглядел по поводу НЕ существует) Как прописать на VBA вот эти две строчки: |
Hugo Пользователь Сообщений: 23251 |
#16 01.02.2020 16:11:19
— вот конкретно такого нет. |
||
vikttur Пользователь Сообщений: 47199 |
#17 01.02.2020 16:32:42
Для этого ничего не нужно писать.
И первый, и второй цикл 100 раз переходит к следующему шагу |
||||
Как проверить, существует ли папка, и не создать ли ее?
Вы когда-нибудь пытались проверить, существует ли папка на листе Excel? В этой статье я расскажу о том, как проверить, существует ли папка по указанному пути, в противном случае папка будет создана автоматически по указанному пути.
Проверьте, существует ли папка в определенном пути к файлу с кодом VBA
Создайте папку, если она не существует в определенном пути к файлу с кодом VBA
Проверьте, существует ли папка в определенном пути к файлу с кодом VBA
Следующий код VBA может помочь вам проверить, существует ли папка по определенному пути к файлу, сделайте следующее:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: проверьте, существует ли папка в определенном пути к файлу:
Sub Test_Folder_Exist_With_Dir()
'Updateby Extendoffice
Dim sFolderPath As String
sFolderPath = "C:UsersDT168DesktopTest folder"
If Right(sFolderPath, 1) <> "" Then
sFolderPath = sFolderPath & ""
End If
If Dir(sFolderPath, vbDirectory) <> vbNullString Then
MsgBox "Folder exist", vbInformation, "Kutools for Excel"
Else
MsgBox "Folder doesn't exist", vbInformation, "Kutools for Excel"
End If
End Sub
Примечание: В приведенном выше коде вы должны изменить путь и имя папки C: Users DT168 Desktop Test папка к вашему необходимому.
3, Затем нажмите F5 ключ для запуска этого кода, вы получите следующие результаты:
Создайте папку, если она не существует в определенном пути к файлу с кодом VBA
Проверьте, существует ли папка в пути к файлу, если нет, чтобы создать ее по этому конкретному пути к файлу, следующий код VBA может помочь вам завершить эту работу.
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.
Код VBA: создайте папку, если она не существует в пути к файлу:
Sub MakeMyFolder()
'Updateby Extendoffice
Dim fdObj As Object
Application.ScreenUpdating = False
Set fdObj = CreateObject("Scripting.FileSystemObject")
If fdObj.FolderExists("C:UsersDT168DesktopTest folder") Then
MsgBox "Found it.", vbInformation, "Kutools for Excel"
Else
fdObj.CreateFolder ("C:UsersDT168DesktopTest folder")
MsgBox "It has been created.", vbInformation, "Kutools for Excel"
End If
Application.ScreenUpdating = True
End Sub
Внимание: В приведенном выше коде вы должны изменить путь и имя папки C: Users DT168 Desktop Test папка к вашему необходимому.
3. После вставки кода нажмите F5 ключ для его запуска:
(1.) Если папка существует, появится диалоговое окно, как показано на следующем снимке экрана:
(2.) Если папка не существует, она будет создана сразу по определенному пути, и появится окно подсказки, напоминающее вам, что папка была создана, см. Снимок экрана:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Return to VBA Code Examples
VBA allows you to check if a file or folder exists by using the Dir function.
Using the Dir Command to Check If a File Exists
As we mentioned in the introduction, the Dir function allows us to check if a selected file exists on the computer. Here is the code:
Sub CheckFileExists ()
Dim strFileName As String
Dim strFileExists As String
strFileName = "C:UsersNikolaDesktopVBA articlesTest File Exists.xlsx"
strFileExists = Dir(strFileName)
If strFileExists = "" Then
MsgBox "The selected file doesn't exist"
Else
MsgBox "The selected file exists"
End If
End Sub
We first assigned the file path to the variable strFileName. Then we use the Dir function to get the file name into the variable strFileExists. If the file exists in the directory, its name will be assigned to the string variable strFileExists. If it does not exist then strFileExists will remain blank. Finally, the message box appears informing us if the file exists or not.
Using the Dir Command to Check If a Folder Exists
Similarly to checking if a file exists, you can check if a folder exists. You just need to add one argument to the Dir command. Let’s look at the code:
Sub CheckFolderExists ()
Dim strFolderName As String
Dim strFolderExists As String
strFolderName = "C:UsersNikolaDesktopVBA articlesTest Folder"
strFolderExists = Dir(strFolderName, vbDirectory)
If strFolderExists = "" Then
MsgBox "The selected folder doesn't exist"
Else
MsgBox "The selected folder exists"
End If
End Sub
We first assigned the folder path to the variable strFolderName. Then we use the Dir function to get the file name into the variable strFileExists. In order to check a folder, we need to add the second argument to the function – vbDirecotry. If the folder exists in the directory, its name will be assigned to the variable strFolderExists. If not strFolderExists will remain blank.
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More!
Ok so I have the following vba code which I am using to check if a directory exists and if not create the folder structure like so:
If Dir("S:Tasks" & Range("C" & ActiveCell.Row).Value & "" & Range("M" & ActiveCell.Row).Value & "" & Range("Z" & ActiveCell.Row).Value, vbDirectory) = "" Then
MkDir Path:="S:Tasks" & Range("C" & ActiveCell.Row).Value & "" & Range("M" & ActiveCell.Row).Value & "" & Range("Z" & ActiveCell.Row).Value
MsgBox "Done"
Else
MsgBox "found it"
End If
So my destination path is my S:
drive
then depending on the value in cell c I want it to check if that folder exists, so if cell c had the word ‘tender’ in it then the directory would look like:
'S:Tender'
If this does not exist, then create, else if this exists then move on and create another folder within this folder with the value in cell M like so:
Cell M = Telecoms
'S:TenderTelecoms'
Then finally, check if a folder with the value in cell Z exists within ‘S:TenderTelecoms’ and if not create it.
Cell Z = 12345
so we would end up with:
'S:TenderTelecoms12345'
Fore some reason I keep getting the error message path not found. Please can someone show me where I am going wrong? Thanks in advance
I have a spreadsheet that upon clicking a button will duplicate itself by copying/pasting everything to a new workbook and save the file with a name that is dependent upon some variable values (taken from cells on the spreadsheet).
My current goal is to get it to save the sheet in different folders depending on the name of client name (cell value held in variable), while this works on the first run, I get an error after.
The code checks if the directory exists and creates it if not.
This works, but after it is created, running it a second time throws the error:
Runtime Error 75 — path/file access error.
My code:
Sub Pastefile()
Dim client As String
Dim site As String
Dim screeningdate As Date
screeningdate = Range("b7").Value
Dim screeningdate_text As String
screeningdate_text = Format$(screeningdate, "yyyy-mm-dd")
client = Range("B3").Value
site = Range("B23").Value
Dim SrceFile
Dim DestFile
If Dir("C:2013 Recieved Schedules" & "" & client) = Empty Then
MkDir "C:2013 Recieved Schedules" & "" & client
End If
SrceFile = "C:2013 Recieved Schedulesschedule template.xlsx"
DestFile = "C:2013 Recieved Schedules" & client & "" & client & " " & site & " " & screeningdate_text & ".xlsx"
FileCopy SrceFile, DestFile
Range("A1:I37").Select
Selection.Copy
Workbooks.Open Filename:= _
"C:2013 Recieved Schedules" & client & "" & client & " " & site & " " & screeningdate_text & ".xlsx", UpdateLinks:= _
0
Range("A1:I37").PasteSpecial Paste:=xlPasteValues
Range("C6").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
You’ll have to excuse my lack of knowledge in this area, I am still learning.
I have a very strong feeling it has something to do with the directory checking logic, as when the error is thrown the MkDir
line is highlighted.