powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel to XML - ВСЁ в XML!!!!
23 сообщений из 23, страница 1 из 1
Excel to XML - ВСЁ в XML!!!!
    #36463677
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Появилась глобальная задача из прошлого века.
(MS Excel 2003)

Краткое содержание текущей ситуации:
Есть куча народа (юзера), которые используют разные Excel-файлы как клиент к БД.
Excel-файлы (клиенты) имеют довольно развитый код на VBA (формулы + макросы + формы + графики + всякая гадость).
Довольно часто возникает ситуация когда юзера что-то меняют в Excel-файле (кнопочку добавил, формулу поменял, макрос подрихтовал, другая беда)

В общем за годы работы у заказчика наступил хаос - теперь нам разгребать доверили.

Краткое содержание задачи:

Каким-то образом поддерживать версионность всех клиентов от всех юзеров.
Автоматически менять код макросов, формул, виды графиков и другой дурни у каждого клиента.
В общем сделать что-то типа синхронизации внутреннего состояния каждого Excel-файла с возможностью отката.

Что пришло в голову:

Вспомнилось, что MS строит свои форматы файлов для Офиса в формате? который теоретически можно представить в виде XML.
Погуглив и попробывав несколько таких приблуд, увидел, что они выдирают только данные со страниц, но не трогают макросы и т.п. чухню.


Вопросы:
1. Как (и/или чем) можно слить ВЕСЬ Excel-файл в XML?
2. Может кто подскажет другой подход к реализации данной задачи?

Спасибо!
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463689
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно, клиент от БД отделен или нет?
Какая СУБД?
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463722
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Никак. Проект VBA бинарен до мозга костей. Даже в xlsx-архиве от лежит файлом отдельным от остального xml.
2) Найти стену потверже, разбег подальше и как бы невзначай проводить туда заказчика.

А если серьезно, то есть да решения. Первое — сложить файлы на сервер и пусть они там хранятся как образцы, а юзеры их оттуда копируют. Второе — написать нормальное ПО взяв за основу наработанный код.

Jah loves you.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463723
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
клиент - это Excel-файл, который по ConnectionString коннектится к SQLServer и Oracle.
нам надо именно вот эти Excel-файлы конвертить в XML.
потом будем этот XML уже проверять.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463729
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, версионность с возможностью отката можно сделать малой кровью — поставить всем клиент SourceSafe и базу на сервер.

Jah loves you.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463730
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наработаннй код - это не проблема портировать,
НО
вот юзера пользуют в этом коде доооооохрена специфических Excelных функций,
которые просто так не запортируешь.

именно из-за этих функций до сих пор они сидят на Excel
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463744
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUserклиент - это Excel-файл, который по ConnectionString коннектится к SQLServer и Oracle.
нам надо именно вот эти Excel-файлы конвертить в XML.
потом будем этот XML уже проверять.

А зачем?
Правильно настроить СУБД, чтобы не принимала некорректные данные. У MSSQL для этого дохренища возможностей. Выдать пользователю образец клиентской программы. Если они чего-то дорабатывают - должны соответствовать протоколу обмена, иначе сервер не примет результат.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463752
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUserнаработаннй код - это не проблема портировать,
НО
вот юзера пользуют в этом коде доооооохрена специфических Excelных функций,
которые просто так не запортируешь.

именно из-за этих функций до сих пор они сидят на ExcelПоявилась одна мысль, но нужен пример кода с такими функциями. Хотя бы их названия.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463754
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.ProRegisteredUserклиент - это Excel-файл, который по ConnectionString коннектится к SQLServer и Oracle.
нам надо именно вот эти Excel-файлы конвертить в XML.
потом будем этот XML уже проверять.

А зачем?
Правильно настроить СУБД, чтобы не принимала некорректные данные. У MSSQL для этого дохренища возможностей. Выдать пользователю образец клиентской программы. Если они чего-то дорабатывают - должны соответствовать протоколу обмена, иначе сервер не примет результат.

вопрос не в этом... вы не на тот вопрос отвечаете... точнее я даже не задавал такого вопроса...
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463780
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AntonariyRegisteredUserнаработаннй код - это не проблема портировать,
НО
вот юзера пользуют в этом коде доооооохрена специфических Excelных функций,
которые просто так не запортируешь.

именно из-за этих функций до сих пор они сидят на ExcelПоявилась одна мысль, но нужен пример кода с такими функциями. Хотя бы их названия.

ну давайте с простого начнем:
линейная регрессия - LINEST() на русском ЛИНЕЙН()
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463804
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот в модуле есть такой код:

Public Sub REGRESSION()
Sheets("DATA").Select
Range("N2:q6").Select
Selection.FormulaArray = _
"=LINEST(I2:I" & COUNTER + 1 & ",e2:f" & COUNTER + 1 & ",TRUE,TRUE)"
...

End Sub

и вот допустим юзер возмет и поменяет его на

Public Sub REGRESSION()
Sheets("DATA").Select
Range("N2:q6").Select
Selection.FormulaArray = _
"=LINEST(I2:I" & COUNTER + 1 & ",E34:f" & COUNTER + 1 & ",TRUE,TRUE)"
...

End Sub

а я бы очень хотел вытянуть эти изменения
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463877
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что ж, мысль вполне рабочая.
Нужно вынести все макросы в VBS-скрипты, сами файлы после этого можно сохранить в XML.
Написать и раздать всем addin, который сможет подгружать, сопоставлять с xml-файлами и исполнять эти скрипты. Скрипты потребуется слегка изменить, чтобы те самые специфические функции (они являются членами класса WorksheetFunction), доступные в VBA-проекте глобально, были доступны в VBS-скрипте как члены какого-нибудь объекта. Ну и от типов придется избавляться. А вот что с формами делать, не знаю. Разве что сделать аналогичные в HTML.

C другой стороны, учитывая краткое содержание задачи все это не нужно. Зачем все держать в виде текста, если только и требуется, что поддержка версионности? SourceSafe умеет все это кроме "автоматически". Синхронизация будет происходить путем перезаписи файла целиком при выборе пункта Get latest version. Если только нет причин, по которым этого делать нельзя.

Jah loves you.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463890
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUserвот в модуле есть такой код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Sub REGRESSION()
        Sheets("DATA").Select
        Range("N2:q6").Select
        Selection.FormulaArray = _
            "=LINEST(I2:I" & COUNTER +  1  & ",e2:f" & COUNTER +  1  & ",TRUE,TRUE)"
...
        
End Sub
В нем не используется функция LINEST. В нем в ячейку записывается текст "LINEST". Это две большие разницы.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463901
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут еще такая мысль прокатилась...
А можно создавать Excel-файл "налету"? запихивать в него начинку в виде макросов?
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36463941
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще да, но это требует мутных настроек безопасности на каждом клиенте. Ибо вирусы. Кстати, антивирусы на такие манипуляции реагируют очень нервно по указанной причине.

Jah loves you.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36464016
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну мутные настройки безопасности пока опустим.
тут важна сама возможность мастерить файл клиента "на лету" с запихиванием в него всякой начинки в виде кода
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36464230
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Но только из-под самого экселя.
Ставьте ссылку на Microsoft Visual Basic for Applications Extensibility и изучайте ее возможности. А так же в поиск по VBIDE.

Jah loves you.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36464310
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUserвопрос не в этом... вы не на тот вопрос отвечаете... точнее я даже не задавал такого вопроса...

Ну, честно говоря, я отталкиваюсь от этого:
RegisteredUserВ общем за годы работы у заказчика наступил хаос - теперь нам разгребать доверили.

Может, раз уж приходится разгребать, не пытаться сделать из хаоса систематизированный хаос, а ужесточить формализацию.... Впрочем, вам виднее.

Вот тут еще недавно было похожее обсуждение, правда заглохло....
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36464484
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"приблуды" да "чухня", что за жаргон?
Создатель этого топика, ты случайно не с лысой головой и не высокого роста?
Если уж взялся за дело, то будь добр - отнесись к своему дело профессионально!
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36464784
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisteredUser,

А нужно ли в принципе, чтобы у каждого клиента был файл отличный от файла других клиентов.
Почему нельзя сделать один централизованный файл, который каждый раз считывается с сервера и оттуда запускается. В нём установить защиту от сохранения на клиентской машине, либо проверять, откуда клиент запустил свой файл
А если клиенты хотят какие-то новшества и они полезны всем, то делать их так-же централизованно.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36465450
RegisteredUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djon PlayerRegisteredUser,

А нужно ли в принципе, чтобы у каждого клиента был файл отличный от файла других клиентов.
Почему нельзя сделать один централизованный файл, который каждый раз считывается с сервера и оттуда запускается. В нём установить защиту от сохранения на клиентской машине, либо проверять, откуда клиент запустил свой файл
А если клиенты хотят какие-то новшества и они полезны всем, то делать их так-же централизованно.

это было бы очень просто...
к сожалению никакие условия работы юзеров менять нельзя.
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36465525
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у нас сделано так:
на корпоративном сайте лежит файлик ЭТАЛОН
если человек хоет работать с ним, то он скачивает его оттуда и работает
если есть обновление файла, то его выкладываем на сайт и пишем новость, что необходимо обновить файл
единственное, что плохо, изменения пользователя НИКАК не окажутся в ЭТАЛОННОМ файле
поэтому, если пользователь хочет что-то изменить он должен вас проинформировать,а вы уже внесете изменения в файл и опубликуете новую версию

либо использовать SorceSafe, как говорил Antonariy


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Excel to XML - ВСЁ в XML!!!!
    #36465533
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: RegisteredUser
> к сожалению никакие условия работы юзеров менять нельзя.

Тогда автоматизация бардака, приводит к появлению автоматизированного бардака.
Автоматизация рабочего процесса в любом случае приводит к изменениям в работе пользователей, если пользователь три дня
обрабатывал файл, потом ты написал ему макрос, который производит эту обработку за час-другой, то это не значит, что
пользователь так и будет три дня сидеть и ничего не делать. Подготовь аргументированную служебную записку со своим
видинием как должно быть, причем не просто это нужно делать так, а почему так и какие преимущества это даст. И отдай
руководству и будь готов отстаивать свою позицию.
Удачи

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel to XML - ВСЁ в XML!!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]