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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.01.2008, 07:57   #11
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Задача понятна. К сожалению, Excel не может обновлять связи в избранных ячейках, но можно обновлять связи с избранными файлами. Решение Вашей проблемы зависит от структуры рабочей книги. Так, например, если столбец "A" содержит связи с одним файлом, столбец "B" с другим, "C" с третьим и т.д., то задача решается просто:
Код:
Private Sub Workbook_Open()

    Dim w As Integer, a()
    
'Если концом первой недели месяца считать первое воскресенье месяца, то:

    w = Fix((Day(Date) + Weekday(CStr("01." & Month(Date) _
        & "." & Year(Date)), vbMonday) - 2) / 7) + 1
        
'Но тогда возможна и 6-я неделя (например, март 2008г.)
'А если считать, что первая неделя всегда с 1 по 7, то:

    'w = Fix((Day(Date) - 1) / 7 + 1)
    
    a = ActiveWorkbook.LinkSources(xlExcelLinks)
    ActiveWorkbook.UpdateLink Name:=a(w)
    
End Sub
ПРИМЕЧАНИЕ: файл должен быть сохранен с отключенным обновлением связей и отключенным запросом на обновление.

А если не так, то нужно будет удалить связи на рабочем листе, использовать метод "Select Case" и в коде VBA прописывать нужные ссылки.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 18.01.2008, 09:44   #12
tat-besidovska
Пользователь
 
Регистрация: 17.01.2008
Сообщений: 29
Вопрос

спасибо большое за полезную информацию, Вы правы,что все зависит от структуры моего файла. В столбцах(в моей таблице), в каждой ячейке идет связь с разными файлами, короче надо думать. Подскажите, как прописать в VBA связь с ячейкой в закрытом файле, заранее спасибо
tat-besidovska вне форума
Старый 18.01.2008, 10:54   #13
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

В VBA не существует метода получения значения из закрытого файла рабочей книги. Эта задача выполняется в результате вызова макроса XLM. Следующий пример, расположенный в модуле "Эта книга",при открытии покажет в окне сообщений значение из закрытой книги, определенное Вами.
Код:
'Объявляем функцию:
Private Function GetValue(path, file, sheet, ref)
    Dim arg As String
'Создание аргумента:
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(ref).Range("A1").Address(, , xlR1C1)
'Выполнение макроса XLM:
    GetValue = ExecuteExcel4Macro(arg)
End Function
'Запуск процедуры при открытии файла:
Private Sub Workbook_Open()

'Задаем параметры:
    p = "D:\Temp\"      'Путь к файлу
    f = "MyFile.xls"    'Имя файла
    s = "Лист1"         'Имя листа
    a = "A1"            'Адрес ячейки
    
'Получаем значение из закрытой книги:
    MsgBox GetValue(p, f, s, a)
    
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA Excel 2003 tat-besidovska Microsoft Office Excel 17 07.06.2008 15:48
2003 & 2007 Sk!f Microsoft Office Word 2 30.04.2008 13:55
Не работает Excel-евский файл в 2003 версии asale Microsoft Office Excel 1 03.10.2007 22:42
MS Excel и MS Outlook (2003) отсылка писем IceB Microsoft Office Excel 1 02.07.2007 13:32