Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обновление связей с DBF - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновление связей с DBF (Макросы/Sub)
Обновление связей с DBF
kulib Дата: Вторник, 18.03.2014, 13:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Здравствуйте! Давно возникла дурацкая проблема, но руки не доходили до решения, а когда понадобилось, столкнулся с невозможностью ее решить самостоятельно, поэтому обращаюсь к вам, к участникам данного форума и надеюсь на помощь знатоков.
Excel 2003
Существует рабочая книга со связями с внешними файлами, один из которых DBF-4. При открытии книги постоянно выскакивает месседж о невозможности обносить связи. Я сделал нехитрый макрос в автозапуске, но он почему-то не работает. Помогите пожалуйста разобраться и сделать так, чтобы связь обновлялась и сообщение не выскакивало, чтобы не мешать дальнейшей работе других процедур. Спасибо!

[vba]
Код
Private Sub Auto_Open() 'Workbook_Open()
'On Error Resume Next
sName = ActiveWorkbook.Name
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Workbooks.Open FileName:="D:\Report\bases\regions.DBF"
Windows(sName).Activate
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources(xlExcelLinks)
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources(xlOLELinks)
Windows("regions.DBF").Close
'ActiveWindow.Close
'Application.SendKeys ("~")
End Sub
[/vba]
К сообщению приложен файл: Temp.zip (7.7 Kb)
 
Ответить
СообщениеЗдравствуйте! Давно возникла дурацкая проблема, но руки не доходили до решения, а когда понадобилось, столкнулся с невозможностью ее решить самостоятельно, поэтому обращаюсь к вам, к участникам данного форума и надеюсь на помощь знатоков.
Excel 2003
Существует рабочая книга со связями с внешними файлами, один из которых DBF-4. При открытии книги постоянно выскакивает месседж о невозможности обносить связи. Я сделал нехитрый макрос в автозапуске, но он почему-то не работает. Помогите пожалуйста разобраться и сделать так, чтобы связь обновлялась и сообщение не выскакивало, чтобы не мешать дальнейшей работе других процедур. Спасибо!

[vba]
Код
Private Sub Auto_Open() 'Workbook_Open()
'On Error Resume Next
sName = ActiveWorkbook.Name
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Workbooks.Open FileName:="D:\Report\bases\regions.DBF"
Windows(sName).Activate
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources(xlExcelLinks)
ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources(xlOLELinks)
Windows("regions.DBF").Close
'ActiveWindow.Close
'Application.SendKeys ("~")
End Sub
[/vba]

Автор - kulib
Дата добавления - 18.03.2014 в 13:45
KuklP Дата: Вторник, 18.03.2014, 15:26 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Попробуйте:
[vba]
Код
Private Sub Auto_Open()
     Application.AskToUpdateLinks = False
     With ThisWorkbook
     Workbooks.Open .Path & "\regions.DBF"
         .ChangeLink Name:=.LinkSources(1)(1), NewName:= _
             .Path & "\regions.DBF", Type:=xlExcelLinks
         Windows("regions.DBF").Close
     End With
End Sub
[/vba] Файлы д.б. в одной папке. Неважно, где.
К сообщению приложен файл: prim.rar (5.7 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Вторник, 18.03.2014, 15:38
 
Ответить
СообщениеПопробуйте:
[vba]
Код
Private Sub Auto_Open()
     Application.AskToUpdateLinks = False
     With ThisWorkbook
     Workbooks.Open .Path & "\regions.DBF"
         .ChangeLink Name:=.LinkSources(1)(1), NewName:= _
             .Path & "\regions.DBF", Type:=xlExcelLinks
         Windows("regions.DBF").Close
     End With
End Sub
[/vba] Файлы д.б. в одной папке. Неважно, где.

Автор - KuklP
Дата добавления - 18.03.2014 в 15:26
kulib Дата: Вторник, 18.03.2014, 15:55 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Попробуйте:

Неа, не срабатывает, т.е. прилинкованный путь меняется, но мессага всё равно появляется. Причем в редакторе при пошаговом выполнении сам макрос отрабатывает. А почему в авторане при открытии книги выдает сообщение непонятно
К сообщению приложен файл: 4139133.jpg (77.6 Kb)


Сообщение отредактировал kulib - Вторник, 18.03.2014, 16:11
 
Ответить
Сообщение
Попробуйте:

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

Автор - kulib
Дата добавления - 18.03.2014 в 15:55
KuklP Дата: Вторник, 18.03.2014, 16:25 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Так связи-то при этом обновляет, жмите продолжить. И у меня сообщение срабатывает только первый раз, когда связь изменяется. При повторном открытии с уже измененной связью, сообщения нет.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеТак связи-то при этом обновляет, жмите продолжить. И у меня сообщение срабатывает только первый раз, когда связь изменяется. При повторном открытии с уже измененной связью, сообщения нет.

Автор - KuklP
Дата добавления - 18.03.2014 в 16:25
kulib Дата: Вторник, 18.03.2014, 16:38 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Так связи-то при этом обновляет, жмите продолжить.

Так мне как раз и надо, чтобы мессага не появлялась! В этом проблема. Иначе зачем тогда Application.DisplayAlerts = False. У меня при повторном открытии с измененной связью сообщение также появляется. :( Сам дбф-ник то лежит всегда по статичному пути и в принципе изменение пути не предполагается. Я уже пробовал даже через Application.SendKeys ("~") его закрыть - не помогло.
 
Ответить
Сообщение
Так связи-то при этом обновляет, жмите продолжить.

Так мне как раз и надо, чтобы мессага не появлялась! В этом проблема. Иначе зачем тогда Application.DisplayAlerts = False. У меня при повторном открытии с измененной связью сообщение также появляется. :( Сам дбф-ник то лежит всегда по статичному пути и в принципе изменение пути не предполагается. Я уже пробовал даже через Application.SendKeys ("~") его закрыть - не помогло.

Автор - kulib
Дата добавления - 18.03.2014 в 16:38
KuklP Дата: Вторник, 18.03.2014, 17:29 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Можно через импорт внешних данных делать. Или вместо формул со связью вставлять значения макросом.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеМожно через импорт внешних данных делать. Или вместо формул со связью вставлять значения макросом.

Автор - KuklP
Дата добавления - 18.03.2014 в 17:29
kulib Дата: Вторник, 18.03.2014, 17:49 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Можно через импорт внешних данных делать.

Согласен, через импорт проще. Но хотелось расковырять эту хрень. Может конечно это бага 2003-го экселя, но менять пакет я пока доооолго не собираюсь. yes
 
Ответить
Сообщение
Можно через импорт внешних данных делать.

Согласен, через импорт проще. Но хотелось расковырять эту хрень. Может конечно это бага 2003-го экселя, но менять пакет я пока доооолго не собираюсь. yes

Автор - kulib
Дата добавления - 18.03.2014 в 17:49
KuklP Дата: Вторник, 18.03.2014, 17:55 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Так и объяснить:
Цитата
дбф - это совсем не экселевский формат. Поэтому и подход к нему должен быть соответствующий.
Сделайте связи с Экс-файлом и таких проблем не будет.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Среда, 19.03.2014, 10:23
 
Ответить
СообщениеТак и объяснить:
Цитата
дбф - это совсем не экселевский формат. Поэтому и подход к нему должен быть соответствующий.
Сделайте связи с Экс-файлом и таких проблем не будет.

Автор - KuklP
Дата добавления - 18.03.2014 в 17:55
kulib Дата: Среда, 19.03.2014, 10:18 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Почему же баг?

Тогда как объяснить следующую вещь: Если предварительно в экселе открыть тот самый дбф-ник и потом открыть рабочую книгу (неважно с макросом в авторане или без него), то противная мессага не вылетает. Но если открывать тот же дбф-ник процедурой из открываемой книги по Auto_Open (как в шапке поста), то выскакивает!
Я попробовал произвести запуск последовательно обоих файлов другой процедурой (допустим из PERSONAL.xls) и о ЧУДО - мессага не появилась, причём и мой первый макрос (тот что в шапке без изменений) отработал в открываемой рабочей книге без ошибки!
Вот такие танцы с бубнами! ИМХО получается, что в момент открытия файла, еще до инициализации Auto_Open происходит обращение к связям и победить это можно только через ж....

Sub test2()
Workbooks.Open FileName:="D:\Report\bases\regions.DBF"
Workbooks.Open FileName:="D:\My Work\БАЗА.xls"
'всё сработало, мессага не появилась
End Sub
 
Ответить
Сообщение
Почему же баг?

Тогда как объяснить следующую вещь: Если предварительно в экселе открыть тот самый дбф-ник и потом открыть рабочую книгу (неважно с макросом в авторане или без него), то противная мессага не вылетает. Но если открывать тот же дбф-ник процедурой из открываемой книги по Auto_Open (как в шапке поста), то выскакивает!
Я попробовал произвести запуск последовательно обоих файлов другой процедурой (допустим из PERSONAL.xls) и о ЧУДО - мессага не появилась, причём и мой первый макрос (тот что в шапке без изменений) отработал в открываемой рабочей книге без ошибки!
Вот такие танцы с бубнами! ИМХО получается, что в момент открытия файла, еще до инициализации Auto_Open происходит обращение к связям и победить это можно только через ж....

Sub test2()
Workbooks.Open FileName:="D:\Report\bases\regions.DBF"
Workbooks.Open FileName:="D:\My Work\БАЗА.xls"
'всё сработало, мессага не появилась
End Sub

Автор - kulib
Дата добавления - 19.03.2014 в 10:18
KuklP Дата: Среда, 19.03.2014, 10:24 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Не туда ткнул мыхой:)
Так и объяснить:
Цитата
дбф - это совсем не экселевский формат. Поэтому и подход к нему должен быть соответствующий.
Сделайте связи с Экс-файлом и таких проблем не будет.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеНе туда ткнул мыхой:)
Так и объяснить:
Цитата
дбф - это совсем не экселевский формат. Поэтому и подход к нему должен быть соответствующий.
Сделайте связи с Экс-файлом и таких проблем не будет.

Автор - KuklP
Дата добавления - 19.03.2014 в 10:24
kulib Дата: Среда, 19.03.2014, 10:35 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
В итоге решил не долбить мозг ни себе, ни людям. Объединил часть своего кода и присланного KuklP (Спасибо!), а противную мессагу закрыл в конце по Application.SendKeys ("~"). Ну в общем и фиг нс ним!

[vba]
Код
Private Sub Auto_Open()
wbName = ActiveWorkbook.Name
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Windows(wbName).Activate
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
With ThisWorkbook
Workbooks.Open "D:\Report\bases\regions.DBF"
.ChangeLink Name:=.LinkSources(1)(1), NewName:= _
"D:\Report\bases\regions.DBF", Type:=xlExcelLinks
Windows("regions.DBF").Close
End With
Application.SendKeys ("~")
End Sub
[/vba]
 
Ответить
СообщениеВ итоге решил не долбить мозг ни себе, ни людям. Объединил часть своего кода и присланного KuklP (Спасибо!), а противную мессагу закрыл в конце по Application.SendKeys ("~"). Ну в общем и фиг нс ним!

[vba]
Код
Private Sub Auto_Open()
wbName = ActiveWorkbook.Name
Application.DisplayAlerts = False
Application.AskToUpdateLinks = False
Windows(wbName).Activate
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
With ThisWorkbook
Workbooks.Open "D:\Report\bases\regions.DBF"
.ChangeLink Name:=.LinkSources(1)(1), NewName:= _
"D:\Report\bases\regions.DBF", Type:=xlExcelLinks
Windows("regions.DBF").Close
End With
Application.SendKeys ("~")
End Sub
[/vba]

Автор - kulib
Дата добавления - 19.03.2014 в 10:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обновление связей с DBF (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!