Excel VBA: Копировать и Вставить - Ячейки копируются, но не вставляются - PullRequest
0 голосов
/ 15 октября 2018

Я новичок в VBA и работаю над написанием кода, который копирует данные из столбца в одной книге и вставляет данные в другую.

См. Мой код ниже:

Set src = Workbooks.Open("C:\Users\RP\Desktop\CopyFrom.xlsm", True, True)

Dim startRow As Integer, endRow as Integer
With src.Sheets("Sheet1")
    startRow = .Range("B:B").Find(what:="*", after:=.Range("B1")).Row
    endRow = .Range("B:B").Find(what:="", after:=.Range("B1"), searchdirection:=xlPrevious).Row
End With

src.Worksheets("Sheet1").Range("B" & startRow & ":B" & endRow).Copy
Sheets("PasteHere").Range("B1").PasteSpecial xlPasteValues

У меня есть startRow и startRow, поскольку данные находятся в столбце B, но не начинаются в ячейке B1.

Когда я запускаю макрос, я вижу, что данные из *Файл 1012 * скопирован (вокруг него есть пунктирные «муравьи», и я могу вставить его, где пожелаю).Тем не менее, в моей текущей книге нет вставленных данных.

Можете ли вы помочь мне понять это?Спасибо!

1 Ответ

0 голосов
/ 15 октября 2018

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

Set src = Workbooks.Open("C:\Users\RP\Desktop\CopyFrom.xlsm", True, True)
Set dest = Workbooks.Open("C:\Users\RP\Desktop\CopyTo.xlsm", True, True)

Dim startRow As Integer, endRow as Integer
With src.Sheets("Sheet1")
    startRow = .Range("B:B").Find(what:="*", after:=.Range("B1")).Row
    endRow = .Range("B:B").Find(what:="", after:=.Range("B1"),      searchdirection:=xlPrevious).Row
End With

dest.Worksheets("PasteHere").Range("B1").Value = _ 
    src.Worksheets("Sheet1").Range("B1").Value

Подробнее об объекте Range можно узнать здесь:

https://docs.microsoft.com/en-us/office/vba/api/excel.range(object)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...