Вот что у меня есть на данный момент. Немедленное окно показывает результат, который я хочу, но буфер обмена остается без этого результата. Я хочу, чтобы эти символы были в буфере обмена.
Sub CopyFirst()
Dim position As Integer
Dim substring As String
position = InStr(ActiveCell, " ")
If (position > 0) Then
substring = Left(ActiveCell, position - 1)
Debug.Print substring
End If
End Sub
не подходящее решение
@Alex Вы пробовали мое решение для позднего связывания?
В вашем коде еще нет ничего, что касалось бы буфера обмена. Добавьте ссылку на библиотеку Microsoft Forms 2.0, если у вас ее еще нет.
Sub CopyFirst()
Dim position As Integer
Dim substring As String
position = InStr(ActiveCell, " ")
If (position > 0) Then
substring = Left(ActiveCell, position - 1)
Dim MyText As DataObject
Set MyText = New DataObject
On Error Resume Next
MyText.setText substring
MyText.PutInClipboard
End If
End Sub
Ошибка компиляции: «Пользовательский тип не определен» в строке MyText As DataObject
@Alex Если вы хотите использовать это решение, вам понадобится раннее связывание, иначе вы должны добавить справочную библиотеку «Библиотека объектов Microsoft Forms 2.0». Альтернативой является использование позднего связывания, когда вместо этого вы объявляете объект.
@dwirony - Я добавил справочную библиотеку «Библиотека объектов Microsoft Forms 2.0» - теперь код работает так, как ожидалось - Спасибо и нутч - пометит это как ответ. Можете ли вы порекомендовать код для добавления данных из буфера обмена, когда я переименовываю файл? У меня есть код ниже, просто нужен полный код для передачи содержимого буфера обмена в качестве первого набора символов в новое имя файла: Name Range ("E1") & Range ("H" & (ActiveCell.Row)). Value As Range ( "C2") & Range ("H" & (ActiveCell.Row)). Значение
почему вы хотите использовать буфер обмена, а не общедоступную переменную?
@nutsch - не частично к какому-либо одному решению, но первая часть головоломки теперь решается с использованием буфера обмена, у вас есть код для второй части - для добавления данных из буфера обмена, когда я переименовываю файл? У меня есть код ниже, просто нужен полный код для передачи содержимого буфера обмена в качестве первого набора символов в новое имя файла: Name Range ("E1") & Range ("H" & (ActiveCell.Row)). Value As Range ( "C2") & Range ("H" & (ActiveCell.Row)). Значение
проверьте это: stackoverflow.com/questions/9022245/…
Чтобы избежать раннего связывания:
Sub CopyFirst()
Dim position As Integer
Dim substring As String
Dim MSForms_DataObject As Object
Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
position = InStr(ActiveCell, " ")
If (position > 0) Then
substring = Left(ActiveCell, position - 1)
End If
MSForms_DataObject.setText substring
MSForms_DataObject.PutInClipboard
Set MSForms_DataObject = Nothing
End Sub
просто поместите этот текст в любую пустую ячейку, а затем
Range.Copy