powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как из макроса Excel сделать экзешник?
19 сообщений из 19, страница 1 из 1
Как из макроса Excel сделать экзешник?
    #37799368
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть обработка написанная в VBA.
Она ни как не связана с ячейками эксель.
По сути считывает данные из обработок 1С и записывает их в другие файлы на фтпэшник.
Как модуль VBA преобразовать в экзешник? Так как достаточно тупо получается запускать процедуру из excel.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37799489
мразь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minch,

Перепиши свой макрос на языке который позволяет скомпилировать твой код в исполняемый файл.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37799836
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вариант - переложить код в vbs.
Можно его так оставить, а можно скомпилировать в exe.
Но может не работать, если скрипты в системе запрещены.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37800187
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Как вариант - переложить код в vbs.
Можно его так оставить ...
Вроде не сработает, если в VBA типы переменных указаны. Для каждой строки типа Dim FName as string придется тип удалять.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37800322
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перекладывание в vbs не работает.
Да на работе не в чем переписывать.
Может чего-то убрать попытаться
Dim xmlDoc As MSXML2.DOMDocument
Set xmlDoc = New DOMDocument

xmlDoc.async = False
xml_name = "C:\1c_reglament\nike_out.xml"
If xmlDoc.Load(xml_name) Then

ServName = xmlDoc.getElementsByTagName("ServName").Item(0).Text
BaseName = xmlDoc.getElementsByTagName("BaseName").Item(0).Text
UserName = xmlDoc.getElementsByTagName("UserName").Item(0).Text
Password = xmlDoc.getElementsByTagName("Password").Item(0).Text
ObrCode = xmlDoc.getElementsByTagName("ObrCode").Item(0).Text

ConnectionString = "Srvr=""" & ServName & """;Ref=""" & BaseName & """;Usr=""" & UserName & """;Pwd=""" & Password & """;"

' открываю 1С
Set V82App = CreateObject("V82.Application")
V82App.Connect (ConnectionString)

' нахожу обработку
Set СправочникОбработки = V82App.Справочники.ВнешниеОбработки
Set ЭлементСправочника = СправочникОбработки.НайтиПоКоду(ObrCode)
Set ОбработкаСсылка = ЭлементСправочника.ПолучитьОбъект()
Set ДвоичныеДанные = ОбработкаСсылка.ХранилищеВнешнейОбработки.Получить()

' сохраняю обработку в файл
TempFileName = V82App.ПолучитьИмяВременногоФайла()
ДвоичныеДанные.Записать (TempFileName)
Set form = V82App.ВнешниеОбработки.ПолучитьФорму(TempFileName)
form.Открыть

Else

' Вывожу сообщение об ошибке - не удалось прочитать файл настроек
Dim strErrText As String
Dim xPE As MSXML2.IXMLDOMParseError
' Obtain the ParseError object
Set xPE = xmlDoc.parseError
With xPE
strErrText = "Your XML Document failed to load" & _
"due the following error." & vbCrLf & _
"Error #: " & .ErrorCode & ": " & xPE.reason & _
"Line #: " & .Line & vbCrLf & _
"Line Position: " & .linepos & vbCrLf & _
"Position In File: " & .filepos & vbCrLf & _
"Source Text: " & .srcText & vbCrLf & _
"Document URL: " & .URL
End With

MsgBox (strErrText)

End If
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37800376
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прямо в 1С это не реализуется разве? Зачем ещё привлекать VB?
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37800784
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,
Смысл в том, что бы не заходить никуда. Ни в 1С, ни в excel.
Нажал на иконку на рабочем столе, и все у тебя получилось.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37800915
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minch,Ну типы всего в трёх местах стереть нужно.
Сложнее разобраться с MSXML2 - я сам не делал. Но думаю что сделать можно.

Зато потом для коррекции достаточно блокнота, и оперативно.
И всегда легко посмотреть, что же оно там делает :)
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37800940
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот в таком виде работает:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
    Dim xmlDoc
    Set xmlDoc = CreateObject("MSXML2.DOMDocument")

    xmlDoc.async = False
    xml_name = "C:\1c_reglament\nike_out.xml"
    If xmlDoc.Load(xml_name) Then

        ServName = xmlDoc.getElementsByTagName("ServName").Item(0).Text
        BaseName = xmlDoc.getElementsByTagName("BaseName").Item(0).Text
        UserName = xmlDoc.getElementsByTagName("UserName").Item(0).Text
        Password = xmlDoc.getElementsByTagName("Password").Item(0).Text
        ObrCode = xmlDoc.getElementsByTagName("ObrCode").Item(0).Text

        ConnectionString = "Srvr=""" & ServName & """;Ref=""" & BaseName & """;Usr=""" & UserName & """;Pwd=""" & Password & """;"

        ' открываю 1С
        Set V82App = CreateObject("V82.Application")
        V82App.Connect (ConnectionString)

        ' нахожу обработку
        REM Set sprobr = V82App.Справочники.ВнешниеОбработки
        REM Set ЭлементСправочника = sprobr.НайтиПоКоду(ObrCode)
        REM Set ОбработкаСсылка = ЭлементСправочника.ПолучитьОбъект()
        REM Set ДвоичныеДанные = ОбработкаСсылка.ХранилищеВнешнейОбработки.Получить()

        ' сохраняю обработку в файл
        REM TempFileName = V82App.ПолучитьИмяВременногоФайла()
        REM ДвоичныеДанные.Записать (TempFileName)
        REM Set form = V82App.ВнешниеОбработки.ПолучитьФорму(TempFileName)
        REM form.Открыть

    Else

        ' Вывожу сообщение об ошибке - не удалось прочитать файл настроек
        Dim strErrText
        ' Obtain the ParseError object
        Set xPE = xmlDoc.parseError
        With xPE
            strErrText = "Your XML Document failed to load" & _
                         "due the following error." & vbCrLf & _
                         "Error #: " & .ErrorCode & ": " & xPE.reason & _
                         "Line #: " & .Line & vbCrLf & _
                         "Line Position: " & .linepos & vbCrLf & _
                         "Position In File: " & .filepos & vbCrLf & _
                         "Source Text: " & .srcText & vbCrLf & _
                         "Document URL: " & .URL
        End With

        MsgBox (strErrText)

    End If




Кириллицу категорически не принимает...
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801024
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, скорее всего кириллицу обойти не удастся ((
Ладно. Буду думать, может поставлю запуск макроса на открытие книги excel с последующим ее закрытием.
Спасибо всем большое за помощь.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801542
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MinchДа, скорее всего кириллицу обойти не удастся ((
Ладно. Буду думать, может поставлю запуск макроса на открытие книги excel с последующим ее закрытием.
Спасибо всем большое за помощь.
Если бы у меня была задача сделать "не заходить никуда. Ни в 1С, ни в excel.
Нажал на иконку на рабочем столе, и все у тебя получилось.", то я бы переписал эти несколько строк кода 1С на английском языке, сделал бы файл VBS и ярлык для него.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801568
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кладовщик,

Я уже начал:
Set sprobr = V82App.Справочники.ВнешниеОбработки

Только вот как в 1С заменить .Справочники.ВнешниеОбработки на что-то английское?
И можно ли вообще?
Придумали тоже...
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801588
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя вообще кириллица в vbs принимается - т.е. такое работает без проблем:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Res=MsgBox(Text,vbOkCancel+vbInformation+vbDefaultButton2,Title)
' Определяем, какая из кнопок была нажата в диалоговом окне
If Res=vbOk Then
  MsgBox "Нажата кнопка OK"
Else
    MsgBox "Нажата кнопка Отмена"
End If


Но не в именах переменных.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801594
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121кладовщик,

Я уже начал:
Set sprobr = V82App.Справочники.ВнешниеОбработки

Только вот как в 1С заменить .Справочники.ВнешниеОбработки на что-то английское?
И можно ли вообще?
Придумали тоже...
Идите на форум 1С. Насколько я помню, весь код в 1С можно писать и на английском.
1С 8.0 Описание встроенного языка.chmВстроенный язык (далее по тексту - язык) представляет собой предметно-ориентированный язык программирования, специаль­но разработанный с учетом возможности его применения не толь­ко профессиональными программистами. В частности, все опера­торы языка имеют как русское, так и англоязычное написание которые можно использовать одновременно в одном исходном тексте. Основной язык, описываемый в данной книге - русский однако для каждого оператора языка приводится его англоязыч­ный синоним.

Мне бывший нач-к рассказывал (в печали), что как-то принял какую-то конфигу, написанную на английском.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801611
кладовщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне так смутно вспоминается, что в контекстной справке в режиме редактора кода в 1С можно и на английском сразу хелп зырить. Т.е. вариант - тупо переводить построчно, не имея вообще никакого понятия об 1С.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801622
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тогда нет проблем - всего 8 строк перевести.
Если что - е 1С в глаза не видел :)
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37801624
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я! :)
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37803696
Minch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас в компании великолепный отдел 1С. Больше половины не знают как там устроена база. Да и сама база построена очень коряво.
Из-за моей прихоти переписывать там ничего не будут ((((
...
Рейтинг: 0 / 0
Как из макроса Excel сделать экзешник?
    #37804682
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minch, я думаю, что если верить кладовщику и здравому смыслу, то просто можно в коде vbs заменить ".Справочники.ВнешниеОбработки" на английский аналог.
Только его нужно найти в документации.
Ну а переменным просто придумайте имя латиницей, хоть тоже самое русское.
Но ещё раз повторю - я 1С не видел, поэтому утверждать не буду. Вдруг здравый смысл подвёл...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как из макроса Excel сделать экзешник?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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