Страницы: 1
RSS
Обновление связей макросом, выбор листа, вопрос по vba
 
Уважаемые форумчане,
Подскажите, пожалуйста, где эксель хранит название листа книги, по которой обновляются связи?

Есть макрос, который при запуске обновляет связи (файл в списке связей прописан один, и его не существует - это сделано для того, чтобы при обновлении связей эксель инициировал диалог выбора файла). Так вот, макрос запускает выбор файла для обновления связей, оператор выбирает файл, в итоге связи обновляются и получается актуальный список артикулов и количество (а данные обновляются из файла, который раз в сути присылает заказчик).

Обычно в файле один лист (данные за одни сутки), но после выходных присылается сборный файл за два-три дня, что предполагает наличие нескольких листов.
Когда оператор обновляет связи с файлом, где один лист - все работает ОК. Когда же в файле несколько листов, то эксель сначала спрашивает, из какого файла взять данные (pic 1), а потом при последующем запуске макроса и выбора этого же файла, эксель такой диалог уже не запускает (что логично, ибо он запомнил, с какого листа брать данные, при первом запуске). Чтобы обновить данные с другого листа, приходится открывать книгу заново, запускать макрос и т.п.

Так вот, как сделать так, чтобы при обновлении связей из книги с несколькими листами, этот диалог возникал каждый раз при запуске макроса?
Я пробовала геморным способом удалять название листа со всех ссылок в ячейках, и это работает, но даже после удаления ссылок эксель каким-то образом "помнит", с какого листа данные были обновлены изначально - поэтому мне интересно, каким образом он помнит этот лист (ведь названия листа из ссылок уже удалены!)

Как-то так. Спасибо за уделенное время.
 
Цитата
avs написал: чтобы при обновлении связей из книги с несколькими листами, этот диалог возникал каждый раз при запуске макроса?
Макросом проверять количество листов в книге, и, если их больше чем 1, вводить нужное с помощью InputBox или выбирать из предварительно заполненного ListBox/ComboBox
Согласие есть продукт при полном непротивлении сторон
 
Sanja,
Спасибо, но как это возможно, если из файла обновляются только ссылки, и сам он не открывается?
В меню связей прописан файл, которые вообще не существует (был удален после создания ссылок в ячейках), поэтому каждый раз при обновлении связей просит выбирать новый файл, и адрес выбранного файла нигде не прописывается...просто в ячейках проставляются новые значения.
 
Может поможет Вам!
 
skais675, выглядит очень обещающе!
Поразбираюсь пока, потому напишу впечатления.

Спасибо :)
 
skais675, способ очень понравился!
Подскажите, пожалуйста, как избежать многократного появления окна Update Values в цикле:
Код
Dim aL(), i&, s
        aL = importWB.LinkSources(xlExcelLinks)
        If IsEmpty(aL) Then Exit Sub
        For i = 1 To UBound(aL)
            s = Split(aL(i), "\")
            Application.StatusBar = FilesToOpen(x) + " - " + s(UBound(s))
            importWB.ChangeLink aL(i), importWB.Path & "\" & s(UBound(s)), 1
            importWB.UpdateLink Name:=importWB.Path & "\" & s(UBound(s)), Type:=xlExcelLinks
        Next
        importWB.RefreshAll

Дело в том, что в файле более 2000 ячеек с ссылками, и он обновляет каждую, и окон немерено)...Спасает только приведение к виду:
Код
Application.StatusBar = FilesToOpen(x) + " - " + s(UBound(s))
           Application.DisplayAlerts = False
           importWB.ChangeLink aL(i), importWB.Path & "\" & s(UBound(s)), 1
           Application.DisplayAlerts = True
           importWB.UpdateLink Name:=importWB.Path & "\" & s(UBound(s)), Type:=xlExcelLinks
           Application.DisplayAlerts = False 

Не подскажете, это правильное решение проблемы?
Как еще можно избежать появления нежелательных окон?
Изменено: avs - 14.02.2017 10:02:46
 
У меня никаких окон не появляется вообще, не могу Вас понять.
Если Вы решили как-то по своему ну и пусть. Либо вышлите мне на почту (удалено) рабочие файлы и посмотрим.
Я этим макросом не то что 2000 а наверно сотни тысяч обновляю!
Изменено: skais675 - 13.02.2017 12:52:26
 
skais675, ответила в личку.
Думаю, тему можно закрыть.)
 
skais675, 175 сообщений на форуме, а с Правилами так и не ознакомились? Почта долджна быть в Вашем профиле, а не где-либо ещё.
 
Юрий М В том то и дело что не понимаю как ее туда запихнуть! Вроде указал, а ее все равно нет. Либо я неправильно пользуюсь.
Я и в Вашем профиле ее не вижу - самого адреса почты! Как его увидеть?
Изменено: skais675 - 13.02.2017 12:57:57
 
Цитата
skais675 написал:
Я и в Вашем профиле ее не вижу - самого адреса почты! Как его увидеть?
Открыть мой профиль и глянуть в правый нижний угол.
 
Не подумайте об аватарке. Там в правом нижнем - хвост! :)
 
:D
 
Юрий М Странно как-то , но разобрался. Казалось бы логично было бы, чтобы при нажатии на линк E-mail - отображался сам e-mail, а не тут то было - просто отсылается оповещение на e-mail. А если человеку нужно файл приложить? А у Вас адрес находится в интересах - не понимаю какая взаимосвязь адреса с интресами?!
 
Цитата
skais675 написал:
какая взаимосвязь адреса с интресами?
Нет никакой связи - просто место удобное для размещения информации. Странно, что Вы сразу не нашли )
 
Да уж! А почему не сделали чтобы при нажатии на линк E-mail - отображался и сам e-mail (хотя бы как инфо где-нибудь)?
 
А если владелец аккаунта не хочет светить свой адрес?
Да и для подобных вопросов есть отдельная тема )  
Страницы: 1
Наверх