что за формат в Clipboard при Copy Range?

Программирование на Visual Basic for Applications
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

что за формат в Clipboard при Copy Range?

Сообщение Avtopic » 03.03.2007 (Сб) 15:08

Здравствуйте!

Sheets("...").Range("A1:M4").Copy
что за формат находится в это время в Clipboard-е? ( text, picture и т д.)

А, конкретно интересует можно или нет загрузить в Clipboard искусственно некое содержимое, которое содержало бы аналогичное как при действии Sheets("...").Range("A1:M4").Copy. (А именно: Range("A1:M4") с Borders, fonts name & size, interior.color index, и все, этот список устраивает.).
Я понимаю, что это может быть внутри Exel-овкое, но кто не будь, знает, используется или нет в этом Windows-овкий Clipboard, и можно или нет, такое осуществить?

Спасибо!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Re: что за формат в Clipboard при Copy Range?

Сообщение GSerg » 03.03.2007 (Сб) 15:57

Avtopic писал(а):что за формат находится в это время в Clipboard-е? ( text, picture и т д.)

Там не формат.
Там 31 формат. И text, и picture, и даже т.д...

Avtopic писал(а):А, конкретно интересует можно или нет загрузить в Clipboard искусственно некое содержимое, которое содержало бы аналогичное как при действии Sheets("...").Range("A1:M4").Copy.

В формате RTF сформируй. http://bbs.vbstreets.ru/viewtopic.php?t=31298
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.03.2007 (Вс) 0:05

Как загрузить знаю. Не знаю что загрузить.
С текстом все ясно, а что из себя представляют Borders.LineStyle,
Borders.Weight или Interior.ColorIndex в слипбоарде, понятие не имею.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.03.2007 (Вс) 7:43

По ссылке формирование таблицы в RTF. Зацени его всё же. Excel поймёт.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.03.2007 (Вс) 14:48

Имею проблемы именно с Excel.

сформированная (по ссылке) таблица помещается в буфер обмена.
И при попытке вставить в Ворд, вставляется и программно и ручками.
А до Excel не доносит. Ручками, опция “Paste” неактивна, программно пишет “Paste... failed ”
Если, там, по ссылке, vbCFRTF заменить на vbCFText, то тогда доносит, значит, не
распознает Excel что там, в буфере а Ворд, распознает.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.03.2007 (Вс) 15:20

Скопируй таблицу excel в буфер и посмотри, что в формате rtf.
И второй вариант - ищи класс для работы с BIFF.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.03.2007 (Вс) 17:10

GSerg писал(а):Скопируй таблицу excel в буфер и посмотри, что в формате rtf.
Вообще, сам должен был догадаться :oops:

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.03.2007 (Вс) 18:26

Сделал все как вы сказали,
Скопировал реальную таблицу в буфер и посмотрел в формате rtf.
Оказывается там все просто и ясно, и легко смоделировать такое же,
но!!!

Этот же rtf без изменении посадил обратно в буфер. и опять постарался вставить с буфера. Ворд принимает Excel ругается???

Причем на этот раз попробовал все сделать и через VB6 Clipboard и через апи. Все одно и тоже.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.03.2007 (Вс) 19:01

Действительно.

:roll:

Есть ещё буферный формат XLTable.
http://search.microsoft.com/results.asp ... &q=XLTable
Сам формат пока так и не нашёл.
Ну и тогда BIFF тоже посмотри. Он там же упоминается.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.03.2007 (Вс) 23:07

Ну, далеко не пошел, но одно выяснил, что пока в прогарамме где происходит
копирование, не написал lRTF = RegisterClipboardFormat("BIFF8")

Excel не активизировал Paste, при правом клике

lRTF = RegisterClipboardFormat("XlTable") не имеет такого еффекта.

правда, вставить пока не удается, теперь уже не нравится то, что лежит в буфере. Т.е. нужно копать в сторону BIFF.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 07.03.2007 (Ср) 23:31

Avtopic писал(а):правда, вставить пока не удается, теперь уже не нравится то, что лежит в буфере. Т.е. нужно копать в сторону BIFF.


Как найдешь решение - отпиши. В принципе - было бы хорошо сделать общее решение для вставки таблички в Word и Excel...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 14.06.2007 (Чт) 14:05

После некоторого времени вернулся к этой затее.
Переворошил вес интернет, везде пишут, если хочется копировать вместе с форматом, все дороги ведут к Biff.
Информация очень скудная на эту тему, почти, что нет ее.
Везде упоминается только то, что если хочется работать через Clipboard с Excel-ем нужно представить данные в Clipboard-е по канонам Biff, и все, сутки ищу, никакой другой информации не нашел.
Нашел этот формат Biff http://sc.openoffice.org/excelfileformat.pdf
написано хуже некуда, хорошо, что понятно написано про формат Compound Document
http://sc.openoffice.org/compdocfileformat.pdf
Разобравшись во втором, опираясь на нем, разобрался в первом.

Разобранный мною бинарный код Excel файла, оказывается, представляет собой иерархию stream-ов (для примера почти пустой файл представляет 13К), с большим количеством отдельных Recоrd-ов внутри, что для чего в нем, понял, все очень сложно, по сравнению CSV или RTF.

Создал строку по этим законам, посадил в буфер и вставил в другую книгу, вставилось.
Но как я сказал, строка 13К. Практически представляет из себя, бинарный код xls файла.
Если эту строку сохранить как .xls получится Excel файл.

Для чего написал столько:
1. Как я сказал, строку создал и вставляется, но здесь может работать как раз вариант, о котором говорил GSerg выше “Excel поймет”, т.е. может быть, строка ненормальная для копи и пасте, но Excel посредством какой-то автоматизации вставляет.
2. Строка фактически, представляет целый файл Excel, с stream книги, stream листа, с SummaryInformation, с DocumentSummaryInformation, и т.д. Нигде нет информации, что можно выкинуть, из перечисленного при копи и пасте.

Очень прошу, если кто не будь, имеет какую не будь дополнительную информацию, поделитесь.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 111

    TopList  
cron