Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
объектная модель Excel.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Специальная вставка

Метод PasteSpecial объекта Range производит специальную вставку (special paste) из буфера обмена. Этот метод программирует выполнение на рабочем листе команды Правка►Специальная вставка.

expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

Здесь:

  • expression — объект типа Range, задающий диапазон или ссылку на верхнюю левую ячейку диапазона, в который вставляются данные из буфера обмена;

  • Paste — необязательный параметр. Определяет ту часть содержания буфера обмена, которая должна быть вставлена в диапазон. Допустимыми значениями являются следующие постоянные xlPasteType: xlPasteAll, xlPasteAllExceptBorders, xlPasteColumnWidths, xlPasteComments, xlPasteFormats, xlPasteFormulas, xlPasteFormulasAndNumberFormats, xlPasteValidation, xlPasteValues и xlPasteValuesAndNumberFormats;

  • Operation — необязательный параметр. Определяет операцию над вставляемыми данными и теми, которые содержатся в диапазоне. Допустимыми значениями являются следующие постоянные XIPasteSpecialOperation:

xlPasteSpecialOperationAdd, xlPasteSpecialOperationDivide, xlPasteSpecialOperationMultiply, xlPasteSpecialOperationNone и xlPasteSpecialOperationSubtract;

  • SkipBlanks — необязательный параметр. Принимает логические значе­ния и устанавливает, учитываются ли пустые ячейки при вставке;

  • Transpose — необязательный параметр. Принимает логические значения и устанавливает, вставляется ли диапазон транспонированным.

В приведенном ниже коде данные из диапазона С1:С5 рабочего листа Лист1 вставляются в диапазон D1:D5 того же листа, причем они не заменяют уже существующие данные, а прибавляют к ним данные из диапазона С1:С5.

With Worksheets("Лист1") .Range("C1:C5").Copy

.Range("D1:D5")

.PasteSpecial Operation:=xlPasteSpecialOperationAdd

End With

Тот же результат можно получить при помощи следующих инструкций, где метод применяется не ко всему диапазону, а только к его верхней левой ячейке:

With Worksheets("Лист1")

.Range("C1:C5").Copy

.Range("Dl").PasteSpecial Operation:=xlPasteSpecialOperationAdd

End With

Следующий код копирует данные из диапазона А1:С1 в буфер обмена и затем вставляет только значения в диапазон А5:С5.

Range("A1:C1").Сору

Range("A5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone

Вставка диапазона с транспонированием

Вставка диапазона с транспонированием осуществляется методом PasteSpecial при значении его параметра Transpose равном True. Например, в следующем коде значения из диапазона А1:С2 копируются с транспонированием в диапазон D1:E3:

Range("A1:C2").Copy

Range("D1).PasteSpecial Paste:=xlPasteAll, _

Operation:=xlNone, _

Transpose:=True

Копирование диапазона в буфер обмена как растровое изображение

Метод СopyPicture объекта Range копирует в буфер обмена содержимое указанного диапазона как растровое изображение.

CopyPicture(Appearance, Format)

Здесь:

  • Appearance — необязательный параметр, специфицирующий способ копирования диапазона. Допустимыми значениями являются следующие XlPictureAppearance - постоянные: xlPrinter и xlScreen;

  • Format — необязательный параметр, задающий формат изображения. Допустимыми значениями являются следующие XlCopyPictureFormat - постоянные: xlPrinter и xlPicture.

Например, в представленном далее коде диапазон А1:С2 копируется в буфер обмена как растровое изображение, затем он вставляется в лист, но уже как графический объект, левый верхний угол которого совпадает с соответствующим углом ячейки С7, после чего это изображение поворачивается на 45° против часовой стрелки.

Range("А1:С2").CopyPicture

Range("C7").Select

ActiveSheet.Paste

Selection.ShapeRange.IncrementRotation -45