|
Создание Exel файла из 1С 7.7 Ø |
☑ | ||
|---|---|---|---|---|
|
0
Yura78
28.03.06
✎
10:24
|
Необходимо выполнить задание по следующему алгоритму:
1. Создать Exel файл. 2. Объединить ячейки с (2,1) по (7,1) 3. Записать в нее рисунок jpg с заданным отступом от верхнего края. 4. Записать в ячейку (2,2) значение строковое(с заданным размером и типом шрифта). 5.Задать рамку(внешнюю и внутреннюю) для ячеек с (2,1) по (7,2) 6. Сохранить файл Exel Спасибо за вниемание, Юрий. |
|||
|
1
Чучундер
28.03.06
✎
10:34
|
Не понял... Даю 2 ответа согласно сове разумению - выбирайте, какой понравится.
1. Выполняйте! 2. Озвучьте сумму оплаты... |
|||
|
2
Yura78
28.03.06
✎
10:43
|
Мне шаблон нужен. Делаю сам.Не знаю методы Exel.
Пример: ЕхФайл = СоздатьОбъект("Excel.Application"); Дальше нужны методы для этой переменной. |
|||
|
3
Денис2
28.03.06
✎
10:48
|
(2) тут
"C:\Program Files\Microsoft Office\OFFICE11\1049\VBAXL10.CHM" все методы всех переменных, нужных для работы с екселем. |
|||
|
4
Yura78
28.03.06
✎
10:56
|
Спасибо.
Может кто даст ссылку как делать на русском. |
|||
|
5
Cool Brother
28.03.06
✎
10:58
|
А если нету тут "C:\Program Files\Microsoft Office\OFFICE11\1049\VBAXL10.CHM" - поиском файла VBAXL10.CHM ищи.
|
|||
|
6
BlinOFF
28.03.06
✎
10:59
|
В экселе запусти запись макроса, сделай то что тебе нужно, а потом в редакторе visual basic посмотри что там записалось...
|
|||
|
7
Cool Brother
28.03.06
✎
11:00
|
+3) наверное не тут
"C:\Program Files\Microsoft Office\OFFICE11\1049\VBAXL10.CHM" а тут "C:\Program Files\Microsoft Office\OFFICE10\1049\VBAXL10.CHM" |
|||
|
8
Денис2
28.03.06
✎
11:01
|
(7) Гы... А у меня офис 2003 стоит :-)
|
|||
|
9
Niksis
28.03.06
✎
11:02
|
Зайди в Exel. Запусти запись макроса. Сделай что тебе надо. Открой полученный макрос. В нем увидишь процедурки, используемые Exel. Вот пример копирования столбца:
Прайс=СоздатьОбъект("Excel.Application"); Прайс.Workbooks.Open("E:\Прайс\Шаблон.xls"); ... Копир=Прайс.Worksheets(1).Columns(Симв(71)+":"+Симв(72)).Copy; Вставка=Прайс.Worksheets(1).Range(Симв(72)+"1").Select; Вставка=Прайс.ActiveSheet.Paste; ... Прайс.ActiveWorkbook.Save(); Прайс.ActiveWorkbook.Close(); Прайс.Quit(); |
|||
|
10
Cool Brother
28.03.06
✎
11:18
|
Извиняйте, не знал.
|
|||
|
11
Yura78
28.03.06
✎
11:28
|
Niksis
Если Exel файла нет, вместо Open что будет? Это правильно Прайс.ActiveWorkbook.SaveAs("E:\Шаблон.xls"); ? Дайте плиз ссылку как работать с документами xls через 1с. |
|||
|
12
Yura78
28.03.06
✎
11:38
|
Имеется следующая конструкция(пока создает пустой файл)
ЕхФайл = СоздатьОбъект("Excel.Application"); РабКнига = ЕхФайл.Workbooks.Add(); ... РабКнига.SaveAs("E:\проба.xls"); РабКнига.Close(); РабКнига.Quit(); - err Поле агрегатного объекта не обнаружено (Quit) Подскажите по пунктам 2,3,4,5 |
|||
|
13
Денис2
28.03.06
✎
11:39
|
ЕхФайл.Quit();
|
|||
|
14
Красавчег
28.03.06
✎
11:49
|
(Денис2) Стоит 2003 офис. Файлика этого нету.
Мож где галку при установке не поставили? |
|||
|
15
Денис2
28.03.06
✎
11:56
|
(14) угу. Надо было "справку по VBA для Excel" ставить.
|
|||
|
16
Yura78
28.03.06
✎
12:07
|
Денис2
ЕхФайл = СоздатьОбъект("Excel.Application"); РабКнига = ЕхФайл.Workbooks.Add(); РабКнига.Worksheets(1).Cells(2,1).Value = Строка("Муфта"); РабКнига.Worksheets(1).Cells(2,2).Value = Число("250"); ЕхФайл.Range(ЕхФайл.Cells(2,1),ЕхФайл.Cells(3,2)).Borders.LineStyle = 1; РабКнига.SaveAs("E:\проба.xls"); РабКнига.Close(); ЕхФайл.Quit(); Как ячейки назначить определенный тип(числовой/денежный)? Как объединить несколько строк столбца? Как записать в ячейку рисунок? |
|||
|
17
Денис2
28.03.06
✎
12:16
|
лентяй...
а) Selection.NumberFormat = "#,##0.00$" б) With Selection .HorizontalAlignment = xlGeneral .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With в) ActiveSheet.Pictures.Insert( _ "C:\blue-050926-224442.jpg" _ ).Select |
|||
|
18
valeriy_vm
28.03.06
✎
12:20
|
(2) В екселе создаешь макрос, делашь запись , и делаешь то что нужно на текущем листе, сохраняешь макрос и смотришь этот макрос, что там, далле делаешь то же самое в 1с через ЕхФайл = СоздатьОбъект("Excel.Application");
|
|||
|
19
Yura78
28.03.06
✎
12:53
|
(Денис2)
(valeriy_vm) Было бы просто не спрашивал бы. Понятно, что надо работать через переменную ЕхФайл. Объясните если есть код в Exel, то что надо изменить в нем для 1с Range("A5:A11").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge |
|||
|
20
smaharbA
28.03.06
✎
12:59
|
А че Ф1 в екселе отменили ?
Диапазон=oExcel.Worksheets(1).Range("A5:A11"); Диапазон.HorizontalAlignment = -4108; Диапазон.VerticalAlignment = -4107; Диапазон.WrapText = 0; Диапазон.Orientation = 0; Диапазон.AddIndent = 0; Диапазон.IndentLevel = 0; Диапазон.ShrinkToFit = 0; Диапазон.ReadingOrder = -5002; Диапазон.MergeCells = 0; Диапазон.Merge(); |
|||
|
21
Денис2
28.03.06
✎
13:01
|
точно лентяй...
sel = ЕхФайл.ActiveWorksheet.Range("A5:A11"); sel.HorizontalAlignment = //тут какое-то число, не помню, чему равно xlCenter sel.Merge(); |
|||
|
22
valeriy_vm
28.03.06
✎
13:02
|
Макрос созданный в екселе, посмотрие его код, там увидишь эти методы, но 1с не все методы поддерживает что vba
|
|||
|
23
smaharbA
28.03.06
✎
13:13
|
(22) Все...
|
|||
|
24
Денис2
28.03.06
✎
13:15
|
(23) нет... Некоторые вещи (не помню, какие) - не поддерживает...
апример, коллекции без Count() и Item()... |
|||
|
25
smaharbA
28.03.06
✎
13:17
|
(24) Че будем спорить ? (хотя не хочу с тобой, но могу показать как любой метод выполнить)
|
|||
|
26
valeriy_vm
28.03.06
✎
13:35
|
Да че спорить если в документации так и написано
Не поддерживаются значения, передаваемые по ссылке; Не поддерживаются массивы, в точности SAFEARRAY; Не поддерживаются значения типа IUnknown. |
|||
|
27
smaharbA
28.03.06
✎
13:45
|
(26) Ну давай тогда с тобой поспорим ;) (с Денис2 небуду, он знает что докажу :))
|
|||
|
28
Денис2
28.03.06
✎
13:47
|
(27) дазарадибога :-)
ТОлько покажи, как foreach сделать? |
|||
|
29
Шухер
28.03.06
✎
13:57
|
А мне таких распоряжений как в (0) не поступало. Может начальники мои чего не догоняют?
|
|||
|
30
valeriy_vm
28.03.06
✎
14:00
|
(27)Давай пример использования тех позиций что я указал?
|
|||
|
31
smaharbA
28.03.06
✎
14:01
|
(28) А плеваться не будешь ? :)
Ну с Еачем ты перегнул, это не метод, но и то делается... ... //******************************************* Процедура Сформировать() scr=СоздатьОбъект("MSScriptControl.ScriptControl"); Scr.Language = "javascript"; Excel=СоздатьОбъект("Excel.Application"); Excel.DisplayAlerts=0; Книга=Excel.WorkBooks.Add(); Лист=Книга.WorkSheets(1); //Заполним Для к=1 По 100 Цикл Лист.Range("A"+к).Value=к; КонецЦикла; //Делаем For Each Scr.AddObject("Range",Лист.Range("A1:A100")); e=Scr.Eval("new Enumerator(Range)"); Пока e.atEnd(0)=0 Цикл Сообщить("Address " + e.item(0).Address); Сообщить("Value " + e.item(0).Value); Сообщить("Text " + e.item(0).Text); Сообщить("Format " + e.item(0).NumberFormat); e.moveNext(0); КонецЦикла; Книга.Close(0); Excel.DisplayAlerts=-1; КонецПроцедуры |
|||
|
32
smaharbA
28.03.06
✎
14:04
|
+(31) В 1С можно сделоть даже массив скокахошМерный не используя кучу ТЗ/СЗ и прочего, пример использования 3-мерного - 1.Колонки,2.Столбцы,3.ЛистыЕкселя...
|
|||
|
33
smaharbA
28.03.06
✎
14:06
|
Денис2, valeriy_vm - за коньяком то уже сбегали ? :)
|
|||
|
34
Yura78
28.03.06
✎
14:12
|
ЕхФайл = СоздатьОбъект("Excel.Application");
РабКнига = ЕхФайл.Workbooks.Add(); Объединение = РабКнига.Worksheets(1).Range("A2:A7"); Объединение.Merge(); Фотка = ЕхФайл.Worksheets(1).Range("A2:A7"); Фотка.Paste("E:\Temp\group_image_470_1.jpg"); -???????? Как вставить рисунок в эту объединеную ячейку? |
|||
|
35
Денис2
28.03.06
✎
14:13
|
не... за (31) коньяк не выставлю...
|
|||
|
36
Yura78
28.03.06
✎
14:21
|
Конструкция
ЕхФайл.ActiveSheet.Pictures.Insert("E:\Temp\group_image_470_1.jpg"); работает но мне надо не в первую ячейку. |
|||
|
37
smaharbA
28.03.06
✎
14:34
|
(35) А че так ? Что просили сделал ведь...
(34) Фотка = ЕхФайл.Worksheets(1).Range("A2:A7"); Рисунок=ЕхФайл.Worksheets(1).Shapes.AddPicture("C:\Scripts\Application\Karat-E.JPG", 0, -1, Фотка.Left, Фотка.Top, Фотка.Width, Фотка.Height); |
|||
|
38
Yura78
28.03.06
✎
15:06
|
(37)
Спасибо смотрю. Может кто скажет в инете есть статьи как работать с экселем через 1с? |
|||
|
39
Денис2
28.03.06
✎
15:11
|
(38)
http://www.sinor.ru/~my1c/knowhow/exel_ole.html |
|||
|
40
Yura78
29.03.06
✎
13:33
|
(smaharbA)
Рисунок=ЕхФайл.Worksheets(1).Shapes.AddPicture("C:\Scripts\Application\Karat-E.JPG", 0, -1, Фотка.Left, Фотка.Top, Фотка.Width, Фотка.Height); Как указать место расположение не относительно верхнего края листа, а относительно верхнего края объединеной ячейки "A2:A7"? |
|||
|
41
Шухер
29.03.06
✎
16:35
|
Рано ушел, пропустил самое интересное.
smaharbA, это я поди задолжал когнак тебе. За идею спасибо. 31- зачет. Хочу попробовать из 1С читать/писать в компорт. Есть спиртомер, через порт снять значит можно показания и рассчитать относительные/абсолютные погрешности, и выбрать из дбф нужный коэф. Денис2 тож с селектом подогнал как-то мне идею, даже спасибо не успел сказать, невежа (себе минус), блин, постоянно цейтнот. Лучше поздно, спасибо Денис2, ваши посты с удовольствием читаю, мног чего приобрел для себя. http://www.script-coding.info/MSScriptControl.html Здесь тож неплохо посмотреть. |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |