Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как работать с буфером обмена ?  (Прочитано 10782 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Okkkks
Помогающий

by
Offline Offline

« : 20-03-2010 18:34 » 

Ребята! Помогите разобраться с буфером обмена. Задача выглядит так:
1. Выделить содержимое документа.
2. Скопировать содержимое документа в буфер обмена.
3. Закрыть текущий документ.
4. Создать новый документ.
5. Вставить в него текст и объекты из буфера обмена.
6. Сохранить документ под прежним именем

всё бы ничего, но 5 пункт не работает! Не могу понять почему...=((

Делаю так:

Sub Perenos()
    Selection.WholeStory
     Selection.Range.Copy
    NameD = ThisDocument.Name
 Set WordApp = New Word.Application
WordApp.Visible = True
Set DocWord = WordApp.Documents.Add
DocWord.Activate
 Selection.WholeStory
DocWord.SaveAs NameD
Selection.Range.Paste
ThisDocument.Close True
End Sub
 
Помогите найти ошибку!


Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 22-03-2010 06:54 » 

Я думаю, не работает потому, что данные сохраняются где-то локально в пределах Workbook...
Вот посмотри эти две ссылки (первая пример, вторая - русский MSDN):
http://word.mvps.org/FAQs/MacrosVBA/ManipulateClipboard.htm
http://msdn.microsoft.com/ru-ru/library/ebwdx8yh.aspx
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Okkkks
Помогающий

by
Offline Offline

« Ответ #2 : 22-03-2010 11:01 » 

Я тоже так думала (Что данные хранятся локально), но когда в новом, создавшемся документе жмёшь ctrl+v всё прекрасно вставляется. А программно не хочет. Методы GetText и SetText работают только с текстом, а мне нужно, чтобы и объекты, например рисунки, таблицы...,  копировались... =(( Что придумать ещё не знаю.... =((
Записан
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #3 : 22-03-2010 11:24 » 

Okkkks, вот так заработало:
Код: (Text)
Sub Perenos()
    Selection.WholeStory
     Selection.Range.Copy
    Dim MyData As DataObject
    Set MyData = New DataObject
    NameD = ThisDocument.Name
    Set WordApp = New Word.Application
    WordApp.Visible = True
    Set DocWord = WordApp.Documents.Add
    DocWord.Activate
    DocWord.Application.Selection.Range.Paste
    DocWord.SaveAs NameD
    ThisDocument.Close True
End Sub
Добавил 'DocWord.Application.Selection.Range.Paste'

У тебя, видимо, Selection использовался в контексте первого документа и в него же вставлял, заменяя старое значение.
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Okkkks
Помогающий

by
Offline Offline

« Ответ #4 : 22-03-2010 15:53 » 

 Улыбаюсь) baldr, огромнейшее спасибо!!! Здорово выручил... Теперь всё работает и жизнь налаживается =)) 
Записан
Ципихович Эндрю
Помогающий

ru
Offline Offline

« Ответ #5 : 30-07-2010 14:41 » new

честно говоря при такой задаче проще пользоваться просто сохранить как и всё, а то если в документе была таблица Ворд, как она корректно вставиться сам ВБА знает
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines