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

Перепиши свой макрос на языке который позволяет скомпилировать твой код в исполняемый файл.
...
Рейтинг: 0 / 0
17.05.2012, 20:19
    #37799836
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Как вариант - переложить код в vbs.
Можно его так оставить, а можно скомпилировать в exe.
Но может не работать, если скрипты в системе запрещены.
...
Рейтинг: 0 / 0
18.05.2012, 08:47
    #37800187
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Hugo121Как вариант - переложить код в vbs.
Можно его так оставить ...
Вроде не сработает, если в VBA типы переменных указаны. Для каждой строки типа Dim FName as string придется тип удалять.
-----
Не люблю Progress OpenEdge.
...
Рейтинг: 0 / 0
18.05.2012, 10:11
    #37800322
Minch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Перекладывание в 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
18.05.2012, 10:41
    #37800376
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Прямо в 1С это не реализуется разве? Зачем ещё привлекать VB?
...
Рейтинг: 0 / 0
18.05.2012, 12:56
    #37800784
Minch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
AndreTM,
Смысл в том, что бы не заходить никуда. Ни в 1С, ни в excel.
Нажал на иконку на рабочем столе, и все у тебя получилось.
...
Рейтинг: 0 / 0
18.05.2012, 13:40
    #37800915
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Minch,Ну типы всего в трёх местах стереть нужно.
Сложнее разобраться с MSXML2 - я сам не делал. Но думаю что сделать можно.

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

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

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

Только вот как в 1С заменить .Справочники.ВнешниеОбработки на что-то английское?
И можно ли вообще?
Придумали тоже...
...
Рейтинг: 0 / 0
18.05.2012, 18:04
    #37801588
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Хотя вообще кириллица в 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
18.05.2012, 18:09
    #37801594
кладовщик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как из макроса Excel сделать экзешник?
Hugo121кладовщик,

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

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

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


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