Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция Dir - проверить существование файла 
V
    Опции темы
logvin
Дата 11.8.2011, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.2.2011

Репутация: нет
Всего: нет



Подскажите, не могу понять как работает функция Dir
вызываю ее таким образом
Код


filename = "\\Mtbackup\ppo\!Папка\папка2\" & Catalog & "\" & Catalog & ".mpp"
        If Dir(filename) <> "" Then



Но если следить за Dir то пишет, что "Invalid procedure call or argument"
проверяемого файла в каталоге нет.

Что я делаю не так?

Мне нужно проверить наличие файла в каталоге.
PM MAIL   Вверх
Akina
Дата 11.8.2011, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(logvin @  11.8.2011,  12:51 Найти цитируемый пост)
если следить за Dir 

Что разумеется под этой фразой?

Цитата(logvin @  11.8.2011,  12:51 Найти цитируемый пост)
Мне нужно проверить наличие файла в каталоге. 

Используйте FileSystemObject.FileExists


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
logvin
Дата 11.8.2011, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.2.2011

Репутация: нет
Всего: нет



Цитата(Akina @  11.8.2011,  11:59 Найти цитируемый пост)
Используйте FileSystemObject.FileExists 

не подскажешь, как ее объявить?

Добавлено через 8 минут и 51 секунду
Цитата(Akina @  11.8.2011,  11:59 Найти цитируемый пост)
Что разумеется под этой фразой?

в VBA есть возможность "следить" за переменной. внизу показывается какое у нее значение. вот значение у нее именно "Invalid procedure call or argument"

Это сообщение отредактировал(а) logvin - 11.8.2011, 12:31
PM MAIL   Вверх
Данкинг
Дата 11.8.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(logvin @  11.8.2011,  13:23 Найти цитируемый пост)
не подскажешь, как ее объявить?

Объявить? Ну, например так:
Код

Dim fso As FileSystemObject



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
iff
Дата 11.8.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: -1
Всего: 16



logvin, у вас задан неправильный путь (переменная filename).


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
logvin
Дата 11.8.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.2.2011

Репутация: нет
Всего: нет



Цитата(iff @  11.8.2011,  12:47 Найти цитируемый пост)
logvin, у вас задан неправильный путь (переменная filename). 

а чем он не правильный? 


Цитата(Данкинг @  11.8.2011,  12:44 Найти цитируемый пост)
Объявить? Ну, например так:
Выделить всёкод Visual Basic
1:
    
Dim fso As FileSystemObject



"User-Defined type not defined"

Добавил галку, подключил библиотеку

теперь пишут 
Код

If FileSystemObject.FileExists(sPath) = 1 Then

ругается, что Требуется Объект
не правильно пишу? 

Это сообщение отредактировал(а) logvin - 11.8.2011, 13:11
PM MAIL   Вверх
Akina
Дата 11.8.2011, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



logvin, поясните - это реальная рабочая задача, просто Вы программист никакой, или это лаботаторная работа / домашнее задание?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
logvin
Дата 11.8.2011, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.2.2011

Репутация: нет
Всего: нет



Цитата(Akina @  11.8.2011,  13:10 Найти цитируемый пост)
Вы программист никакой,

был бы я "какой" программист, думаешь я спрашивал бы что то на форуме?

Добавлено @ 13:22
Код

Private Sub CommandButton1_Click()
Unload UserForm1
UserForm1.Hide
Dim Catalog As String
Dim filename As String
Dim pjapp As Object
Dim newproj
Dim FilePath As String
Dim check As String
Dim checkfile As String
Dim sPath As String
Dim fso As FileSystemObject

'проверяем, что бы пользователь заполнил все поля
If BoxID <> "" And BoxName <> "" And BoxNumber <> "" Then
'удаляем "запрещенные" символы из названия потенциальной папки и файла
'///////////////////////////////////////////////
    BoxID = Replace(BoxID, " ", "")
    BoxID = Replace(BoxID, ",", "")
    BoxID = Replace(BoxID, "|", "")
    BoxID = Replace(BoxID, "*", "")
    BoxID = Replace(BoxID, "<", "")
    BoxID = Replace(BoxID, ">", "")
    BoxID = Replace(BoxID, "?", "")
    BoxID = Replace(BoxID, ":", "")
    BoxID = Replace(BoxID, Chr(34), "")
'///////////////////////////////////////////////
    BoxNumber = Replace(BoxNumber, "/", "_")
    BoxNumber = Replace(BoxNumber, "\", "_")
    BoxNumber = Replace(BoxNumber, " ", "_")
    BoxNumber = Replace(BoxNumber, ",", "")
    BoxNumber = Replace(BoxNumber, "|", "")
    BoxNumber = Replace(BoxNumber, "*", "")
    BoxNumber = Replace(BoxNumber, "<", "")
    BoxNumber = Replace(BoxNumber, ">", "")
    BoxNumber = Replace(BoxNumber, "?", "")
    BoxNumber = Replace(BoxNumber, ":", "")
    BoxNumber = Replace(BoxNumber, Chr(34), "")
'///////////////////////////////////////////////
    BoxName = Replace(BoxName, " ", "_")
    BoxName = Replace(BoxName, Chr(34), "")
    BoxName = Replace(BoxName, "\", "_")
    BoxName = Replace(BoxName, "|", "")
    BoxName = Replace(BoxName, "*", "")
    BoxName = Replace(BoxName, "<", "")
    BoxName = Replace(BoxName, ">", "")
    BoxName = Replace(BoxName, "?", "")
    BoxName = Replace(BoxName, ":", "")
    BoxName = Replace(BoxName, "/", "_")
    BoxName = Replace(BoxName, ",", "")
'///////////////////////////////////////////////
    Catalog = BoxID + "_" + BoxNumber + "_" + BoxName
    BoxNumber = Null
    BoxName = Null
    BoxID = Null

'проверяем на наличие такого каталога

    If Dir("\\Mtbackup\ppo\!Планы\ПРО\" + Catalog, vbDirectory) = Catalog Then
    
    
'Если каталог уже есть, тогда создаем файл в этом каталоге
    
    
    Set pjapp = CreateObject("MSProject.application")
    pjapp.Visible = True
    Set newproj = pjapp.Projects.Add
    newproj.Title = Catalog
    Set ActiveProject = newproj
    ResourceSharing share:=False, Name:="пулресурсов.mpp"
    
    TableApply Name:="ПРО"
    ViewApply Name:="ПРО"
    sPath = "\\Mtbackup\ppo\!Планы\ПРО\" & Catalog & "\" & Catalog & ".mpp"
    If FileSystemObject.FileExists(sPath) = 1 Then
        
        MsgBox "Файл с таким именем уже есть в требуемом каталоге"
        'If Dir(filename) <> "" Then
        
      
        Else
        ActiveProject.SaveAs Name:="\\Mtbackup\ppo\!Планы\ПРО\" & Catalog & "\" & Catalog
        ResourceSharing share:=True, Name:="пулресурсов.mpp"
        End If
'Создаем папку в дирректории \\Mtbackup\ppo\!Планы\ПРО\
    Else
        MkDir ("\\Mtbackup\ppo\!Планы\ПРО\" + Catalog)
    
        Set pjapp = CreateObject("MSProject.application")
        pjapp.Visible = True
        Set newproj = pjapp.Projects.Add
        newproj.Title = Catalog
        newproj.Name = Catalog
        
        Set ActiveProject = newproj
        ResourceSharing share:=True, Name:="\\Mtbackup\ppo\!Планы\пулресурсов.mpp"
        
        TableApply Name:="ПРО"
        ViewApply Name:="ПРО"
        
        ActiveProject.SaveAs Name:="\\Mtbackup\ppo\!Планы\ПРО\" & Catalog & "\" & Catalog

    End If
Else
MsgBox "Нужно заполнить все поля"
End If

End Sub



вот весь код. Если кому нужен.
Это реальная задача, не "домашка". Просто я Инженер-Плановик и только осваиваю автоматизацию. Сильно пожалуйста не бейте smile

Это сообщение отредактировал(а) logvin - 11.8.2011, 13:24
PM MAIL   Вверх
Akina
Дата 11.8.2011, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(logvin @  11.8.2011,  14:13 Найти цитируемый пост)
Это реальная задача, не "домашка". Просто я Инженер-Плановик и только осваиваю автоматизацию. Сильно пожалуйста не бейте

Бить никто и не собирался, собсно. 
Раз задача реально нужная - значит, есть и желание, и потребность учиться. Значит, есть смысл порасходовать пальцы.

Значит, так. Функция Dir() проста в применении, но слабовата... лучше использовать иные средства. А именно FileSystemObject. Прочтите документ по ссылке, воспроизведите пример. А потом по образу и подобию, используя соотв. справку, напишите код решения своей задачи.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
logvin
Дата 11.8.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.2.2011

Репутация: нет
Всего: нет



в общем разобрался 

добавляем соответствующую библиотеку в Tools - Preferences - "Microsoft Scripting Runtime"

а в коде получается следующее 

Код

    Dim fso As FileSystemObject
    sPath = "\\Mtbackup\ppo\!Папка\папка2\" & Catalog & "\" & Catalog & ".mpp"
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FileExists(sPath) Then


Это сообщение отредактировал(а) logvin - 11.8.2011, 14:09
PM MAIL   Вверх
Akina
Дата 11.8.2011, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну вот, видите... не так страшен чёрт...
А ссылочку на справку не теряйте...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
logvin
Дата 11.8.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.2.2011

Репутация: нет
Всего: нет



ага
записал уже smile
PM MAIL   Вверх
iff
Дата 11.8.2011, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Администратор
**


Профиль
Группа: Участник
Сообщений: 949
Регистрация: 23.3.2007

Репутация: -1
Всего: 16



1) Путь начинается с двух слешей.
2) Для получение директории приложения используйте Curdir


--------------------
DOS... Синей пеленой экран заполнил чистый DOS 
Мышь... Стала вдруг квадратной, потеряла форму мышь... 
Я разбил окно, девяностопятое мастдайное окно, 
И поставил DOS, и тогда увидел: Это счастье, — вот оно.  
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.