Имя: Пароль:
1C
 
Как по ОЛЕ передать текст макроса Екселю (возможно я не оригинален)
0 spock
 
03.03.05
16:50
Что-то поиском ничего не нашел.
Или на пальцах расскажите
Или ссылку
плиз.
1 Оборотень
 
03.03.05
16:52
Есть для Word-а заготовка, в Eкселе не пробовал

Процедура Сформировать()
    Попытка    
         W=СоздатьОбъект("Word.Application");
    Исключение
         Возврат;
    КонецПопытки;
    W.Documents.Add();
    i = W.VBE.ActiveVBProject.VBComponents.Count();
    W.VBE.ActiveVBProject.VBComponents.Add (1);
    W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines (1, "Sub Golif()");
    W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines (2, "MsgBox " + """" + "Работает" + """");
    W.VBE.ActiveVBProject.VBComponents.Item(i + 1).CodeModule.InsertLines (3, "End Sub");
    W.Application.Run ("Golif");
    W="";
КонецПроцедуры
2 fixin
 
03.03.05
17:27
(1) КРУТО! БЛИН, какой простор открывается... А вот еще бы знать, как программно разрешить запуск ентого макроса, не задавая юзеверю вопросов, гыгыгы...
3 Fynjy
 
03.03.05
18:21
(2)Посмотри любой макро вирус. Сразу узнаешь.
4 spock
 
03.03.05
19:08
2(1) Угу, спасибо. Направление верное.
А вот для Екселя, например...
.
Процедура Сформировать()
 Перем ИмяФайла;
 
 XLS    = CreateObject("Excel.Application");
 Книги = XLS.Workbooks;
 РабочаяКнига = Книги.Add();
 КолВоПроектов     =  XLS.ActiveWorkbook.VBProject.VBComponents.Count();
 Проект             = XLS.ActiveWorkbook.VBProject.VBComponents.Add(1);
 Проект.Name         = "ExlMacro1c";
 Модуль             = XLS.ActiveWorkbook.VBProject.VBComponents.Item(КолВоПроектов + 1).CodeModule;
 Модуль.InsertLines(1, "Sub Golif()");
 Модуль.InsertLines(2, "MsgBox " + """" + "Работает" + """");
 Модуль.InsertLines(3, "End Sub");
 XLS.Run("Golif()");
 Страница     = РабочаяКнига.Worksheets(1);
 Страница.Name= "Просто";
 XLS.Visible = 1;
КонецПроцедуры // Сформировать()
6 spock
 
04.03.05
13:53
Продолжаем тему Екселя
Как Екселем открыть файл, но чтоб он его не лочил?
Запись макроса дала следующее: "Workbooks.Open Filename:="C:\temp\tmp_0004.DBF", ReadOnly:=True"
Но при написании этого "XLS.Workbooks.Open(C:\temp\tmp_0004.DBF, -1);" в 1С имею ошибку "Microsoft Excel: Метод Open из класса Workbooks завершен неверно".
Вторым параметром 0 или 1 канает, но файл лочится.
Я уже голову поломал... какое значение ему нужно подсунуть????
7 spock
 
04.03.05
18:46
+6 Ладно, не смог я найти как не лочить файло...
Обошел другим путем.
1. Открываю в книге файл и Ексель его лочит;
2. Копирую диапозон;
3. Создаю новую книгу;
4. Вставляю скопированное;
5. Закрываю первую книгу;

Кто знает как не лочить файло, крикните плиз.

p.s. А если я получаю данные из файла через DSN (ODBC), то файл не лочится и значииииииииительно быстрее открывается.
8 romix
 
04.03.05
22:20
Если надо именно читать DBF, лучше делай это, например, через ADO (я уже не говорю про встроенные методы 1С). Пример вот здесь http://x-romix.narod.ru/#ado_dbf
9 spock
 
05.03.05
07:55
2(8)Так мне не нужно из 1С читать файл.
Я в 1С создаю его, а читать должен Excel.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс