У меня есть программа, которая копирует ряд ячеек и необходимость вставлять содержимое в новую книгу, созданную в коде. я могу скопировать данные, но так или иначе буфер обмена теряет свои данные всякий раз, когда меняю книги на новый. Я считал, что копирование ячеек в массив, а затем просто копирование массива в новую книгу, но я не знаю размер массива во время кодирования, это меняется почти каждый раз, когда выполняется макрос. Как мне сохранить данные в буфере обмена, когда я меняю активную книгу?Как сохранить данные буфера обмена после смены книг в vba?
cell = "k7: l" & row
Worksheets(1).Range(cell).Select
Selection.Copy
relpath = ThisWorkbook.Path & "\" & "DispersionList.xls"
If Dir(relpath) <> "" Then
Application.Workbooks.Open (relpath)
Workbooks("DispersionList.xls").Activate
Else
Call createWorkbook
End If
Worksheets(1).Cells(7, 14).Select
Selection.PasteSpecial
End Sub
если я запускаю через код построчно и проверить буфер обмена он теряет свое содержимое на workbooks.open линии
Буфер обмена поддерживается окнами, поэтому вы не должны потерять данные, если не сообщите об этом. Если возможно, разместите свой код. Кроме того, вы можете переделать массив (x, y), если вам нужно его размер на лету. –
@PortlandRunner Это было именно мое рассуждение, когда я написал код, но каким-то образом данные таинственно исчезают, я даже пытался вручную вставить его где-то в другом месте, но буфер обмена пуст. – MiniMite
Почему бы вам не сделать один из 1) скопировать нужный диапазон ** после ** открытия книги назначения (которая должна обойти это странное состояние, которое вы испытываете) или 2) использовать копирование диапазона или запись диапазона, напрямую, а не полагаться на методы копирования/вставки. Кроме того, само собой разумеется, что вы должны удалять методы «Selection» и «Active», где это возможно, что обычно составляет 99% времени, когда они могут быть удалены. –