[VBA] Как поместить тект в буфер обмена?
Я не спец, но что такое DataObject?
У меня на этом деле ругается.
З.Ы. Сор, понимаю, что проблема не в этом.
У меня на этом деле ругается.
З.Ы. Сор, понимаю, что проблема не в этом.
что такое 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
Так должно ругаться в правильном месте

Думаю, надо явно задать тип splitString как массив строк, так как
вроде возвращается Variant Split - ом
http://www.tek-tips.com/faqs.cfm?fid=4342
З.Ы. Все равно ругается у меня на DataObject .
вроде возвращается Variant Split - ом
http://www.tek-tips.com/faqs.cfm?fid=4342
З.Ы. Все равно ругается у меня на DataObject .
А буфер не пустой?
Большое спасибо!
Поменял на
Круто
Если что, у меня 2002 офис.
Поменял на
Dim splitString As String- и все заработало
Круто
Все равно ругается у меня на DataObjectА как ругается?
Если что, у меня 2002 офис.
У меня 2003.
Можешь дать файлик посмотреть (если он не секретный просто хотелось бы понять, почему не видит это дело.
Можешь дать файлик посмотреть (если он не секретный просто хотелось бы понять, почему не видит это дело.
Вот все, что есть в этом файле (я сохраняю в шаблоне. если что, могу и весь шаблон выложить):
Даже закомментаренные msgbox-ы оставил
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 вообще есть нормальная помощь? А то та, которая идет вместе с офисом, как-то не очень, особенно навигация там паршивая