Этот забавный диапазон, очевидно, есть.Что вы можете сделать, так это контролировать размер копируемых данных.Если вы можете установить значимое максимальное значение для ширины таблицы, то вы можете ограничить размер следующим образом:
const MAXWID = 1000
Dim r As Range
If tbl.Range.Columns.Count > MAXWID Then
Set r = tbl.Range.Resize(, MAXWID)
Else
Set r = tbl.Range
End If
r.Copy Destination:=trg.Range("B1")
С высотой таблицы также могут происходить забавные вещи, поэтому вы можете захотеть реализоватьэто для другого измерения.Для добавления таблиц вам нужно знать, где находится первая пустая строка:
FirstEmptyRow = trg.Range("B1").SpecialCells(xlCellTypeLastCell).Row + 1
r.Copy Destination:=trg.Cells(FirstEmptyRow, "B")
Для манипулирования листами вам нужно использовать On Error ...
, например:
Application.DisplayAlerts = False
On Error Resume Next
Set trg = wrk.Sheets("Master")
If Err.Number = 0 Then ' sheet exists
trg.Usedrange.Delete ' delete all existing data -> have a clean sheet
Else ' sheet doesn't exist, Add new worksheet as the first worksheet
Set trg = wrk.Worksheets.Add(Before:=wrk.Worksheets(1))
If Err.Number <> 0 Then < sheet is not added, handle error...>
trg.Name = "Master"
End If
On Error Goto 0
Application.DisplayAlerts = True
Стоит взятьвремя узнать, как работает обработка ошибок в VBA.
И наконец: используйте Option Explicit
.Это платит.