PasteSpecial VBA с форматом и диапазоном - PullRequest
0 голосов
/ 10 декабря 2018

Привет У меня есть следующий код:

Sub test()
    Dim objData As DataObject ' Set a reference to MS Forms 2.0
    Dim sHTML As String
    Dim sSelAdd As String
    Dim rng As Range

    Cells(2, 7).Value = Cells(2, 7).Value 
    Set rng = ActiveSheet.Cells(2, 7)

    Set objData = New DataObject
    sHTML = rng.Text
    objData.SetText sHTML
    objData.PutInClipboard
    ActiveSheet.PasteSpecial Format:="Unicode Text"
End Sub

Однако мне было интересно, есть ли способ использовать этот метод:

ActiveSheet.PasteSpecial Format:="Unicode Text"

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

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Я нашел это на работу:

Private Sub Worksheet_Activate()
 Dim objData As DataObject ' Set a reference to MS Forms 2.0
    Dim sHTML As String
    Dim sSelAdd As String
    Dim rng As Range

    Cells(1, 7).Value = Cells(1, 7).Value
    Set rng = ActiveSheet.Cells(1, 7)

    Set objData = New DataObject
    sHTML = rng.Text
    objData.SetText (sHTML)
    objData.PutInClipboard
    rng.Select
   Worksheets("GridData").Range("G1").Select
    ActiveSheet.PasteSpecial Format:= _
 "Unicode Text"
End Sub
0 голосов
/ 11 декабря 2018

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

Selection.PasteSpecial Format:="Unicode Text"

Если вы хотите определить местоположение в коде, вы можете сделать что-то вродеэто:

Range("A1").PasteSpecial Format:="Unicode Text"

Редактировать: Сегодня я узнал, что Range.PasteSpecial отличается от Worksheet.PasteSpecial.

Похоже, вы можете выбрать, куда вы хотите вставить данные с помощьювыбрать ячейку, прежде чем пытаться вставить.Это, кажется, делает трюк для меня:

Sub test()
    Dim objData As DataObject ' Set a reference to MS Forms 2.0
    Dim sHTML As String
    Dim sSelAdd As String
    Dim rng As Range

    Cells(2, 7).Value = Cells(2, 7).Value 
    Set rng = ActiveSheet.Cells(2, 7)

    Set objData = New DataObject
    sHTML = rng.Text
    objData.SetText sHTML
    objData.PutInClipboard
    rng.Select '<----Add this line.
    ActiveSheet.PasteSpecial Format:="Unicode Text"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...