Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Научился управлять данными в буфере обмена. Кладем что хочешь, получаем, что кладем. Проблем нет, когда кладем, можно xml положить, можно текст с разделителями. Ты положил, ты взял. А вот если кладет другое приложение, например Excel. То там только разделители строк, а вот разделители столбов 2 пробела. Вот код, как я забираю буфер:

Private Function GetClipboard() As String
On Error GoTo dalse
Dim a As Object
Set a = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
a.GetFromClipboard
GetClipboard = a.GetText(1)
Set a = Nothing
dalse:
End Function


Вопрос, как достучаться в объекте (буфер обмена) до ячейки A3, если в буфере 5 столбиков?
25 июл 19, 14:13    [21934381]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
{1C3B4210-F441-11CE-B9EA-00AA006B1A69}: CLSID Microsoft Forms 2.1 DataObject
25 июл 19, 14:35    [21934398]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Если копировать и вставить через эту функцию
A1(тут 2 точки)B1(тут символы новой строки)
A2(тут 2 точки)B2(тут символы новой строки)

Если копировать и вставить в блокнот
A1(тут стрелка) B1(тут символы новой строки)
A2(тут стрелка) B2(тут символы новой строки)

Попробую узнать номер кода стрелки и применить Split для столбиков в строке и самих строк.
А вот как получить ячейку A2, пока не соображу как из объекта, сделать Excel объект
25 июл 19, 15:33    [21934507]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 319
JavaStudent, может объясните свою задачу? Зачем вам буфер обмена, если Excel ваш. Ведь значение ячейки можно получить другими способами.

Если по вопросу, то v = SplitСтолбцов(SplitСтрок(1))(0)
25 июл 19, 16:16    [21934575]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Кривцов Анатолий, Я копирую в Excel, а вставляю в базу SQL. Хочется проверить и получить значения ячеек. В вашем ответе не разобрался. Получаю значения ячеек в строке, между ячейками символ 9 (символ горизонтальной табуляции). В конце строки перенос строки. Хочется понять, что это Excel, что там есть ячейка A1 и тащить уже в базу.
25 июл 19, 17:47    [21934660]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Кривцов Анатолий, Или, например, ячейка красная, зеленый фон и.т.д. В зависимости от это пляшем в ту или другую сторону.
25 июл 19, 17:49    [21934665]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
Архимедофф
Member

Откуда:
Сообщений: 410
JavaStudent,

В как воспользоваться вашей функцией?
Например, копирую столбец excel и его нужно обработать в цикле. Не пойму, как получить построчно данные.
1 авг 19, 12:47    [21939748]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
ЦЦа
Member

Откуда:
Сообщений: 22
JavaStudent
Кривцов Анатолий, Я копирую в Excel, а вставляю в базу SQL. Хочется проверить и получить значения ячеек. В вашем ответе не разобрался. Получаю значения ячеек в строке, между ячейками символ 9 (символ горизонтальной табуляции). В конце строки перенос строки. Хочется понять, что это Excel, что там есть ячейка A1 и тащить уже в базу.
JavaStudent
Кривцов Анатолий, Или, например, ячейка красная, зеленый фон и.т.д. В зависимости от это пляшем в ту или другую сторону.
Тогда бросай ходить в коротких штанишках обрезанного вусмерть MSForms.DataObject и надевай брючки подлиннее. Вот здесь лежит библиотека типов, в которой описаны (с адаптацией под VB6/VBA) множество системных API, включая интерфейс IDataObject. Описание здесь (для C/C++). Понадобятся методы EnumFormatEtc, GetData, может быть QueryGetData. Понадобится почитать документацию по ним и на несколько слоёв вглубь по ссылкам. Чтобы срезать угол, можно найти утилиту, позволяющую просматривать, в каких форматах лежат данные в буфере обмена. А далее понадобится немало reverse engineering-а (т. е. понадобится терпение), чтобы из этой кучи форматов выгрести что-то, что можно разобрать до нужной степени детализации.

Удачи, Студент!
8 авг 19, 00:52    [21944257]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
Архимедофф, рисуй кнопку, вешай на нее код, что сверху. Получи строку из буфера и разбирай ее. Посмотри функцию Split.
18 авг 19, 21:56    [21952083]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
JavaStudent
Member

Откуда:
Сообщений: 97
ЦЦа, не в ту степь. Я сначала Microsoft Forms 2.1 DataObject поковыряю. Пока времени нет. Разобрал пока через разделители. Если разделителей (два символа с кодом 9) нет, значит не Excel. Но хочется все-таки объект Excel получить.
18 авг 19, 22:01    [21952087]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
Сергей Лалов
Member

Откуда: localhost SPB
Сообщений: 1410
JavaStudent
Научился управлять данными в буфере обмена. Кладем что хочешь, получаем, что кладем. Проблем нет, когда кладем, можно xml положить, можно текст с разделителями. Ты положил, ты взял. А вот если кладет другое приложение, например Excel. То там только разделители строк, а вот разделители столбов 2 пробела. Вот код, как я забираю буфер:

Private Function GetClipboard() As String
On Error GoTo dalse
Dim a As Object
Set a = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
a.GetFromClipboard
GetClipboard = a.GetText(1)
Set a = Nothing
dalse:
End Function


Вопрос, как достучаться в объекте (буфер обмена) до ячейки A3, если в буфере 5 столбиков?


Показать как писать запрос SQL к файлу Excel, а потом сразу отправить на SQL server? Без всякого буфера.
18 авг 19, 22:25    [21952094]     Ответить | Цитировать Сообщить модератору
 Re: Получить excel ячейки в буфере обмена  [new]
ЦЦа
Member

Откуда:
Сообщений: 22
JavaStudent
ЦЦа, не в ту степь.
Хорошее начало альтернативной истории...
JavaStudent
Я сначала Microsoft Forms 2.1 DataObject поковыряю. Пока времени нет. Разобрал пока через разделители. Если разделителей (два символа с кодом 9) нет, значит не Excel. Но хочется все-таки объект Excel получить.
...но у неё нет шанса случиЦЦа. Предлагаю помедитировать над скриншотом и возможности реализации подобного с помощью Microsoft Forms 2.x.

К сообщению приложен файл. Размер - 51Kb
19 авг 19, 19:21    [21952813]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить