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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2010, 07:54   #1
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию Как сменить каталог для сохранения файла?

Суть проблемы:
Есть файл напичканый макросами.
Он может находиться где угодно. (на рабочем столе, в "Мои документы" или вовсе в сети.)
Он создаёт файл с данными. И этот файл он должен сохранить в заранее прописанный каталог. (Напимер D:/mmm/1/)
Вроде-бы всё просто когда к имени файла добавляем впереди путь каталога. (Но тогда пользователь не может изменить название файла и место куда его сохранять)
Код:
ИмяНаряда = №Заказ & " от " & Дата & " " & Заказчик & " " & Менеджер & ".xls"  
Name = Application.GetSaveAsFilename(ИмяНаряда, FileFilter:=Filt, Title:="Сохранение Данных в файл!")
Как сделать сохранение в заранее прописанный каталог. (но при этом пользователь если ему понадобится мог выбрать другой каталог сам)
Использовать "ChDir Путь" почему-то не получилось.
Каталог по умолчанию при этом менять нельзя.
КаМММ вне форума Ответить с цитированием
Старый 18.01.2010, 08:33   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Вроде-бы всё просто когда к имени файла добавляем впереди путь каталога. (Но тогда пользователь не может изменить название файла и место куда его сохранять)
Не понял. Насколько я знаю, Application.GetSaveAsFilename возвращает полный путь к файлу, и пользователь может выбрать любую папку для сохранения файла.

Цитата:
Использовать "ChDir Путь" почему-то не получилось.
Вводим строку ChDir в поле поиска, и обнаруживаем, что предварительно в некоторых случаях надо использовать команду ChDrive
http://www.programmersforum.ru/showp...11&postcount=5
EducatedFool вне форума Ответить с цитированием
Старый 18.01.2010, 21:14   #3
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Не понял. Насколько я знаю, Application.GetSaveAsFilename возвращает полный путь к файлу, и пользователь может выбрать любую папку для сохранения файла.
Тут всё правильно.
Я немного не правильно выразился. В первой части я имел в виду сохранение файла функцией ActiveWorkbook.SaveAs
Эта функция сохранит файл туда, куда надо, если правильно прописан путь.
А вот от функции Application.GetSaveAsFilename я хотел добиться, чтобы она открывалась в том каталоге, который я задаю, а не тот который мне Эксель сам предлагает.
Так-что ваш совет про смену диска наверно какраз то, что мне нужно.
Осталось сообразить, как объяснить программе какая часть записи является катологом, а какая диском. (для обычного диска всё понятно, название диска это то, что перед двоеточием)
Что считать диском, если ссылка идёт на сетевую папку?
Например \\Klimat-server\менеджеры\расчет воздуховодов\1\
КаМММ вне форума Ответить с цитированием
Старый 19.01.2010, 06:00   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Как сделать сохранение в заранее прописанный каталог. (но при этом пользователь если ему понадобится мог выбрать другой каталог сам)
Предлагаю вместо Application.GetSaveAsFilename использовать метод Application.FileDialog. Вашу задачу можно решить так:
Код:
Sub Сохранение()
    Dim Name As String, ИмяНаряда As String, myPath As String
    ИмяНаряда = "Имя файла" 'Предлагаемое для сохранения имя файла
    myPath = "D:\My\"       'Предлагаемый для сохранения путь
    With Application.FileDialog(msoFileDialogSaveAs)
        .InitialFileName = myPath & ИмяНаряда
        .Title = "Сохранение Данных в файл!"
        .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        Name = .SelectedItems(1)
    End With
End Sub
Откроется окно с предложением сохранить файл по указанному пути и с указанным именем. После выполнения этого кода, переменная Name будет содержать выбранный путь и имя файла.
P.S. Чтобы избежать возможных неприятностей, не советую использовать переменные с именами, которые Excel использует, например, в качестве метода (в данном случае - это Name).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 19.01.2010, 08:01   #5
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Проверил. Это какраз то, что мне и требовалось.
Пасибо всем за помощь.
КаМММ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
EmbeddedWB. Как вызвать окно сохранения файла при щелчке по ссылке apx_angel Работа с сетью в Delphi 0 22.11.2009 20:38
Восстановление предыдущей версии файла после сохранения specman Microsoft Office Excel 1 02.11.2009 18:42
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
Сохранения файла после передачи albatros Работа с сетью в Delphi 2 26.12.2008 21:07
создание cgi для сохранения на сервере exe файла преданного через http L0rD Работа с сетью в Delphi 2 22.06.2007 12:52