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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.11.2008, 10:36   #1
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию Выбор источника обновлений

Народ, привет! Подскажите пож-та, как можнов VBA реализовать следущее.
Необходимо часто данные из одного файла переносить в другой. Но имя файла из которого берутся данные постоянно меняется в зависимости от даты (AAA.3.10.08 AAA.10.10.08 AAA.17.10.08).
Хочу на VBA написать чтобы при запуски книги, куда надо вносить эти данные, автоматически запускался бы макрос, который бы предлагал выбрать файл-источник обновления, и после того, как я выберу нужный файл, запускал бы на выполнение написанный мной код по копированию данных....
Надеюсь понятно все изложил...

Спасибо...
Bu$ter вне форума
Старый 01.11.2008, 11:25   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Не совсем понятен вопрос. При перемещении файла-источника Excel сам, без всяких макросов запросит вопрос об обновлении (а если нужно, то и об изменении) связей. Этот запрос делается до события Workbook_Open, поэтому, если есть макрос по открытию книги, то сначала будет задан вопрос по связям, а затем выполнен макрос.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 01.11.2008, 11:46   #3
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Попытаюсь по пунктам раскрыть суть вопроса:

1. Есть файл с ценами по всей России (Цены_общий).

2. Есть несколько файлов с ценами по регионам (Цены_Москва, Цены_Питер и т.д.)

3. Заполняю общий файл и ставлю дату заполнения (Пример:Цены_общий_3.10.08, Цены_общий_10.10.08, Цены_общий_17.10.08 и т.д.)

4. Заполняю (копирую) часть данных общего файла в конкретный файл региона и ставлю дату заполнения (Пример:Цены_Москва_3.10.08, Цены_Москва_10.10.08, Цены_Москва_17.10.08 и т.д.)

Так вот, пунк 4 приходится делать в ручную, это занимает много времени. Хочется примерно так:

1. Заполнил общий файл и поставил дату заполнения (Пример:Цены_общий_10.10.08)
2. Открываю файл Цены_Москва_3.10.08 и запускаю макрос, который выдает запрос типа "Укажите файл с которого провести обновление" и предлагает через проводника выбрать файл. После того как файл будет выбран, к нему уже будет применен макрос копирования.
Bu$ter вне форума
Старый 01.11.2008, 11:54   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Теперь ясно. В Вашем случае, я вообще бы отказался от связей.
При открытии книги запускать макрос, который выводит диалоговое окно для указания пути к файлу-источнику. После этого, макрос может сам брать данные (без связей). Если так устроит - приложите какой-нибудь более конкретный пример.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 01.11.2008, 14:21   #5
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

В примере нужно перенести столбцы с ценной за 1 тонну из файла "Скидки_конкурентов_общая_24_октябр ь(полная)" в соответствующие столбцы "Цены конкурентов 17.10.08". Для этого я макрос напишу.
Мне нужно часть кода, который будет вызывать файл - источник...
Вложения
Тип файла: rar Пример.rar (215.8 Кб, 23 просмотров)
Bu$ter вне форума
Старый 01.11.2008, 15:30   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Мне нужно часть кода, который будет вызывать файл - источник...
Код:
Sub test()
    With Application.FileDialog(msoFileDialogOpen)    'только для MS Excel XP и старше
        .InitialFileName = "c:\"
        .FilterIndex = 3
        .AllowMultiSelect = False
        If .Show = -1 Then
            Filename = .SelectedItems(1)        ' читаем путь выбранного файла
        Else
            Exit Sub           ' отмена чтения
        End If
    End With
    MsgBox "Выбран файл " & Filename, vbInformation, "Результат выбора файла"
End Sub
На форуме эта тема неоднократно обсуждалась (например, здесь и здесь)

Последний раз редактировалось EducatedFool; 01.11.2008 в 15:41.
EducatedFool вне форума
Старый 01.11.2008, 15:44   #7
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Код:
Sub test()
    With Application.FileDialog(msoFileDialogOpen)    'только для MS Excel XP и старше
        .InitialFileName = "c:\"
        .FilterIndex = 3
        .AllowMultiSelect = False
        If .Show = -1 Then
            Filename = .SelectedItems(1)        ' читаем путь выбранного файла
        Else
            Exit Sub           ' отмена чтения
        End If
    End With
    MsgBox "Выбран файл " & Filename, vbInformation, "Результат выбора файла"
End Sub
На форуме эта тема неоднократно обсуждалась (например, здесь и здесь)


Спасибо большое. В принципе пол дела сделано. Путь верный. Но хотелось бы - чтобы в проводнике можно было выбрать файл, при этом он сам не открывался. Главное получить путь к нему, чтобы потом можно было использовать этот путь в дальнейшем макросе обработки файла...
Bu$ter вне форума
Старый 01.11.2008, 15:54   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Но хотелось бы - чтобы в проводнике можно было выбрать файл, при этом он сам не открывался
А разве в результате выполнения кода он открывается?
Данный код только записывает путь выбранного Вами файла в переменную Filename

Или Вам нужно диалоговое окно выбора папки, а не файла?
EducatedFool вне форума
Старый 01.11.2008, 16:31   #9
Bu$ter
Пользователь
 
Аватар для Bu$ter
 
Регистрация: 16.05.2008
Сообщений: 73
По умолчанию

Благодарю за помощь, то что нужно.
Возник по ходу еще один вопрос - как можно узнать путь к активному файлу, из которого запускается макрос.

Спасибо
Bu$ter вне форума
Старый 01.11.2008, 16:46   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
как можно узнать путь к активному файлу, из которого запускается макрос
Код:
Sub Для_книги_из_которой_запускается_макрос()
    MsgBox ThisWorkbook.path
    MsgBox ThisWorkbook.FullName
    MsgBox ThisWorkbook.Name
End Sub


Sub Для_активной_в_данный_момент_книги()
    If ActiveWorkbook Is Nothing Then Exit Sub
    MsgBox ActiveWorkbook.path
    MsgBox ActiveWorkbook.FullName
    MsgBox ActiveWorkbook.Name
End Sub

Последний раз редактировалось EducatedFool; 01.11.2008 в 16:51.
EducatedFool вне форума
Закрытая тема


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор директории Kashp Общие вопросы Delphi 6 06.05.2009 06:29
Система обновлений Johnson Общие вопросы Delphi 8 25.10.2008 20:39
Выбор специальности VollmonD Свободное общение 6 02.04.2008 13:18
Выбор установочника Simply-Art Софт 3 15.02.2008 12:53