Как лучше организовать экспорт в таблицу Excel

Программирование на Visual Basic for Applications
ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Как лучше организовать экспорт в таблицу Excel

Сообщение ger_kar » 12.07.2011 (Вт) 10:48

Имеются формы налоговой отчетности выполненые в Excel (Образец прилагается). Задача - упростить экспорт данных в такую форму из других приложений, для чего в форму нужно встроить процедуры автоматизирующие этот процесс. Процесс экспорта должен быть максимально простым для того кто будет писать процедурв экспорта (это буду не я :) ). Для этого решил организовать экспорт по следующему принципу:
Отправляющая (Экспортирующая строна)
Код: Выделить всё
Sub Export()   
    Dim objXL As New Excel.Application
    Dim objWorkBook As Workbook
    Set objXL = CreateObject ("Excel.Application")
    Set objWorkBook = objXL.Open ("Путь к форме")
    'Вызываем из формы ф-цию ExportData и передаем в качастве параметра одномерный массив
    'парных значений: 1 - номер ячейки (виден на форме) и 2 - соответствующее значение которое туда нужно записать
    objXL.Run "ExportData", Array("103", "Наименование")
End Sub

Соответственно после выполнения приведенного кода в ячейке с номером 103, должена появиться надпись Наименование.
Теперь собственно сам вопрос:
С моей колокольни такой механизм кажеться простым и удобным для конечного пользователя (программиста который должен будет экспортировать данные), но пользователь может думать и иначе. Вас как посторонних наблюдателей прошу оценить (удобно или нет), достигнута ли цель, сделать критические замечания, ну и поделиться своими идеями.
Вложения
STI-080.jpg
STI-080.jpg (154.23 Кб) Просмотров: 3109
Бороться и искать, найти и перепрятать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение alibek » 12.07.2011 (Вт) 11:41

Не вижу ничего удобного и простого.
Если есть Excel 2007 или старше, советую использовать XML для переноса данных.
Нужно один раз настроить схему данных, после чего импорт/экспорт действительно будет простым и автоматическим. И достаточно удобным. И даже без VBA-кода.

Если нравится спагетти-код, то можно и так, но конечно не по одной ячейке. Используй вложенные UDT или классы, чтобы все данные передавать в одном мембере.
Lasciate ogni speranza, voi ch'entrate.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение ger_kar » 12.07.2011 (Вт) 12:14

alibek писал(а):Если нравится спагетти-код
:) Первый раз слышу про такой код :)
alibek писал(а):Если есть Excel 2007 или старше
Нужен универсальный вариант, работающий с любым Excel.
alibek писал(а):то можно и так, но конечно не по одной ячейке

Ну естественно, что не по одной, точнее можно и по одной (это уже как пользователю будет удобно), а можно и все сразу массивом.
Тут естественно возникает вопрос, как лучше? Одномерным и парными значениями (номер, значение), или двухмерным (одна строка например номера, а другая значения), а можно и два варианта разом.
alibek писал(а): Используй вложенные UDT
Кто такие? Ни разу не знаю ;) :) А если серьезно можно немного пролить свет на эту загадочную абревиатуру?
alibek писал(а):или классы
В смысле передавать класс, в котором свойства это номера ячеек (название ячеек), и значения этих свойств соответственно? Но мне то в принципе без разницы, а будет ли пользователю удобно городить огород с классом?
alibek писал(а):чтобы все данные передавать в одном мембере.
Вот и еще одно загадочное название ;) "Мембер"! Звучит загадочно, но каким то внутренним чутьем чую, что его можно заменить знакомым всем словом "Сеанс"?
Бороться и искать, найти и перепрятать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение alibek » 12.07.2011 (Вт) 15:11

UDT — User Defined Type.
Код: Выделить всё
Type Data
  INN As String
  OKPO As String
  Address As String
  PeriodStart As Date
  PeriodEnd As Date
  ...
End Type

Или же использовать вложенные UDT, сгруппированные по смыслу.
Или использовать аналогичным образом устроенные классы (в простейшем случае без кода, только с публичными свойствами).

Но еще лучше использовать XML.
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение alibek » 12.07.2011 (Вт) 15:12

ger_kar писал(а):"Мембер"! Звучит загадочно, но каким то внутренним чутьем чую, что его можно заменить знакомым всем словом "Сеанс"?

Нет, не сеанс.
http://lingvopro.abbyyonline.com/ru/Sea ... 4464bcb97a
В данном случае его можно понять, как "аргумент процедуры".
Lasciate ogni speranza, voi ch'entrate.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение ger_kar » 12.07.2011 (Вт) 15:39

alibek писал(а):UDT — User Defined Type.
А, так это банальные пользовательские типы так зашифровались ;) . Это я знаю, и не просто знаю, а еще и широко применяю :) , но блин не разу не видел такой абревиатуры UDT. Это наверное из англоязычных источников, которые я не читаю, ибо не силен в языках :) . Спасибо за разъяснение.
alibek писал(а):Но еще лучше использовать XML.
Здесь есть некоторые сомнения. Во первых не во всех версиях Excel это будет работать, а во вторых не все наверное знают, как организовать экспорт с его участием, да и можно ли это сделать в других приложениях в 1С например? Тут я думаю нужно спросить начинающего, удобен ли ему будет экспорт через XML, UDT или класс. ИМХО конечно через XML в данном случае экспорт оптимален, если это поддерживается в экспортируемом приложении и любой, даже начинающий программер это осилит, но вопрос - осилит ли?
alibek писал(а):Нет, не сеанс.
Вот блин я затупил, я же блин это слово на англиском вижу, чуть ли не каждый день в Объек браузере, но почему-то не сопоставил эти слова, а когда полез по ссылке в словарь сразу прозрел. Но в первоначальном виде я принял его за новый термин и идеи его перевести даже не возникло.
Бороться и искать, найти и перепрятать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение alibek » 12.07.2011 (Вт) 15:48

ger_kar писал(а):Во первых не во всех версиях Excel это будет работать, а во вторых не все наверное знают, как организовать экспорт с его участием, да и можно ли это сделать в других приложениях в 1С например?

Такое впечатление, что ты не понимаешь сказанного мною.
Ты можешь разработать для XLS-файла схему данных. В этом случае лист книги будет являтся печатной формой, а источником данных для этой формы будет XML-файл, соответствующий заданной схеме данных. Ничего экспортировать в таблицу Excel не нужно, нужно просто напечатать нужные записи.
А экспорт в XML сейчас может осуществлять любая программа, даже 1С.
Lasciate ogni speranza, voi ch'entrate.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение ger_kar » 12.07.2011 (Вт) 18:31

alibek писал(а):Такое впечатление, что ты не понимаешь сказанного мною.
Может я скорее не правльно выразился или что-то изложил непонятно. Постараюсь устранить непонятки и пробелы. Есть формы, их много, около 80 шт. и все разные. Формы создаются в Excel 2003, но важно, что-бы они без переделки могли открываться в Excel разных версий 2000, 2003, 2007, 2010. Если отключать, подключенную по умолчанию библиотеку "MS Office xx Object Library", то все прекрасно работает на разных версиях Офиса, но стоит ее подключить, траблы с совместимотью начинаются даже с Office 2003 с разными сервис паками. Теперь про XML. Для его обработки нужно подключить библиотеку MSXML x.x, которая существуют в разных версиях. В итоге, как я думаю, начнуться траблы с совместимостью. Избежать их можно только написав свой парсер, но тут будут другие грабли. Экспорт можно будет осуществить только через файл. Т.е. примерно получится так: сначала осуществляется выгрузка в XML файл, потом нужно открыть форму, которая откроет этот XML файл и извлечет нужные данные, ну и где удобство? В моем случае создал объект, вызвал функцию, передал массив. Быстро и просто.
Бороться и искать, найти и перепрятать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение alibek » 12.07.2011 (Вт) 19:44

Действительно, ты ничего не понял.
Lasciate ogni speranza, voi ch'entrate.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение ger_kar » 12.07.2011 (Вт) 19:49

Может и не понял, тебе с твоей высоты полета оно наверное виднее, только я сам не пойму, что я не понял :) Если есть возможность объясни, буду благодарен.
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1957
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение ger_kar » 13.07.2011 (Ср) 10:54

Что Алибек, ушел в гухой отказ и несознанку ;), испугавшись моей непроходимой дремучести? (шутка). А вообще я конечно дремучь, но вполне обучаем :)
Бороться и искать, найти и перепрятать

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как лучше организовать экспорт в таблицу Excel

Сообщение alibek » 13.07.2011 (Ср) 11:17

Это тот случай, когда лучше один раз увидеть, чем сто раз услышать.
Запусти Excel 2007/2010, создай схему данных и свяжи книгу с этой схемой данных и привязанным источником данных в виде XML-файла.
И поэкспериментируй с появившейся панелью инструментов.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList