Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 10 ]
- vadim-bj
- рядовой
- Неактивен
- Зарегистрирован: 23.10.2010
- Сообщений: 4
- Поблагодарили: 1
Тема: Сохранить открытый файл именем из буфера обмена
Помогите, пожалуйста!
Нужно создать макрос для Word 2007, который бы при открытии автоматически сохранял файл именем из буфера обмена. Пробовал вручную,
Sub Save()
Dim MyDataObj As String
MyDataObj = GetFromClipboard
ChangeFileOpenDirectory "D:\vadim\doc\"
ActiveDocument.SaveAs fileName:=MyDataObj, fileFormat:= _
wdFormatXMLDocument, lockComments:=False, password:="", addToRecentFiles _
:=True, writePassword:="", readOnlyRecommended:=False, embedTrueTypeFonts _
:=False, saveNativePictureFormat:=False, saveFormsData:=False, _
saveAsAOCELetter:=False
ShowVisualBasicEditor = True
ActiveWindow.Close
End Sub
перечитал множество форумов, но максимальное чего добился : Run time error 5152
Я не специалист в VBA, но очень нужен этот макрос, помогите, плиз
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Сохранить открытый файл именем из буфера обмена
пошагово делайте, две строчки пройдёте
MyDataObj чему равна???????
Помоему ""
Надо так:
On Error Resume Next
Dim Data1 As New DataObject, Буфер1$
Data1.GetFromClipboard
Буфер1$ = Data1.GetText(1) 'переменная буфера обмена, последнего объекта
Может кто знает:
как присвоить переменную для объектов буфера обмена 2, 3 ???
- vadim-bj
- рядовой
- Неактивен
- Зарегистрирован: 23.10.2010
- Сообщений: 4
- Поблагодарили: 1
Re: Сохранить открытый файл именем из буфера обмена
выдает окошко compille error: User-defined type not definet на этапе Dim Data1 As NEW DATAOBJECT, Буфер1$
я так понимаю надо заменить NEW DATAOBJECT но на что?
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Сохранить открытый файл именем из буфера обмена
Public Sub SetClipboard(Obj As Variant)
Dim MyDataObj As New DataObject
MyDataObj.SetText CStr(Obj)
MyDataObj.PutInClipboard
End Sub
Public Function GetClipboard() As Variant
GetClipboard = "": On Error Resume Next
Dim MyDataObj As New DataObject
MyDataObj.GetFromClipboard: GetClipboard = MyDataObj.GetText
End Function
Public Sub ClearClipboard()
Dim MyDataObj As New DataObject
MyDataObj.SetText "": MyDataObj.PutInClipboard
End Sub
Что то я и сам запамятовал, тоже хочу спросить об этом кто знает
Но у меня работает потому что есть модуль с кодом приведённым выше
Но в то же время я его попробовал в чистом Нормал дот не получилось
Странно, подскажите кто знает????
- vadim-bj
- рядовой
- Неактивен
- Зарегистрирован: 23.10.2010
- Сообщений: 4
- Поблагодарили: 1
Re: Сохранить открытый файл именем из буфера обмена
Все, разобрался, работает!
чтобы не выдавало ошибку Compile error: User-defined type not defined на этапе
Dim MyDataObj As New DataObject ', надо поставить галку в Tools - References у Microsoft Forms 2.0 Object Library. Если нету библиотеки Microsoft Forms 2.0 Object Library, через обзор, в папке system 32 находим файл FM20.dll, и добавляем ее. Если галка стоит, снять, применить и поставить снова (мне потребовалось сделать так несколько раз). Галку убрать нельзя пока строку "Dim MyData As DataObject" не удалишь или закомментируешь.
окончательный вариант макроса:
Sub Save()
Dim strDocName As String
Dim MyDataObj As New DataObject
MyDataObj.GetFromClipboard
strDocName = MyDataObj.GetText
ChangeFileOpenDirectory "D:\vadim\doc\"
ActiveDocument.SaveAs FileName:=strDocName, FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End Sub
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Сохранить открытый файл именем из буфера обмена
Извините здесь не понял:
Если нету библиотеки Microsoft Forms 2.0 Object Library, через обзор, в папке system 32 находим файл FM20.dll, и добавляем ее
Видимо на до так:
Если нету библиотеки Microsoft Forms 2.0 Object Library, через обзор, в папке system 32 находим файл FM20.dll, и добавляем его, то есть файл, ну пусть будет её, то есть библиотеку, куда добавляем??????
И страно что Вы не делаете проверку длины содержимого буфера обмена, если по запарке там в буфере будет файл????
- vadim-bj
- рядовой
- Неактивен
- Зарегистрирован: 23.10.2010
- Сообщений: 4
- Поблагодарили: 1
- За сообщение: 1
Re: Сохранить открытый файл именем из буфера обмена
Согласен с Вами, когда спешишь и мысли бегут впереди пальцев на клавиатуре, потом самому трудно разобраться, не то что другим.
Итак:
Если нету библиотеки Microsoft Forms 2.0 Object Library в окне References - Project (Alt+F11 -> Tools - > References), то в этом же окне разыскиваем и нажимаем Browse... сразу же попадаем в папку system 32. Тут же находим FM20.dll. Нажимаем ОК. Все, библиотеки Microsoft Forms 2.0 Object Library есть в списке, ставим галочку на этой библиотеке.
Длину буфера обмена проверять не нужно, для меня, вообще-то, это к лучшему, т.к. макрос нужен для связи медицинской программы с шаблоном дневниковой записи. Программа передает в буфер название файла (комбинацию цифр, по которой в будущем будет связывать этот файл с другими данными), макрос срабатывает, называет файл цифрами из буфера обмена, и пользователь продолжает работу в новом, только что сохраненном, файле с нужным названием. При этом шаблон остается неизмененным (макрос только для этого документа). Но, если все-таки нужно внести изменения в шаблон, то нужно очистить буфер (я упрощаю Alt+PrtScr
), макрос выдает ошибку, и я редактирую шаблон. Может это, коненчно же, не рационально, но как получается, так и выкручиваемся.
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Сохранить открытый файл именем из буфера обмена
1. Спасибо по добавлению библиотеки всё понял
2. Честно говоря, не увидел разницу между:
Alt+PrtScr
и
PrtScr
3. дело Ваше можете ничего не проверять
Но Ваш код, перед тем как начать тестировать я нажал
PrtScr, это сделал специально и на строке
strDocName = MyDataObj.GetText 'ошибка 2147221
потому что нет проверки!
ну если она не нужна дело Ваше
- andrkar
- Модератор
- Неактивен
- Откуда: Томск
- Зарегистрирован: 10.03.2010
- Сообщений: 431
- Поблагодарили: 26
Re: Сохранить открытый файл именем из буфера обмена
разница между сочетаниями клавиш в том, что две кнопки приводят к копированию в буфер изображение только активного окна, которое может и не занимать весь экран.. А когда просто PrintScreen - тогда в буфер копируется изображение всего экрана!
- Ципихович Эндрю
- генерал-полковник
- Неактивен
- Зарегистрирован: 04.02.2010
- Сообщений: 506
- Поблагодарили: 23
Re: Сохранить открытый файл именем из буфера обмена
Сообщений [ 10 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сохранить открытый файл именем из буфера обмена
Если ваша деятельность связана со значительными объемами текстов, то неплохо бы досконально изучить свою версию редактора (чаще всего этим редактором является Microsoft Word). Наш сайт о Microsoft Office Word даст ответ про: noraml dotm.
Сделать это можно, прочитав специальную литературу и пообщавшись, к примеру, с другими пользователями. Наш сайт о Microsoft Office Word даст ответ про: как просмотреть файл .docx.
Многое вы почерпнете и на специализированном форуме сайта Ворд Эксперт.
Ответы на вопросы, как быстро и безболезненно отформатировать запущенный текст, разобраться с колонтитулами, написать в автоматическом режиме макрос и многое другое вы найдете на страничке нашего форума. На портале о Microsoft Office Word вы узнаете про: убрать поправки с полей в ворде.
Стили, таблицы, шрифты, заголовки. Готовые шаблоны и настройки программы для оптимальной работы. В разделе «Настройки и Форматирование» можно обсудить все существующие версии Ворда. На портале о Microsoft Office Word вы узнаете про: office 2007 открыть макрос.
Наверняка, есть функции, которые прошли мимо вас, какие-то операции можно оптимизировать. Например, предложено много способов поставить ударение в тексте, использовать функцию «Найти и Заменить» и многое другое. Наш сайт о Microsoft Office Word даст ответ про: соединение нескольких вордовских документов в один.
В разделе «Автоматизация» главное внимание уделено шаблонам, макросам и полям. Обсуждают там проблемы печати документов, гиперссылки, вставки и многое другое. На портале о Microsoft Office Word вы узнаете про: склеивается текст в ворде.
В Ворде поддается автоматизации практически все.
На форуме есть раздел, где вы можете посмотреть готовые решения или поделиться своими, есть подфорум, для заказов. На портале о Microsoft Office Word вы узнаете про: открыто диалоговое окно word.
В общем, весьма полезно будет и новичкам, и довольно продвинутым юзерам. Каждый найдет для себя небезынтересную информацию. На портале о Microsoft Office Word вы узнаете про: сжать рисунки в документа word.