Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2009, 12:03   #1
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию Как программно обратиться к сетевому файлу

Подскажите, пожалуйста. Как программно обратиться к файлу, находящемуся на сервере, а не локально. Чтобы проделать с ним ряд манипуляций. Открыть его программно могу, но скопировать данные из него - нет. Ругается Path/File accsess error (ошибка 75). Обращаюсь к нему по относительному пути (по имени файла), а как прописать абсолютный путь? И надо ли?
Буду признательна за любую подсказку.
Bezdar вне форума Ответить с цитированием
Старый 26.02.2009, 12:21   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

А каким интерфейсом ты пользуешься.
Если TCP/IP то это просто //IPадрес_сервера/полный_путь/ИМЯ_файла

Если именнованый то немного сложнеее. Необходимо чтобы на сервере был включен Name Pipes API-интерфейс (стандартно все рабоnают именно с ним, но забываю его включить.)
Тогда обращаться к нему нужно так \\.\pipe\ИмяСервераPipe\ПолныйПуть\ ИМЯ файла
Юнлинг вне форума Ответить с цитированием
Старый 26.02.2009, 13:14   #3
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Я обращаюсь так:
workbooks("\\IPадрес_сервера/полный_путь/ИМЯ_файла").sheets (такой-то).copy ну и т.д.
ругается. синтаксис не такой? как правильно написать?
Bezdar вне форума Ответить с цитированием
Старый 26.02.2009, 13:23   #4
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Bezdar Посмотреть сообщение
Я обращаюсь так:
workbooks("\\IPадрес_сервера/полный_путь/ИМЯ_файла").sheets (такой-то).copy ну и т.д.
ругается. синтаксис не такой? как правильно написать?
Мне кажется ты ошибся
надо писать так
Код:
\\IPадрес_сервера\полный_путь\ИМЯ_файла
Юнлинг вне форума Ответить с цитированием
Старый 26.02.2009, 14:12   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Для открытия файла выполняем такую команду:
Workbooks.Open ("\\IPадрес_сервера\полный_путь\ИМЯ_ф айла")

Далее (при работе с файлом) обращаемся так:
Workbooks("ИМЯ_файла").Sheets(такой - то).Copy


Вообще, лучше написать код несколько иначе:
Код:
    Dim WB As Workbook:
    Set WB = Workbooks.Open("\\IPадрес_сервера\полный_путь\ИМЯ_файла") ' открываем книгу
    WB.Sheets(такой - то).Copy ' копируем лист
    WB.Close False ' закрываем книгу
EducatedFool вне форума Ответить с цитированием
Старый 27.02.2009, 09:27   #6
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Спасибо большое! Наконец-то мозги на место встали.
Но проблема все равно осталась. Копирует не все файлы в сетевой папке, а изборочно. И ругается, как я выше описала. В чем может быть причина?
Bezdar вне форума Ответить с цитированием
Старый 27.02.2009, 10:57   #7
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Bezdar Посмотреть сообщение
Спасибо большое! Наконец-то мозги на место встали.
Но проблема все равно осталась. Копирует не все файлы в сетевой папке, а изборочно. И ругается, как я выше описала. В чем может быть причина?
Первое Наверное из сетевой папки, а не в сетевую.
Воторое Ошибок копирования может быть несколько
Назову две основных.
1. Если в папке часть файлов ReadOnly, закрытые администратором или другим пользователем, то ты получишь ошибку при копировании. Метод исправления - отменить ReadOnly для этого файла.
2. Если одновременно файлом пользуется другой пользователь, а в условиях стоит однопользовательский режим работ. Метод исправления - открыть многопользовательский режим работы с файлом (Зависит от типа файла, Многие файлы это просто не позволяют это делать - например системные) Но просто копировать эти файлы невозможно.
Юнлинг вне форума Ответить с цитированием
Старый 27.02.2009, 11:42   #8
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Ко всем файлам сетевой папки у меня полные права, а файлы хоть с ReadOnly, хоть без него - один дается копироваться, другой - нет. И думай на что хочешь. Еще один момент - не дает копировать именно листы, а не инф-цию в них, инф-ция идет на ура.
Bezdar вне форума Ответить с цитированием
Старый 27.02.2009, 12:33   #9
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Цитата:
Сообщение от Bezdar Посмотреть сообщение
Ко всем файлам сетевой папки у меня полные права, а файлы хоть с ReadOnly, хоть без него - один дается копироваться, другой - нет. И думай на что хочешь. Еще один момент - не дает копировать именно листы, а не инф-цию в них, инф-ция идет на ура.
Полные права не означают системные администраторские (это сетевая прибамбаха). Если readOnly сделан администратором то хотя у тебя и будет видно что полный доступ в реальности нет. (Мне честно говоря ни разу не удавалось в прямую скопировать файлы только побайтово). В этом случае ты можешь прочитать, но скопировать системной командой copy сомневаюсь. Но если удается все таки макросом его прочитать то соответственно можно и записать но не как целостный файл. Естественно создав как байтовый файл. Как это делается в VBA не знаю. а в C есть команда putchar()
В твоем случае файлы наверное заняты или другими пользователями или сервером. Обратись к админу он должен помочь в этом случае.
Юнлинг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к активной форме? Dimon88 Помощь студентам 4 18.10.2008 00:03
Как т=обратиться к стандартным диалогам Windows? DeDoK Общие вопросы Delphi 1 29.09.2008 14:25
Как из проги обратиться к Excel ? Drozd Общие вопросы Delphi 3 26.03.2008 18:24
Как обратиться к ячейке таблицы Аналитик Помощь студентам 16 29.11.2007 20:11
как обратиться к невидемой форме Scorpeon Общие вопросы Delphi 3 29.06.2007 16:16