powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как проверить директорию на наличие...
14 сообщений из 14, страница 1 из 1
Как проверить директорию на наличие...
    #34332668
pseregap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как проверить директорию C:\copy на наличие при помощи макроса?
А при её отсутствии создать её с запросом (на это действие), опять же при помощи макроса???

Как проверить уникальность создаваемого файла (в эту же директорию C:\copy) и не допустить замены оригинального 002.xls, пускай даже с запросом?
Мне нужно чтобы сами макросы работали (все это проверяли), конечно, если это возможно.

Подскажите, пожалуйста, люди добрые :):):)HELPHELPHELP me
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34332676
pseregap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да!!! Вот экселька! Попробуйте на ней!!!
СПАСИБО!!!
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34332917
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34333746
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На тот случай, если придется создавать более одного уровня папок...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Sub test()
    Dim strPath As String, arrDirectories As Variant
    Dim i As Long, x As String, msgResponse As VbMsgBoxResult
    strPath = "c:\temp\folder1\folder2\test"
    On Error Resume Next
    x = GetAttr(strPath) And  0 
    If Err.Number <>  0  Then
        msgResponse = MsgBox( _
            "The folder doesn' exist. Would you like to create it?", _
                vbExclamation + vbOKCancel)
        If msgResponse = vbCancel Then Exit Sub
        On Error GoTo  0 
        arrDirectories = Split(strPath, "\"): strPath = ""
        For i = LBound(arrDirectories) To UBound(arrDirectories)
            strPath = strPath & arrDirectories(i) & "\"
            On Error Resume Next
            x = GetAttr(strPath) And  0 
            If Err.Number <>  0  Then MkDir strPath
            On Error GoTo  0 
        Next i
    End If
End Sub

#If Not VBA6 Then
Function Split(strTxt As String, strDelimiter As String) As Variant
  Split = Evaluate("{""" & Application.Substitute(strTxt, strDelimiter, """,""") & """}")
End Function
#End If

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34333787
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наличие файла проверяем так:

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test2()
    Dim strPath As String, strFileName As String, strFullFileName As String
    strPath = "c:\temp\folder1\folder2\test\"
    strFileName = "002.xls"
    strFullFileName = strPath & strFileName
    If Dir(strFullFileName) = "" Then MsgBox "File already exists!" Else MsgBox "File does not exist!"
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34333797
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)
Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test2()
    Dim strPath As String, strFileName As String, strFullFileName As String
    strPath = "c:\temp\folder1\folder2\test\"
    strFileName = "002.xls"
    strFullFileName = strPath & strFileName
    If Dir(strFullFileName) = "" Then MsgBox "File already exists!" Else MsgBox "File does not exist!"
End Sub


результаты проверки надо поменять местами:

Код: plaintext
1.
2.
3.
4.
5.
6.
Sub test2()
    Dim strPath As String, strFileName As String, strFullFileName As String
    strPath = "c:\temp\folder1\folder2\test\"
    strFileName = "002.xls"
    strFullFileName = strPath & strFileName
    If Dir(strFullFileName) = "" Then MsgBox MsgBox "File does not exist!" Else "File already exists!"
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34334136
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub test()
    prFolder "C:\temp\temp\temp\"
End Sub

Function prFolder(myStr As String)
    'проверка папки
    Dim tmp() As String, i As Long, mStr As String
    If InStr(myStr, ".") Then Exit Function
    If Right(myStr,  1 ) = "\" Then myStr = Left(myStr, Len(myStr) -  1 )
    tmp = Split(myStr, "\")
    mStr = tmp( 0 )
    For i =  1  To UBound(tmp)
        mStr = mStr & "\" & tmp(i)
        If Dir(myStr, vbDirectory) = "" Then MkDir myStr
    Next
End Function
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34335369
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я пользую такую функцию, позволяет работать и с директориями типа "\\John1\exchange"

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Option Explicit
Dim FS As Variant

Sub Start()
Dim Wstr1 As String
  Set FS = CreateObject("Scripting.FileSystemObject")
  Wstr1 = "\\John1\exchange\123\456"
  If Not ForceDirectories(Wstr1) Then _
    MsgBox "Невозможно создать директорию " & Wstr1: End
End Sub 'Start

Function ForceDirectories(NewDir As String) As Boolean
Dim Dir1 As String, Flag As Boolean, Flag1 As Boolean
  ForceDirectories = True
  If Len(NewDir) =  0  Then ForceDirectories = False
  Dir1 = FS.GetParentFolderName(NewDir)
  If (Len(NewDir) <  3 ) Or FS.FolderExists(NewDir) Or (Dir1 = NewDir) Then Exit Function
  Flag = ForceDirectories(Dir1)
  On Error Resume Next
    FS.CreateFolder (NewDir)
    If Err.Number =  0  Then Flag1 = True Else Flag1 = False
  On Error GoTo  0 
  ForceDirectories = Flag And Flag1
End Function 'ForceDirectories
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34335451
Logayn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Function PathExists(pname) As Boolean
' Возвращает TRUE, если путь pname существует 
On Error Resume Next
PathExists = GetAttr(pname) And vbDirectory = vbDirectory
End Function

Function FileExists(path, Fname) As Boolean
' проверяем есть ли файл с именем Fname
With Application.FileSearch
.NewSearch
.Filename = Fname
.LookIn = path
.Execute
    If .FoundFiles.Count =  1  Then
        FileExists2 = True
    Else
        FileExists2 = False
    End If
End With
End Function
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34339783
pseregap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВСЕМ БОЛЬШОЕ СПАСИБО !!!
:)
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34775293
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как сделать проверку на наличие в указанных папки и подпапках всех файлов с расширением *.xls, начинающихся на alg??
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34775501
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Dir("c:\Temp\alg*.xls")


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34775701
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как сделать еще просмотр и в подкаталогах?? что-т оя кручу такой вот скрипт и у меня не получается. Видно я его вообще не понимаю.

Dim SubFolders As Boolean
Dim Fso_Obj As Object, RootFolder As Object
Dim SubFolderInRoot As Object, file As Object
Dim RootPath As String, FileExt As String
Dim MyFiles() As String, Fnum As Long
Dim sh As Worksheet, destrange As Range
Dim rnum As Long

'Loop through all files in the Root folder
RootPath = "C:\Data"

'Loop through the subfolders True or False
SubFolders = True

'Loop through files with this extension
FileExt = ".xls"

Set Fso_Obj = CreateObject("Scripting.FileSystemObject")
If Not Fso_Obj.FolderExists(RootPath) Then
MsgBox RootPath & " Not exist"
Exit Sub
End If

Set RootFolder = Fso_Obj.GetFolder(RootPath)

'Fill the array(myFiles)with the list of Excel files in the folder(s)
Fnum = 0

'Loop through the files in the RootFolder
For Each file In RootFolder.Files
If Right(file.Name, 4) = FileExt Then
Fnum = Fnum + 1
ReDim Preserve MyFiles(1 To Fnum)
MyFiles(Fnum) = RootPath & file.Name
End If
Next file

'Loop through the files in the Sub Folders if SubFolders = True
If SubFolders Then
For Each SubFolderInRoot In RootFolder.SubFolders
For Each file In SubFolderInRoot.Files
If Right(file.Name, 4) = FileExt Then
Fnum = Fnum + 1
ReDim Preserve MyFiles(1 To Fnum)
MyFiles(Fnum) = SubFolderInRoot & "\" & file.Name
End If
Next file
Next SubFolderInRoot
End If

.................

Я так понимаю, что надо изменить в последнем абзаце что бы красиво прилепить к этому скрипту

KL (XL)
Код: plaintext
1.
2.
3.
4.
5.
6.
[src vba]Sub test2()
    Dim strPath As String, strFileName As String, strFullFileName As String
    strPath = "c:\temp\folder1\folder2\test\"
    strFileName = "002.xls"
    strFullFileName = strPath & strFileName
    If Dir(strFullFileName) = "" Then MsgBox MsgBox "File does not exist!" Else "File already exists!"
End Sub

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Как проверить директорию на наличие...
    #34776452
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то типа этого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Function FindFiles(strPath As String, strFileMask As String) As String
    Dim strTmp As String
    Dim strAnswer As String
    
    strAnswer = ""
    
    'бежим по директориям
    strTmp = Dir(strPath, vbDirectory)
    While strTmp <> ""
        'если не родительская директория
        If strTmp <> "." And strTmp <> ".." Then
            strAnswer = strAnswer + " ~" + FindFiles(strPath + strTmp + "\", strFileMask)
        End If
        strTmp = Dir
    Wend
    
    'выбираем файлы
    strTmp = Dir(strPath + strFileMask)
    While strTmp <> ""
        strAnswer = strAnswer + " ~" + strTmp
        strTmp = Dir
    Wend
    
    'возвращаем результат
    FindFiles = strAnswer
End Function


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как проверить директорию на наличие...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]