![]() |
![]() |
![]() |
|
Как по ОЛЕ передать текст макроса Екселю (возможно я не оригинален) | ☑ | ||
---|---|---|---|---|
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. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |