Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Макрос на одном ПК работает корректно, на другом возвращает значения в книгу источник
 
Дмитрий(The_Prist) Щербаков, заработало

Да, я запускаю макрос из приемника,  т.к. мне же его надо обновлять при добавлении строк в источник.

И да, заработало, вероятно эта строка кода всё меняет.
Код
Set wbПриемник = ThisWorkbook 'Workbooks.Open(файлПриемник)

Спасибо большое, буду читать про свойства в общем и ThisWorkbook в частности. Думал то в правильную сторону, в сторону AсtiveWorkbook но думалка не вывезла)

Еще раз благодарю за помощь и то что повозились в песочнице)
Макрос на одном ПК работает корректно, на другом возвращает значения в книгу источник
 
Дмитрий(The_Prist) Щербаков,  я даже не знаю что ответить.

Сейчас попробовал всё с нуля, оставил код как есть, назвал листы цифрами - результат тот же.

Если в источнике нет листа с названием "2" вылезает ошибка.
Если есть - копируется туда, при этом приемник чист.
Может быть есть разница что источник в формате .xslx, приемник .xlsm, хотя на ноуте с теми же вводными все работает.
Если есть пара свободных минут, гляньте пожалуйста файлы.

Приложу оба, может я несознательно что-то недоговариваю?)

А с азами vba это вы правы, надо, но как всегда со временем беда, пользуемся ускоренными решениями, просто файл на 5000 строк и постоянно пополняющийся на формулах очень сложно работает)
Макрос на одном ПК работает корректно, на другом возвращает значения в книгу источник
 
Дмитрий(The_Prist) Щербаков, К сожалению, всё не так просто, а я пользуюсь всевозможными источниками (включая чатжпт) при построении макросов и возможно не всегда понимаю как должно быть, давайте попробую сформулировать:

Ограничение второй ячейкой О2 сделано специально, чтобы не затягивались данные из столбцов идущих в "Таблицаисточник" дальше.

Также ограничить строки не представляется возможным, т.к. ограничение я устанавливал до первой незаполненной ячейки в столбце "А" источника, т.к. количество строк постоянно дополняется.

Я не могу определить почему ячейки копируются не в "Приёмник", а в "Источник", хотя на другом пк все работает корректно.
Цитата
С одной стороны как бы очевидно - значит в книге просто нет листа "Лист1"(может там пробел лишний какой). А с другой - почему тогда переносит данные в другую книгу? Другую - это какую и откуда она берется? А если открыть только две нужных книги и скопировать имя листа прямо из кода - что будет?
Собственно как это работает на ноутбуке
Есть две книги, источник и приемник.
При выполнении макроса на другом пк, заполненные ячейки таблицы "Источник" листа "Sheet1" с "А2" до "О2" копируются в таблицу "Приемник" на лист "Лист1" в ячейки с "P2" до "AD2", и так до последней строки где заполнена ячейка "А" таблицы "Источник".
При переносе макроса на мой пк путем копипасты и замены путей на актуальные, получаем, что до шага с открытием книги "Приемник" код выполняется, а дальше, все действия происходят только внутри таблицы "Источник", и получается что если оставить в "Источнике" только лист "Sheet1" - выкидывается ошибка 9, на шаге
Код
 Set wsПриемник = wbПриемник.Sheets("Лист1")

НО

Если добавить в таблицу "Источник" пустой лист, который создается с названием "Лист1" - ячейки превосходно в него копируются, при этом таблица "Приемник" висит открытой без изменений.

Цитата
написал:
В общем, мне кажется, что просто лист называется не "Лист1".
Названия листов менять пробовал, как и пути к файлу, оставляя кириллицу, убирая - нет разницы.

Вопрос заключается в том, что возможно, после прохода какого-то шага, работа ведется только в активной книге, а активной считается "Источник", несмотря на открытую книгу "Приемник".

Я может не совсем корректно формулирую, но постарался расписать шаг за шагом)

Изменено: Артём Б - 21.03.2023 18:05:05
Макрос на одном ПК работает корректно, на другом возвращает значения в книгу источник
 

Всем добрый день!

Есть легкое непонимание, т.к. на одном пк макрос работает корректно и переносит значения ячеек из таблицы "Таблицаисточник" в "Таблицаприемник".

При попытке скопипастить макрос с заменой путей на актуальный, выходит ошибка 9, т.к. макрос не видит листа "Лист1" в "Таблицаисточник", но если добавить лист под названием "Лист1" - все значения исправно встают куда им нужно, но не в ту книгу.

Вопрос в следующем, вероятно я как то некорректно обозначил активную книгу, куда должны падать значения.

Не мог бы кто-нибудь дать комментарий?)

Код
Sub КопироватьЯчейки()
    ' Указываем имена файлов и диапазоны ячеек для копирования
    Const файлWorkbook1 As String = "C:\Users\Timon\Desktop\Таблицаисточник.xlsx"
    Const файлWorkbook2 As String = "C:\Users\Timon\Desktop\Таблицаприемник.xlsm"
    Const диапазонDiap1 As String = "A2:O2"
    Const диапазонDiap2 As String = "P2:AD2"

    ' Открываем файлы
    Dim wbИсточник As Workbook, wbПриемник As Workbook
    Set wbИсточник = Workbooks.Open(файлWorkbook1)
    Set wbПриемник = Workbooks.Open(файлWorkbook2)

    ' Выбираем активные листы в обоих книгах
    Dim wsИсточник As Worksheet, wsПриемник As Worksheet
    Set wsИсточник = wbИсточник.Sheets("Sheet1")
    Set wsПриемник = wbПриемник.Sheets("Лист1")

    ' Находим последнюю заполненную строку в столбце A на листе источника
    Dim последняяСтрока As Long
    последняяСтрока = wsИсточник.Cells(wsИсточник.Rows.Count, "A").End(xlUp).Row

    ' Копируем данные из диапазона источника в диапазон приемника
    wsИсточник.Range(диапазонDiap1 & ":A" & последняяСтрока).Copy _
        Destination:=wsПриемник.Range(диапазонDiap2 & ":P" & последняяСтрока)


End Sub

Страницы: 1
Наверх