Имя: Пароль:
1C
 
Создание 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 Здесь тож неплохо посмотреть.