Для копирования следующего столбца приходится повторять код заново. Как в одной строке с выделением диапазона для копирования указать несколько столбцов "умной таблицы"? Например, Range("Таблица1[Параметр1],[Параметр2]").Select. Не могу найти синтаксис при обращении к умным таблицам. Может это невозможно?
Sub sdf()
Excel.Range("ОД_паспорт.xls!ТаблицаТС") _
.ListObject _
.ListColumns("Параметр") _
.DataBodyRange.Copy
With Excel.Range("Файл2.xlsx!ТаблицаТМ") _
.ListObject _
.ListColumns("Параметр") _
.DataBodyRange
.Cells(.Count + 1).PasteSpecial
End With
End Sub
пожалуй, самый полный полный гайд по обращению к "умным" таблицам через VBA Давно висит в закладках
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Ігор Гончаренко написал: отличное описание! конкретнее и не скажешь..
Благодарю за помощь ))) Любые 2 столбца одной таблицы первого файла, в любые 2 столбца другой таблицы второго файла. Простая задача для профи, коим, я, к сожалению, не являюсь
Андрей Лящук написал: Excel.Range("ОД_паспорт.xls!ТаблицаТС")
Ошибка выдаётся на With, первый оператор обрабатывается и диапазон выделяется и копируется
Цитата
Run-time Error 1004 Method Range of Object Global failed
что неправильно задаю?
Здесь этот файл будет меняться, поэтому хотелось бы его задавать при старте процедуры через Inbox, поэтому следующий вопрос как через переменную обратиться. Нужно задать переменную как что? И как она через Inbox пройдёт? Excel.Range("ОД_паспорт.xls!ТаблицаТС")
1 файл должен быть открыт в том же процессе Excel, из которого выполняется код 2 имена файлов, таблиц и столбцов, естественно, должны совпадать с прописанными в коде
у вас в одном файле столбец
Код
МЭК адрес на контроллере
в другом файле
Код
МЭК адрес на
контроллере
Код
Sub sdf()
Dim ТаблицаТС As ListObject, ТаблицаТМ As ListObject
Set ТаблицаТС = Application.InputBox("Выберите ячейку в таблице ТаблицаТС", Type:=8).ListObject
Set ТаблицаТМ = Application.InputBox("Выберите ячейку в таблице ТаблицаТМ", Type:=8).ListObject
For Each map In Array( _
Array("Параметр"), _
Array("Присоединение"), _
Array("МЭК адрес на контроллере", _
"МЭК адрес на" & vbLf & "контроллере") _
)
ТаблицаТС.ListColumns(map(0)).DataBodyRange.Copy
With ТаблицаТМ.ListColumns(map(UBound(map))).DataBodyRange
If RowCount = 0 Then RowCount = .Count + 1
.Cells(RowCount).PasteSpecial
End With
Next
End Sub
Ничего не получается, сделал по другому, не оптимально, конечно, не все задумки реализовал. Но сейчас при помощи VBA значительно упростил задачу, сейчас время поджимает, надо уже завершить работу. Потом время появится, сяду и поразбираюсь в спокойном ритме.
Цитата
Андрей Лящук написал: Set ТаблицаТС = Application.InputBox("Выберите ячейку в таблице ТаблицаТС", Type:=8).ListObject
Здесь для выбора ячейки вызывается файл из которого видимо запускается макрос и нет возможности выбрать другой файл. Файл источника будет меняться постоянно. Задача из кучи типовых файлов заполнить один, копируя определенные столбцы