Как открыть 2 книги одновременно
evgenyforever
Дата: Вторник, 26.09.2023, 19:08 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Можно ли в экселе сделать такое: Есть два экселевских файла (2 книги), в одной книге открыт и работает непрерывно макрос, в другой нет. Я бы хотел работать в той книге, где нет макроса, но чтобы была открыта книга с макросом и она также продолжала беспрерывно работать. Но при запуске книги с макросом, и одновременно, при открытии другой книги возникает ошибка: На всякий случай приложу код макроса, который отвечает за подключение и обновление внешнего источника [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long On Error Resume Next Do Обновление подключений. Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), "ОбновлениеПодключений" End Sub
[/vba]
Можно ли в экселе сделать такое: Есть два экселевских файла (2 книги), в одной книге открыт и работает непрерывно макрос, в другой нет. Я бы хотел работать в той книге, где нет макроса, но чтобы была открыта книга с макросом и она также продолжала беспрерывно работать. Но при запуске книги с макросом, и одновременно, при открытии другой книги возникает ошибка: На всякий случай приложу код макроса, который отвечает за подключение и обновление внешнего источника [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long On Error Resume Next Do Обновление подключений. Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), "ОбновлениеПодключений" End Sub
[/vba] evgenyforever
Сообщение отредактировал evgenyforever - Вторник, 26.09.2023, 19:43
Ответить
Сообщение Можно ли в экселе сделать такое: Есть два экселевских файла (2 книги), в одной книге открыт и работает непрерывно макрос, в другой нет. Я бы хотел работать в той книге, где нет макроса, но чтобы была открыта книга с макросом и она также продолжала беспрерывно работать. Но при запуске книги с макросом, и одновременно, при открытии другой книги возникает ошибка: На всякий случай приложу код макроса, который отвечает за подключение и обновление внешнего источника [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long On Error Resume Next Do Обновление подключений. Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), "ОбновлениеПодключений" End Sub
[/vba] Автор - evgenyforever Дата добавления - 26.09.2023 в 19:08
bmv98rus
Дата: Вторник, 26.09.2023, 20:22 |
Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4114
Репутация:
769
±
Замечаний:
0% ±
Excel 2013/2016
ну немного странно что цикл сделан так что минимум 10 раз обновляет подключения и потом делает паузу в 2 секунды. Далее, естесвенно так как не указана книга, то при открытии второй код пытается что-то сделать с активной. [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long On Error Resume Next Do Обновление подключений. ThisWorkbook.Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), ThisWorkbook.name & "!ОбновлениеПодключений" End Sub
[/vba]
ну немного странно что цикл сделан так что минимум 10 раз обновляет подключения и потом делает паузу в 2 секунды. Далее, естесвенно так как не указана книга, то при открытии второй код пытается что-то сделать с активной. [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long On Error Resume Next Do Обновление подключений. ThisWorkbook.Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), ThisWorkbook.name & "!ОбновлениеПодключений" End Sub
[/vba] bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Сообщение отредактировал bmv98rus - Вторник, 26.09.2023, 20:23
Ответить
Сообщение ну немного странно что цикл сделан так что минимум 10 раз обновляет подключения и потом делает паузу в 2 секунды. Далее, естесвенно так как не указана книга, то при открытии второй код пытается что-то сделать с активной. [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long On Error Resume Next Do Обновление подключений. ThisWorkbook.Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), ThisWorkbook.name & "!ОбновлениеПодключений" End Sub
[/vba] Автор - bmv98rus Дата добавления - 26.09.2023 в 20:22
evgenyforever
Дата: Вторник, 26.09.2023, 21:27 |
Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
bmv98rus , Спасибо, что приняли участие в обсуждении!ну немного странно что цикл сделан так что минимум 10 раз обновляет подключения и потом делает паузу в 2 секунды.
Это нужно было для того, чтобы ушла ошибка с обновлением данных внешнего источника в ветке Обновление данных Application.OnTime Now + TimeValue("00:00:02"), ThisWorkbook.name & "!ОбновлениеПодключений"
Данное решение не помогло, а может быть можно прописать в коде что весь макрос относится только к одной книге (той, которая с макросом, или лучше по имени книги). Приложу весь лист с макросом, видимо, когда я написал часть макроса, это недостаточная информация для решения вопроса. Или нужно создать топик в "Вопросы по VBA"?
bmv98rus , Спасибо, что приняли участие в обсуждении!ну немного странно что цикл сделан так что минимум 10 раз обновляет подключения и потом делает паузу в 2 секунды.
Это нужно было для того, чтобы ушла ошибка с обновлением данных внешнего источника в ветке Обновление данных Application.OnTime Now + TimeValue("00:00:02"), ThisWorkbook.name & "!ОбновлениеПодключений"
Данное решение не помогло, а может быть можно прописать в коде что весь макрос относится только к одной книге (той, которая с макросом, или лучше по имени книги). Приложу весь лист с макросом, видимо, когда я написал часть макроса, это недостаточная информация для решения вопроса. Или нужно создать топик в "Вопросы по VBA"?evgenyforever
Сообщение отредактировал evgenyforever - Вторник, 26.09.2023, 21:28
Ответить
Сообщение bmv98rus , Спасибо, что приняли участие в обсуждении!ну немного странно что цикл сделан так что минимум 10 раз обновляет подключения и потом делает паузу в 2 секунды.
Это нужно было для того, чтобы ушла ошибка с обновлением данных внешнего источника в ветке Обновление данных Application.OnTime Now + TimeValue("00:00:02"), ThisWorkbook.name & "!ОбновлениеПодключений"
Данное решение не помогло, а может быть можно прописать в коде что весь макрос относится только к одной книге (той, которая с макросом, или лучше по имени книги). Приложу весь лист с макросом, видимо, когда я написал часть макроса, это недостаточная информация для решения вопроса. Или нужно создать топик в "Вопросы по VBA"?Автор - evgenyforever Дата добавления - 26.09.2023 в 21:27
bmv98rus
Дата: Вторник, 26.09.2023, 22:08 |
Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4114
Репутация:
769
±
Замечаний:
0% ±
Excel 2013/2016
а запрос не идет ли во вторую книгу, открывая которую вы блокируете к ней доступ?
а запрос не идет ли во вторую книгу, открывая которую вы блокируете к ней доступ? bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Ответить
Сообщение а запрос не идет ли во вторую книгу, открывая которую вы блокируете к ней доступ? Автор - bmv98rus Дата добавления - 26.09.2023 в 22:08
evgenyforever
Дата: Вторник, 26.09.2023, 22:34 |
Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Как проверить? Вполне может быть)
Сообщение отредактировал evgenyforever - Вторник, 26.09.2023, 22:38
Ответить
Сообщение Как проверить? Вполне может быть) Автор - evgenyforever Дата добавления - 26.09.2023 в 22:34
bmv98rus
Дата: Среда, 27.09.2023, 07:17 |
Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4114
Репутация:
769
±
Замечаний:
0% ±
Excel 2013/2016
так посомтреть в подключениях куда идут запросы.
так посомтреть в подключениях куда идут запросы. bmv98rus
Замечательный Временно просто медведь , процентов на 20 .
Ответить
Сообщение так посомтреть в подключениях куда идут запросы. Автор - bmv98rus Дата добавления - 27.09.2023 в 07:17
evgenyforever
Дата: Среда, 27.09.2023, 13:48 |
Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Если я Вас правильно понял, найдено два запроса на подключение: Оба запроса обращаются к адресу C:\Users\evgen\AppData\Roaming\....
Если я Вас правильно понял, найдено два запроса на подключение: Оба запроса обращаются к адресу C:\Users\evgen\AppData\Roaming\.... evgenyforever
Сообщение отредактировал evgenyforever - Среда, 27.09.2023, 14:04
Ответить
Сообщение Если я Вас правильно понял, найдено два запроса на подключение: Оба запроса обращаются к адресу C:\Users\evgen\AppData\Roaming\.... Автор - evgenyforever Дата добавления - 27.09.2023 в 13:48
mgt
Дата: Четверг, 28.09.2023, 11:54 |
Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация:
26
±
Замечаний:
0% ±
Excel 2010
А если так попробовать? [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long Dim wb As Workbook Set wb = ThisWorkbook On Error Resume Next Do Обновление подключений. wb.Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), wb.name & "!ОбновлениеПодключений" End Sub
[/vba]
А если так попробовать? [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long Dim wb As Workbook Set wb = ThisWorkbook On Error Resume Next Do Обновление подключений. wb.Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), wb.name & "!ОбновлениеПодключений" End Sub
[/vba] mgt
Ответить
Сообщение А если так попробовать? [vba]Код
Private Sub ОбновлениеПодключений() ' Макрос "Обновить подключения". Dim i As Long Dim wb As Workbook Set wb = ThisWorkbook On Error Resume Next Do Обновление подключений. wb.Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Установка таймера. Application.OnTime Now + TimeValue("00:00:02"), wb.name & "!ОбновлениеПодключений" End Sub
[/vba] Автор - mgt Дата добавления - 28.09.2023 в 11:54
evgenyforever
Дата: Четверг, 28.09.2023, 13:56 |
Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
mgt , Как и в первом случае возникает ошибка:
Сообщение отредактировал evgenyforever - Четверг, 28.09.2023, 14:06
Ответить
Сообщение mgt , Как и в первом случае возникает ошибка:Автор - evgenyforever Дата добавления - 28.09.2023 в 13:56
mgt
Дата: Четверг, 28.09.2023, 15:00 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация:
26
±
Замечаний:
0% ±
Excel 2010
[vba]Код
Обновление подключений.
[/vba] Это в коде вообще откуда взялось? Закоментируйте эту строку.
[vba]Код
Обновление подключений.
[/vba] Это в коде вообще откуда взялось? Закоментируйте эту строку. mgt
Ответить
Сообщение [vba]Код
Обновление подключений.
[/vba] Это в коде вообще откуда взялось? Закоментируйте эту строку. Автор - mgt Дата добавления - 28.09.2023 в 15:00
evgenyforever
Дата: Четверг, 28.09.2023, 15:30 |
Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
Application.OnTime Now + TimeValue("00:00:02"), wb.name & "!ОбновлениеПодключений"
При добавлении переменной Цитата
wb.name & "!ОбновлениеПодключений"
возникает данная ошибка. А если вот так: Application.OnTime Now + TimeValue("00:00:02"), "ОбновлениеПодключений", то ошибка не появляется, но и работать в двух книгах не получится - книга с макросом выдаст ошибку "Не удалось обновить подключение".К сообщению приложен файл: kniga.xlsb (46.8 Kb)
Здесь находится весь макрос
Application.OnTime Now + TimeValue("00:00:02"), wb.name & "!ОбновлениеПодключений"
При добавлении переменной Цитата
wb.name & "!ОбновлениеПодключений"
возникает данная ошибка. А если вот так: Application.OnTime Now + TimeValue("00:00:02"), "ОбновлениеПодключений", то ошибка не появляется, но и работать в двух книгах не получится - книга с макросом выдаст ошибку "Не удалось обновить подключение".К сообщению приложен файл: kniga.xlsb (46.8 Kb)
Здесь находится весь макросevgenyforever
Сообщение отредактировал evgenyforever - Четверг, 28.09.2023, 15:31
Ответить
Сообщение Application.OnTime Now + TimeValue("00:00:02"), wb.name & "!ОбновлениеПодключений"
При добавлении переменной Цитата
wb.name & "!ОбновлениеПодключений"
возникает данная ошибка. А если вот так: Application.OnTime Now + TimeValue("00:00:02"), "ОбновлениеПодключений", то ошибка не появляется, но и работать в двух книгах не получится - книга с макросом выдаст ошибку "Не удалось обновить подключение".К сообщению приложен файл: kniga.xlsb (46.8 Kb)
Здесь находится весь макросАвтор - evgenyforever Дата добавления - 28.09.2023 в 15:30
mgt
Дата: Четверг, 28.09.2023, 16:20 |
Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 102
Репутация:
26
±
Замечаний:
0% ±
Excel 2010
[vba]Код
Private Sub ОбновлениеПодключений() Dim i As Long Dim wb As Workbook Set wb = ThisWorkbook On Error Resume Next Do wb.Worksheets("Лист 1").Range("A1:A501").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Application.OnTime Now + TimeValue("00:00:02"), Run(wb.Name & "!Module1.ОбновлениеПодключений") 'впишите вместо Module1 правильное название модуля End Sub
[/vba]
[vba]Код
Private Sub ОбновлениеПодключений() Dim i As Long Dim wb As Workbook Set wb = ThisWorkbook On Error Resume Next Do wb.Worksheets("Лист 1").Range("A1:A501").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Application.OnTime Now + TimeValue("00:00:02"), Run(wb.Name & "!Module1.ОбновлениеПодключений") 'впишите вместо Module1 правильное название модуля End Sub
[/vba] mgt
Ответить
Сообщение [vba]Код
Private Sub ОбновлениеПодключений() Dim i As Long Dim wb As Workbook Set wb = ThisWorkbook On Error Resume Next Do wb.Worksheets("Лист 1").Range("A1:A501").QueryTable.Refresh BackgroundQuery:=False i = i + 1 DoEvents Loop While Err.Number <> 0 And i < 10 If Err.Number <> 0 Then MsgBox "Не удалось обновить подключение!" Exit Sub End If Application.OnTime Now + TimeValue("00:00:02"), Run(wb.Name & "!Module1.ОбновлениеПодключений") 'впишите вместо Module1 правильное название модуля End Sub
[/vba] Автор - mgt Дата добавления - 28.09.2023 в 16:20
evgenyforever
Дата: Понедельник, 02.10.2023, 20:45 |
Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация:
0
±
Замечаний:
0% ±
Excel 2016
mgt , Спасибо! 'впишите вместо Module1 правильное название модуля
Переименовал на [vba]Код
Run(wb.Name & "!Module2.ОбновлениеПодключений")
[/vba] и при открытии другой книги одновременно с запуском макроса ошибка ушла, действительно, данное решение работает, но макрос перестал обновлять ячейку A501 каждые 2 секунды, как это было задумано вот этим макросом:Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False
и Установка таймера. Application.OnTime Now + TimeValue("00:00:02")
Т.е. макрос запускается один раз и все, а должен чтобы обновление (Refresh) ячейки A501 происходило каждые 2 сек. Возможно дополнить до нужного решения?
mgt , Спасибо! 'впишите вместо Module1 правильное название модуля
Переименовал на [vba]Код
Run(wb.Name & "!Module2.ОбновлениеПодключений")
[/vba] и при открытии другой книги одновременно с запуском макроса ошибка ушла, действительно, данное решение работает, но макрос перестал обновлять ячейку A501 каждые 2 секунды, как это было задумано вот этим макросом:Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False
и Установка таймера. Application.OnTime Now + TimeValue("00:00:02")
Т.е. макрос запускается один раз и все, а должен чтобы обновление (Refresh) ячейки A501 происходило каждые 2 сек. Возможно дополнить до нужного решения?evgenyforever
Сообщение отредактировал evgenyforever - Понедельник, 02.10.2023, 20:45
Ответить
Сообщение mgt , Спасибо! 'впишите вместо Module1 правильное название модуля
Переименовал на [vba]Код
Run(wb.Name & "!Module2.ОбновлениеПодключений")
[/vba] и при открытии другой книги одновременно с запуском макроса ошибка ушла, действительно, данное решение работает, но макрос перестал обновлять ячейку A501 каждые 2 секунды, как это было задумано вот этим макросом:Worksheets("Лист 1").Range("A500").QueryTable.Refresh BackgroundQuery:=False
и Установка таймера. Application.OnTime Now + TimeValue("00:00:02")
Т.е. макрос запускается один раз и все, а должен чтобы обновление (Refresh) ячейки A501 происходило каждые 2 сек. Возможно дополнить до нужного решения?Автор - evgenyforever Дата добавления - 02.10.2023 в 20:45