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

Вход

Регистрация

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

 

= Мир MS Excel/Переброс данных между двумя книгами в локальной сети - Мир MS Excel

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

Доброго времени суток! Прошу помощи в моем вопросе, ломаю голову уже второй день.

Исходные данные:
1) Две идентичные книги .xlsm - включают два листа. Первый лист формирует 8 переменных значений (формулами) используя данные из второго листа, содержащий список - две колонки, пополнение строк списка происходит через VBА.
2) Два компьютера в одной локальной сети.
3) Excel 2010

Процесс:
Две книги Excel запущены на двух компьютерах в локальной сети. Через форму VBA каждый принимает 1 значение (данные штрихкода) и записывает их в лист "Список" формируя строку из двух значений штрихкод и время добавления. Первый лист используя формулы по маскам считает количество 8-и переменным (общее количество, количество по маске1, по маске 2 и тд.). Затем эти данные отображаются в форме VBA в Label.caption.

Задача:
Передать 8 сформированных значений из книги1 в книгу2 и наоборот из книги 2 в книгу1 по локальной сети.
Необходимо передать данные в момент их изменения. В результате необходимо получать в реальном времени на обоих формах VBA одинаковые значения сумм 8 переменных в Label.caption. Базы остаются в каждой книге уникальными.
Все усложняется тем, что данные могут поступать одновременно с промежутком менее 1 секунды. К каждому компьютеру подключено 3 сканера штрихкодов.

Сейчас все идеально работает по отдельности, но при попытке связать две книги, например средствами Power Query и добавить код обновления запроса после каждого ввода данных - даже при 8-и переменных это занимает слишком много времени, макрос упирается в процесс обновления предыдущего запроса. При использовании совместного использования книги (через 3 файл), ограничение на обновление данных в 5 секунд.

Возможно есть способ передать значения средствами VBA? Файл прикрепляю.

Заранее большое спасибо всем откликнувшимся!
К сообщению приложен файл: Enterence_1.xlsm (34.2 Kb)


Сообщение отредактировал gobotechnolight - Понедельник, 14.06.2021, 21:44
 
Ответить
СообщениеДоброго времени суток! Прошу помощи в моем вопросе, ломаю голову уже второй день.

Исходные данные:
1) Две идентичные книги .xlsm - включают два листа. Первый лист формирует 8 переменных значений (формулами) используя данные из второго листа, содержащий список - две колонки, пополнение строк списка происходит через VBА.
2) Два компьютера в одной локальной сети.
3) Excel 2010

Процесс:
Две книги Excel запущены на двух компьютерах в локальной сети. Через форму VBA каждый принимает 1 значение (данные штрихкода) и записывает их в лист "Список" формируя строку из двух значений штрихкод и время добавления. Первый лист используя формулы по маскам считает количество 8-и переменным (общее количество, количество по маске1, по маске 2 и тд.). Затем эти данные отображаются в форме VBA в Label.caption.

Задача:
Передать 8 сформированных значений из книги1 в книгу2 и наоборот из книги 2 в книгу1 по локальной сети.
Необходимо передать данные в момент их изменения. В результате необходимо получать в реальном времени на обоих формах VBA одинаковые значения сумм 8 переменных в Label.caption. Базы остаются в каждой книге уникальными.
Все усложняется тем, что данные могут поступать одновременно с промежутком менее 1 секунды. К каждому компьютеру подключено 3 сканера штрихкодов.

Сейчас все идеально работает по отдельности, но при попытке связать две книги, например средствами Power Query и добавить код обновления запроса после каждого ввода данных - даже при 8-и переменных это занимает слишком много времени, макрос упирается в процесс обновления предыдущего запроса. При использовании совместного использования книги (через 3 файл), ограничение на обновление данных в 5 секунд.

Возможно есть способ передать значения средствами VBA? Файл прикрепляю.

Заранее большое спасибо всем откликнувшимся!

Автор - gobotechnolight
Дата добавления - 14.06.2021 в 21:36
gobotechnolight Дата: Вторник, 15.06.2021, 01:21 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Сейчас создал вспомагательный файл с общим доступом, в него загружаются 8 значений и 8 забираются. Работает, но не савсем корректно. И все же используется сохранение, которое занимает время.

Для первой книги
[vba]
Код

Sub Share()
Dim Kniga As String
Dim ITK, IOK As String

Kniga = Range("O4").Value 'путь к вспомагательной книге с общим доступом
ITK = ThisWorkbook.Name
IOK = Dir(Kniga)
GetObject (Kniga)
'Workbooks(IOK).AcceptAllChanges
Workbooks(IOK).Worksheets(1).Range("B1:B8") = Workbooks(ITK).Worksheets(1).Range("A1:A8").Value ' забрали из столбца A текущей и поместили в В share
Workbooks(ITK).Worksheets(1).Range("B1:B8") = Workbooks(IOK).Worksheets(1).Range("A1:A8").Value ' забрали из столбца A share и поместили в В текущей
Workbooks(IOK).Save
End Sub
[/vba]

Для второй книги, необходимо изменить путь к файлу в ячейке Range("O4") сетевой адрес, и изменить порядок выгрузки данных
[vba]
Код

Sub Share()
Dim Kniga As String
Dim ITK, IOK As String

Kniga = Range("O4").Value 'путь к вспомагательной книге с общим доступом
ITK = ThisWorkbook.Name
IOK = Dir(Kniga)
GetObject (Kniga)
'Workbooks(IOK).AcceptAllChanges
Workbooks(ITK).Worksheets(1).Range("B1:B8") = Workbooks(IOK).Worksheets(1).Range("B1:B8").Value
Workbooks(IOK).Worksheets(1).Range("A1:A8") = Workbooks(ITK).Worksheets(1).Range("A1:A8").Value
Workbooks(IOK).Save
End Sub
[/vba]
 
Ответить
СообщениеСейчас создал вспомагательный файл с общим доступом, в него загружаются 8 значений и 8 забираются. Работает, но не савсем корректно. И все же используется сохранение, которое занимает время.

Для первой книги
[vba]
Код

Sub Share()
Dim Kniga As String
Dim ITK, IOK As String

Kniga = Range("O4").Value 'путь к вспомагательной книге с общим доступом
ITK = ThisWorkbook.Name
IOK = Dir(Kniga)
GetObject (Kniga)
'Workbooks(IOK).AcceptAllChanges
Workbooks(IOK).Worksheets(1).Range("B1:B8") = Workbooks(ITK).Worksheets(1).Range("A1:A8").Value ' забрали из столбца A текущей и поместили в В share
Workbooks(ITK).Worksheets(1).Range("B1:B8") = Workbooks(IOK).Worksheets(1).Range("A1:A8").Value ' забрали из столбца A share и поместили в В текущей
Workbooks(IOK).Save
End Sub
[/vba]

Для второй книги, необходимо изменить путь к файлу в ячейке Range("O4") сетевой адрес, и изменить порядок выгрузки данных
[vba]
Код

Sub Share()
Dim Kniga As String
Dim ITK, IOK As String

Kniga = Range("O4").Value 'путь к вспомагательной книге с общим доступом
ITK = ThisWorkbook.Name
IOK = Dir(Kniga)
GetObject (Kniga)
'Workbooks(IOK).AcceptAllChanges
Workbooks(ITK).Worksheets(1).Range("B1:B8") = Workbooks(IOK).Worksheets(1).Range("B1:B8").Value
Workbooks(IOK).Worksheets(1).Range("A1:A8") = Workbooks(ITK).Worksheets(1).Range("A1:A8").Value
Workbooks(IOK).Save
End Sub
[/vba]

Автор - gobotechnolight
Дата добавления - 15.06.2021 в 01:21
gobotechnolight Дата: Вторник, 15.06.2021, 13:53 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

В предыдущем посте есть закоменченный код
[vba]
Код
Workbooks(IOK).AcceptAllChanges
[/vba]
который по идее должен вносить и обновлять изменения без сохранения, но он не работает.
Возможно, есть способ обновления общей книги без сохранения изменений, как раньше писал это возможно решить средствами самого Excel. При использовании совместного использования можно установить интервал синхронизации данных. но он ограничен от 5 мин и более. мне необходимо выполнять синхронизацию совместно с выполнением кода.


Сообщение отредактировал gobotechnolight - Вторник, 15.06.2021, 13:56
 
Ответить
СообщениеВ предыдущем посте есть закоменченный код
[vba]
Код
Workbooks(IOK).AcceptAllChanges
[/vba]
который по идее должен вносить и обновлять изменения без сохранения, но он не работает.
Возможно, есть способ обновления общей книги без сохранения изменений, как раньше писал это возможно решить средствами самого Excel. При использовании совместного использования можно установить интервал синхронизации данных. но он ограничен от 5 мин и более. мне необходимо выполнять синхронизацию совместно с выполнением кода.

Автор - gobotechnolight
Дата добавления - 15.06.2021 в 13:53
Serge_007 Дата: Вторник, 15.06.2021, 14:00 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Здравствуйте

Цитата gobotechnolight, 14.06.2021 в 21:36, в сообщении № 1 ()
...при попытке связать две книги, например средствами Power Query...
Зачем Вам PQ, если Вы работаете с кодом VBA?
Просто передавать значения из книги в книгу по нужному событию не вариант?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Цитата gobotechnolight, 14.06.2021 в 21:36, в сообщении № 1 ()
...при попытке связать две книги, например средствами Power Query...
Зачем Вам PQ, если Вы работаете с кодом VBA?
Просто передавать значения из книги в книгу по нужному событию не вариант?

Автор - Serge_007
Дата добавления - 15.06.2021 в 14:00
gobotechnolight Дата: Вторник, 15.06.2021, 14:05 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

В том то и вопрос как это сделать по в локальной сети на разных компах. Выше я написал код через файл посредник у которого совместное использование, но это не решение. Если есть возможность указать сетевой путь до файла. Но здесь и нужна подсказка.

Один файл открыт на одном компе второй на другом и они оба активно меняют значения в 8 ячейках. Необходимо синхронизовать эти значения в обоих файлах


Сообщение отредактировал gobotechnolight - Вторник, 15.06.2021, 14:09
 
Ответить
СообщениеВ том то и вопрос как это сделать по в локальной сети на разных компах. Выше я написал код через файл посредник у которого совместное использование, но это не решение. Если есть возможность указать сетевой путь до файла. Но здесь и нужна подсказка.

Один файл открыт на одном компе второй на другом и они оба активно меняют значения в 8 ячейках. Необходимо синхронизовать эти значения в обоих файлах

Автор - gobotechnolight
Дата добавления - 15.06.2021 в 14:05
gobotechnolight Дата: Вторник, 15.06.2021, 14:47 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Зачем Вам PQ, если Вы работаете с кодом VBA?

Так я про это и спрашиваю
Цитата gobotechnolight, 14.06.2021 в 21:36, в сообщении № 1 ()
Возможно есть способ передать значения средствами VBA?

уже привел несколько примеров как я пытаюсь решить это средствами VBA, но у меня не получается передать данные напрямую.
Прошу помощи у знатаков!
 
Ответить
Сообщение
Зачем Вам PQ, если Вы работаете с кодом VBA?

Так я про это и спрашиваю
Цитата gobotechnolight, 14.06.2021 в 21:36, в сообщении № 1 ()
Возможно есть способ передать значения средствами VBA?

уже привел несколько примеров как я пытаюсь решить это средствами VBA, но у меня не получается передать данные напрямую.
Прошу помощи у знатаков!

Автор - gobotechnolight
Дата добавления - 15.06.2021 в 14:47
Serge_007 Дата: Вторник, 15.06.2021, 15:52 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Цитата gobotechnolight, 15.06.2021 в 14:05, в сообщении № 5 ()
Один файл открыт на одном компе второй на другом
Пропустил это условие...

Цитата gobotechnolight, 15.06.2021 в 14:05, в сообщении № 5 ()
написал код через файл посредник у которого совместное использование, но это не решение
Почему нет?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата gobotechnolight, 15.06.2021 в 14:05, в сообщении № 5 ()
Один файл открыт на одном компе второй на другом
Пропустил это условие...

Цитата gobotechnolight, 15.06.2021 в 14:05, в сообщении № 5 ()
написал код через файл посредник у которого совместное использование, но это не решение
Почему нет?

Автор - Serge_007
Дата добавления - 15.06.2021 в 15:52
gobotechnolight Дата: Вторник, 15.06.2021, 18:12 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Почему нет?


Для обновленя необходимо сохранение файла посредника, в этот момент могут поступить данные со второго или тогоже компа. На каждом компе по 3 сканера штрихкодов, и иногда данные поступают совместно. сохранение замедляет процесс. нужен код обнавления совместной книги, так-как стандартными средствами обнвление происходит минимально раз в мин.
 
Ответить
Сообщение
Почему нет?


Для обновленя необходимо сохранение файла посредника, в этот момент могут поступить данные со второго или тогоже компа. На каждом компе по 3 сканера штрихкодов, и иногда данные поступают совместно. сохранение замедляет процесс. нужен код обнавления совместной книги, так-как стандартными средствами обнвление происходит минимально раз в мин.

Автор - gobotechnolight
Дата добавления - 15.06.2021 в 18:12
bmv98rus Дата: Четверг, 17.06.2021, 09:34 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4099
Репутация: 766 ±
Замечаний: 0% ±

Excel 2013/2016
Делайте файл посредник не XLS a текстовый файл. При этом лучше 2. записываете измененя на одном ПК в один файл, читаете из него на другом , и наоборот. Данные файловые операции намного легче. Но в целом надо просто переходить от таблиц Excel к таблицам СУБД. Даже файл Access помог бы.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеДелайте файл посредник не XLS a текстовый файл. При этом лучше 2. записываете измененя на одном ПК в один файл, читаете из него на другом , и наоборот. Данные файловые операции намного легче. Но в целом надо просто переходить от таблиц Excel к таблицам СУБД. Даже файл Access помог бы.

Автор - bmv98rus
Дата добавления - 17.06.2021 в 09:34
gobotechnolight Дата: Четверг, 17.06.2021, 10:54 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

bmv98rus, спасибо большое! Попробую.
 
Ответить
Сообщениеbmv98rus, спасибо большое! Попробую.

Автор - gobotechnolight
Дата добавления - 17.06.2021 в 10:54
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Переброс данных между двумя книгами в локальной сети (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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