Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование Clipboard

2.4K
05 февраля 2003 года
stalwart
11 / / 05.02.2003
Подскажите пож-та, каким образом скопировать текст из excela в буфер. Т.е. не ячейку, а именно содержимое ячейки.
Мне приходится сохранять книгу Excel в формате *.txt, а потом вставлять файл в документ Word, вообщем муторно. Оченно нужно.
Заранее благодарен!
267
05 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by stalwart
Подскажите пож-та, каким образом скопировать текст из excela в буфер. Т.е. не ячейку, а именно содержимое ячейки.
Мне приходится сохранять книгу Excel в формате *.txt, а потом вставлять файл в документ Word, вообщем муторно. Оченно нужно.
Заранее благодарен!



Взаимоотношения Экселя и Клипборда можно кратко описать так.
При нажатии КТРЛ+С в буфер помещаются значения выделенных ячеек, столбцы разделены табом, строки - энтером. Но при этом сам Эксель еще помнит информацию о выделенном диапазоне.
Поэтому такие интеллектуевые программы как Ворд и Эксель при вставке "вспоминают" про диапазон, и копируют формулы, форматы и т.п.
Вывод. Используй в качестве пересадочной станции менее продвинутую программу. Идеально для этих целей подходит Блокнот (Notepad).
Из Экселя копируешь в Блокнот, из Блокнота в Ворд.
Хотя, конечно, можно написать и соответствующий макрос.

2.4K
05 февраля 2003 года
stalwart
11 / / 05.02.2003
Цитата:
Originally posted by Cutty Sark


Взаимоотношения Экселя и Клипборда можно кратко описать так.


Следующий вопрос: как запустить Блокнот из excela, мне нужен способ через VBA и как через VBA управлять процессами в блокноте (т.е. вставить, скопировать, выделить). По-моему это не реально.

267
05 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by stalwart

Следующий вопрос: как запустить Блокнот из excela, мне нужен способ через VBA и как через VBA управлять процессами в блокноте (т.е. вставить, скопировать, выделить). По-моему это не реально.



Так тебе надо из ВБА это делать? Тогда сразу в Ворд вставляй. Пример такого макроса нужен?

2.4K
06 февраля 2003 года
stalwart
11 / / 05.02.2003
Цитата:
Originally posted by Cutty Sark

Так тебе надо из ВБА это делать? Тогда сразу в Ворд вставляй. Пример такого макроса нужен?


Уточняю задачу:
Существует таблица в Excel с данными по предприятию ХХХ (название, ИНН, адрес, р/с....).
Мне нужно сформировать Договор в Wordе, т.е. не забивать руками все это дело, а с помощью Visual Basica перетаскивать каждое поле в определённое место в тексте документа (сам текст поля Excel), текст догора не изменяется, клиентов куча, нужна автоматизация.
Существующая на данный момент, глючная технология:
(все делается из макроса Excel)
1) копирую ячейку
2) создаю новую книгу, всавляю туда значение
3) сохраняю книгу в формате *.txt (Unicode)
4) закрываю *.txt
5) запускаю макрос Worda из Excela, который открывает и всавляет файл в документ Word (*.txt).
Таким образом, я сохраняю штук 15 текстовых файлов, и последовательно всавляю их в Договор, в положенные места.
Можно конечно вставлять саму ячейку, но Word очень плохо работает с таблицами, отвратительно, поэтому данная схема будет ещё сложнее в реализации.
При этом приходится исправлять глючный шрифт unicode, при всавке он портит весь абзац, сбивает цетровку, жирность и т.д. (мне это очень надоело).

Прошу помочь. Если есть исходники, то покажите пож-та сам текст макроса, у меня нет возможности скачивать файлы.

267
06 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Основная идея такова. Ты подключаешься к Ворду. Примерно так (заодно создается новый документ на основании готового шаблона):

Код:
Public MSwd As Object, Doc As Object

Public Sub ПодключитьсяКWord()
'Запускаем Microsoft Word, открываем нужный шаблон
    Set MSwd = CreateObject("Word.Application")
    MSwd.Visible = True
    MSwd.ScreenUpdating = False
    MSwd.System.Cursor = 0 'wdCursorWait
    MSwd.Documents.Add ThisWorkbook.Path + "\Shablon.dot"
    DoEvents
    Set Doc = MSwd.ActiveDocument
End Sub
br /> Sub ДобавитьВОписание()
Dim PositWas As Long, PositNew As Long
Dim R1 As Object

PositWas = Doc.Range.End
Doc.Range.InsertAfter (Range("A5").Value)
Doc.Range.InsertParagraphAfter
PositNew = Doc.Range.End
Set R1 = Doc.Range(Start:=PositWas - 1, End:=PositNew - 1)
R1.Style = "Обычный"
End Sub
[\CODE]

Если что не понятно, спрашивай.
265
06 февраля 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by stalwart

Уточняю задачу:
Существует таблица в Excel с данными по предприятию ХХХ (название, ИНН, адрес, р/с....).
Мне нужно сформировать Договор в Wordе, т.е. не забивать руками все это дело, а с помощью Visual Basica перетаскивать каждое поле в определённое место в тексте документа (сам текст поля Excel), текст догора не изменяется, клиентов куча, нужна автоматизация.
Существующая на данный момент, глючная технология:
(все делается из макроса Excel)
1) копирую ячейку
2) создаю новую книгу, всавляю туда значение
3) сохраняю книгу в формате *.txt (Unicode)
4) закрываю *.txt
5) запускаю макрос Worda из Excela, который открывает и всавляет файл в документ Word (*.txt).
Таким образом, я сохраняю штук 15 текстовых файлов, и последовательно всавляю их в Договор, в положенные места.
Можно конечно вставлять саму ячейку, но Word очень плохо работает с таблицами, отвратительно, поэтому данная схема будет ещё сложнее в реализации.
При этом приходится исправлять глючный шрифт unicode, при всавке он портит весь абзац, сбивает цетровку, жирность и т.д. (мне это очень надоело).

Прошу помочь. Если есть исходники, то покажите пож-та сам текст макроса, у меня нет возможности скачивать файлы.


Да я понимаю - "мы не ищем простых путей", а стандартную процедуру слияния в Word почему бы не использовать? И никакких макросов писать не надо!

267
06 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Gauss

Да я понимаю - "мы не ищем простых путей", а стандартную процедуру слияния в Word почему бы не использовать? И никакких макросов писать не надо!



Наверное, так тоже можно. Я просто никогда не пользовался этой фичей.

2.4K
06 февраля 2003 года
stalwart
11 / / 05.02.2003
Цитата:
Originally posted by Cutty Sark
Основная идея такова. Ты подключаешься к Ворду. Примерно так (заодно создается новый документ на основании готового шаблона):

Если что не понятно, спрашивай.



Спасибо огромнейшее, ты просто спас меня. Если не трудно пришли (если есть) ещё какие-нибудь исходники по этой теме.

Еще раз большое спасибо!

265
06 февраля 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Cutty Sark


Наверное, так тоже можно. Я просто никогда не пользовался этой фичей.



Настоятельно рекомендую попробовать, это очень удобная вещь, я с ее помощью печатал сотни документов в день, один раз готовишь базу в Excel затем готовишь шаблон нужного документа в Word и с помощью мастера вставляешь нужные поля из экзеловского файла, все дальше говоришь куда сливать и идешь пить пиво, машина все делает за тебя.

267
06 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002

To stalwart:

Каких-то всеобщих процедурок у меня под рукой нет, так что придется тебе самому писать по аналогии с вышеприведенной ДобавитьВОписание.

Вот разве что еще может оказаться полезным тебе следующий набор строк:

NameDef = "C:\MyDoc\Primer.doc"
With MSwd.Dialogs(&H54)
.Name = NameDef
.AddToMru = True
.Show
End With

Он запускает в Ворде окно Save As с уже написанным именем и папкой из переменной NameDef.


To Gauss:

На досуге поэксперементирую с этим слиянием.
Конечно, бывают и случаи, когда стоит потратить время на самостоятельный макрос. Но когда перекидывать данные надо самому (а не учить этому пользователей своего софта :) ), и когда никаких макросов еще нет, предложенный тобой способ видится очень удобным.
2.4K
14 февраля 2003 года
stalwart
11 / / 05.02.2003
Цитата:
Originally posted by Cutty Sark

To stalwart:

Каких-то всеобщих процедурок у меня под рукой нет, так что придется тебе самому писать по аналогии с вышеприведенной ДобавитьВОписание.



Возникла ещё одна проблема. При таком управлении wordом из excelа возникает вопрос: "как скопировать таблицу из excela".
Cуществующая на данный момент технология:
Сохраняю файл с таблицей в формате *.xls. Вставляю связь с файлом. Но при этом юзвер не получает право на изменение этой таблички. А как выяснилось позже, ему бы очень хотелось.
doc.paste , Mswd.paste, не подходят.
Че делать подскажи пож-та.

267
14 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by stalwart


Возникла ещё одна проблема. При таком управлении wordом из excelа возникает вопрос: "как скопировать таблицу из excela".
Cуществующая на данный момент технология:
Сохраняю файл с таблицей в формате *.xls. Вставляю связь с файлом. Но при этом юзвер не получает право на изменение этой таблички. А как выяснилось позже, ему бы очень хотелось.
doc.paste , Mswd.paste, не подходят.
Че делать подскажи пож-та.



Тебе что именно нужно, чтобы в Ворде образовалась обычная Вордовская табличка, в которой были бы соответствующим образом размещены ЗНАЧЕНИЯ экселевских ячеек (короче то, что происходит, когда руками в экселе нажимаешь Ctrl+C, а потом в Ворде Ctrl+V), или чтобы в Ворде была "дверь в Эксель" с возможностью редактирования формул и т.п. (то, что происходит, если перетащить диапазон из окна Экселя в окно Ворда)?

2.4K
17 февраля 2003 года
stalwart
11 / / 05.02.2003
Цитата:
Originally posted by Cutty Sark


Тебе что именно нужно, чтобы в Ворде образовалась обычная Вордовская табличка, в которой были бы соответствующим образом размещены ЗНАЧЕНИЯ экселевских ячеек (короче то, что происходит, когда руками в экселе нажимаешь Ctrl+C, а потом в Ворде Ctrl+V), или чтобы в Ворде была "дверь в Эксель" с возможностью редактирования формул и т.п. (то, что происходит, если перетащить диапазон из окна Экселя в окно Ворда)?



Мне просто нужно ctrl+c в Excele и ctrl+v в Worde, но при условии, что управление этими процессами происходит из Excela.

267
18 февраля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by stalwart


Мне просто нужно ctrl+c в Excele и ctrl+v в Worde, но при условии, что управление этими процессами происходит из Excela.



Тогда в рамках тех подключений к Ворду, которые были описаны выше, это выглядит так:

 
Код:
Range("A1:B10").Copy
Doc.Styles("Обычный").ParagraphFormat.FirstLineIndent = 0
MSwd.Selection.Paste


Строчка c FirstLineIndent может и не понадобиться, она убирает красную строку, в абзаце.

Скорее всего, тебе надо будет сделать перед MSwd.Selection.Paste соответствующий Select.
2.4K
27 февраля 2003 года
stalwart
11 / / 05.02.2003
Цитата:
Originally posted by Cutty Sark


Тогда в рамках тех подключений к Ворду, которые были описаны выше, это выглядит так:

 
Код:
Range("A1:B10").Copy
Doc.Styles("Обычный").ParagraphFormat.FirstLineIndent = 0
MSwd.Selection.Paste


Строчка c FirstLineIndent может и не понадобиться, она убирает красную строку, в абзаце.

Скорее всего, тебе надо будет сделать перед MSwd.Selection.Paste соответствующий Select.



Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог