Страницы: 1
RSS
Макрос Копировать в буфер обмена, Не работает Макрос, выдаёт "User-defined type not defined". В чём разница между двумя файлами?
 
Всем добрый день!
Подскажите пожалуйста в чём разница между двумя файлами?
В одном макрос работает в другом выдаёт сообщение: "User-defined type not defined"
 
Разница в том, что во втором файле не подключена библиотека MSForms, в которой есть объект DataObject
 
lexxxich, Подскажите пожалуйста как её подключить?!
 
Нашёл!!!
Подключается в редакторе VBA Excel.
Подключить дополнительную библиотеку (Tools - References). Библиотека называется Microsoft Forms 2.0. Object Library.
Если ее нет в стандартном списке, ее можно подключить из файла (кнопка Browse). Полный путь к нужному файлу: C:\Windows\SysWOW64\FM20.DLL
 
Проще подключить так - добавляете форму, затем удаляете форму.
А ещё проще ничего вообще не подключать, а писать код так:
Код
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText ActiveCell.Formula : .PutInClipboard
End With
 
Hugo, Подскажите пожалуйста как изменить Ваш код, чтоб в буфер уходило значение: MyInfo = "Всем счастья"
Код
'Так не работает
Sub IMO_11()
MyInfo = "Всем счастья"
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
.SetText MyInfo.PutInClipboard
End With
End Sub
 
Легко - вернуть на место потерянное двоеточие :)
 
Hugo, СУПЕР !!!  :)  СПАСИБО ВАМ ОГРОМНОЕ  
 
Hugo, Подскажите пожалуйста ещё раз! Как скопировать в буфер таблицу, которой присвоено имя "MyInfo1"
Код
'Так не работает
Sub IMO_11()
MyInfo = [MyInfo1]
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
   .SetText MyInfo.PutInClipboard
   End With
End Sub


 
В буфер обмена таким образом не скопировать всю таблицу. Её можно скопировать только через метод Copy, объекта Range:
Код
Range("MyInfo1").Copy
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, Спасибо.
 
DjAlex77, по методу уважаемого Hugo, в буфер копируется, насколько я понял, только текст. (если ошибаюсь, то поправьте меня, пожалуйста)
В связи с чем удалось скопировать так:
Код
Sub IMO_11()
Dim MyInfo, sStr As String, n&, m&, i&, j&
    MyInfo = [MyInfo1]
    
    n = UBound(MyInfo, 1)
    m = UBound(MyInfo, 2)
    
    sStr = ""
    For i = 1 To n
        For j = 1 To m
            sStr = sStr & MyInfo(i, j)
            If j < m Then sStr = sStr & vbTab
        Next j
        If i < n Then sStr = sStr & vbCrLf
    Next i

   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .SetText sStr
    .PutInClipboard
   End With
End Sub
ЗЫ Ишшо ссылка по теме буфера обмена.
Изменено: JayBhagavan - 26.07.2016 09:40:46

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
JayBhagavan, Ваш код копирует только текст, а я думал возможно всю таблицу с форматированием, пользуюсь Range("MyInfo1").Copy

В любом случае Спасибо!
 
Так если нужно было стандарно копировать таблицу с форматированием - зачем вообще привлекать DataObject?
 
Цитата
Hugo написал:
Так если нужно было стандарно копировать таблицу с форматированием - зачем вообще привлекать DataObject?
Мне именно текстовое значение и надо было в буфер копировать. Вы мне с этим очень помогли, спасибо!
А про таблицу это так, довесок, подумал вдруг вашим способом можно и таблицу копировать.
 
а как  сохранить путь активной книги  в буфер обмена ? через макрос  
 
может кому пригодится
Код
Sub puti()

folderPath = Application.ActiveWorkbook.Path
myPath = Application.ActiveWorkbook.FullName
   
   sStr = folderPath & myPath
   
   With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .SetText sStr
    .PutInClipboard
   End With
End Sub

Изменено: murc - 14.11.2019 18:47:12
 
Цитата
murc написал:
folderPath = Application.ActiveWorkbook.Path
myPath = Application.ActiveWorkbook.FullName
уже содержит полный путь до файла, включая папки и расширение. Поэтому здесь достаточно такого:
Код
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    .SetText ActiveWorkbook.FullName
    .PutInClipboard
   End With
Изменено: Дмитрий(The_Prist) Щербаков - 14.11.2019 19:27:53
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх