[VBA] Как поместить тект в буфер обмена?
У меня на этом деле ругается.
З.Ы. Сор, понимаю, что проблема не в этом.
что такое DataObjectЭто взято из примера из помощи к vba.
Эта штука используется для доступа к буферу обмена.
Почему именно так сделано, я тоже не понял.
В том же vb это сделано через Clipboard.
Вообще-то я использую пример несколько в ином виде.
Вот:
Dim MyData As DataObject ' это в общем модуле
Sub ConvertText
Dim splitString As Variant
Dim joinString As String
Set MyData = New DataObject
MyData.GetFromClipboard
splitString = Split(MyData.GetText(1 " ")
splitString(1) = splitString(1) & " "
For i = LBound(splitString) + 1 To UBound(splitString)
splitString(i) = Mid(splitString(i 1, 1) & "."
Next
joinString = Join(splitString)
MyData.SetText joinString
MyData.PutInClipboard
End Sub
Так должно ругаться в правильном месте

вроде возвращается Variant Split - ом
http://www.tek-tips.com/faqs.cfm?fid=4342
З.Ы. Все равно ругается у меня на DataObject .
А буфер не пустой?
Поменял на
Dim splitString As String- и все заработало

Круто

Все равно ругается у меня на DataObjectА как ругается?
Если что, у меня 2002 офис.
Можешь дать файлик посмотреть (если он не секретный просто хотелось бы понять, почему не видит это дело.
Dim MyData As DataObject
Sub PasteTextOnly
Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:=wdInLine, DisplayAsIcon:=False
End Sub
Sub ConvertAndPasteTextOnly
Dim splitString As String
Dim joinString As String
Set MyData = New DataObject
MyData.GetFromClipboard
' MsgBox "<" & MyData.GetText(1) & ">"
splitString = Split(MyData.GetText(1 " ")
' MsgBox "<" & splitString(1) & ":" & LBound(splitString) & ":" & UBound(splitString) & ">"
splitString(1) = splitString(1) & " "
For i = LBound(splitString) + 1 To UBound(splitString)
splitString(i) = Mid(splitString(i 1, 1) & "."
Next
joinString = Join(splitString)
' MsgBox "<" & joinString & ">"
MyData.SetText joinString
' MsgBox "<" & MyData.GetText(1) & ">"
' MsgBox "IV=<" & IsObjectValid(MyData.GetText(1 & ">"
MyData.PutInClipboard
PasteTextOnly
End Sub
Даже закомментаренные msgbox-ы оставил

Только вот как-то оно при работе глючит - буду разбираться...
Оставить комментарий
durka82
Следующий код почему-то не работает (ругается на последнюю строчку):Но если предыдущую строчку поменять на , ошибка пропадает
Чем ему не нравится моя строка?
Или как это лучше сделать?
п.с.: По VBA вообще есть нормальная помощь? А то та, которая идет вместе с офисом, как-то не очень, особенно навигация там паршивая