Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Попробовал. Работает!!!
Спасибо.
По поводу "2.Не совсем понял вопрос.". Ну, я не нашел в 1С-ке такого метода или свойства. Потому спрашиваю. Теперь подозреваю, что 1С-ка просто использует ".Close", которое является "собственностью" Экселя.
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Doober, я рад помощи. Спасибо большое за внимание.
Пока не могу попробовать код с Вашими правками. Жду пока раздуплится сервер.
Можно попросить Вас прокомментировать кое-что?
1) Ошибка была в том, что раз основная книга открывалась в 1С-ке, то и закрываться она должна в ней, а не в Экселе? Так?
2) А где в синтакс-помощнике "живет" ".Close" для Книги? Я поискал в функциях для работы с файлами и не нашел...
3) Насколько принципиально использовать именно Ваш кусок? Будет ли он поддерживать сохранение файла в другом экселевском формате?
Код
Set wb = ActiveSheet.Parent
    wb.SaveAs Filename:=NewFileName _
            , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
              ReadOnlyRecommended:=False, CreateBackup:=False
    wb.Close SaveChanges:=False    'закрытие сделанного Эксель-варианта Заказа.
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Код из 1С:
Код
Процедура КнопкаВыполнитьНажатие(Кнопка)    
   Книга = "";

   Если ЗначениеЗаполнено(Регистратор) И ЗначениеЗаполнено(Поставщик) Тогда      
            Запрос = Новый Запрос ("ВЫБРАТЬ
                                   |   ЗаказПоставщикуТовары.Номенклатура,
                                   |   ЗаказПоставщикуТовары.Количество,
                                   |   НоменклатураКонтрагентов.НомерСтрокиЭксельПрайса,
                                   |   ЗаказПоставщикуТовары.Номенклатура.Код
                                   |ИЗ
                                   |   Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
                                   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
                                   |      ПО ЗаказПоставщикуТовары.Номенклатура = НоменклатураКонтрагентов.Номенклатура
                                   |         И ЗаказПоставщикуТовары.Ссылка.Контрагент = НоменклатураКонтрагентов.Контрагент
                                   |ГДЕ
                                   |   ЗаказПоставщикуТовары.Ссылка = &Ссылка");
      Запрос.УстановитьПараметр("Ссылка",Регистратор);
      ТЗ = Запрос.Выполнить().Выгрузить();
      Для каждого ТекСтрока Из ТЗ Цикл
         Текст = "";
         Если ТекСтрока.НомерСтрокиЭксельПрайса = 0 Тогда
            Текст = Текст + ТекСтрока.Номенклатура + "..." + ТекСтрока.Номенклатура.Код + Символы.ПС 
         КонецЕсли;    
      КонецЦикла;    
      Если Текст <> "" Тогда
         Сообщить ("Формирование Эксель-Формы ОТМЕНЕНО, т.к. среди товаров в документе есть товары, для которых НЕ заполнено поле" + Символы.ПС + "''Номер СТРОКИ Эксель-прайса'' (в регистре сведений ''Номенклатура контрагентов'')." + Символы.ПС + "Либо НЕ верно был выбран поставщик в этой форме." + Символы.ПС + "Проблемные товары:" + Символы.ПС + Текст);
      Возврат;
   КонецЕсли;
   
    //Если для всех позиций есть НомерСтрокиЭксельПрайса, то формируем Заказ. 
   Попытка
      Контрагент = Регистратор.Контрагент;
      Дистрибьютор = Регистратор.Организация;
      АдресДоставки = "Склады";
      ДатаЗаказа = Формат(ТекущаяДата(), "ДЛФ=Д"); // 01.01.2005
      ДатаДоставкиЖелаемая = ДатаЗаказа;
      КонтактноеЛицоДляПолучения = Регистратор.Ответственный;
      Телефон = "(066) 777-77-77";
      НомерДока = Регистратор.Номер;
      
      //Сообщить (Организация);
      Попытка
         Эксель = Новый COMОбъект("Excel.Application"); // для v7 код будет: Эксель = СоздатьОбъект("Excel.Application");
      Исключение
         Эксель.Quit(); //закрыли приложение.
         Сообщить(ОписаниеОшибки());
         Возврат;
      КонецПопытки;
              
      ВыбратьШаблонЗаказа(Книга,Эксель);
      Эксель.Run("Очистить");
      Лист = Книга.WorkSheets("Ф_Transit");
      //////////////Лист.Cells.ClearContents();//очищаем весь лист (содержимое).
      //ЭксельЗначение  = ЭксельОбъект.Clean(ЭксельЛист.Cells(2,2).Value); //очищаем ячейку (содержимое).
      Лист.Cells(1, 2).Value = Строка(Контрагент);
      Лист.Cells(2, 2).Value = Строка(Дистрибьютор); // Лист.Cells(НомерСтроки, НомерКолонки).Value = Значение;
      Лист.Cells(3, 2).Value = АдресДоставки;    
      Лист.Cells(4, 2).Value = Строка(ДатаЗаказа);    
      Лист.Cells(5, 2).Value = Строка(ДатаДоставкиЖелаемая); 
      Лист.Cells(6, 2).Value = Строка(КонтактноеЛицоДляПолучения); 
      Лист.Cells(7, 2).Value = Строка(Телефон);
      Лист.Cells(1, 3).Value = Строка(НомерДока);
      //Лист.Cells(8, 2).Value = Строка(Телефон);
      //Более 8-й строки нельзя (нет места). При необходимости писать в следующие колонки.
      
      i = 10; //заполняем, начиная с 10-й.
      Для Каждого Стр из ТЗ Цикл  
         Лист.Cells (i,2).Value = Строка(Стр.НомерСтрокиЭксельПрайса);
         Лист.Cells (i,3).Value = Число(Стр.Количество);
         i = i + 1;
      КонецЦикла;            

      Эксель.Visible = Истина;
      //'excel.run("testmacro.xls!SetColors",ActiveWorkbook,15,15395562);
      //Эксель.run("Вомонд_ШаблонЗаказаПоставщику_Форт.xlsb!Start",Книга,15,15395562);
      
      Эксель.Run("Start");// готовим файл-клон заказа. Если все Ок, то оба эксель-файла закрываем. 

      ФайлКлон = Книга.WorkSheets("Ф_Transit").Cells(10, 12).Value;
      Сообщить ("Эксель-вариант Заказа поставщику " + ФайлКлон + " создан.");      
      Эксель.Quit(); //закрыли приложение.
   Исключение
      Эксель.Quit(); //закрыли приложение.
      Сообщить(ОписаниеОшибки());
      Возврат;
   КонецПопытки;
Иначе
   Предупреждение("Заполните, пожалуйста, оба поля.");
   КонецЕсли
КонецПроцедуры
........
Код
Процедура ВыбратьШаблонЗаказа(Книга,Эксель)
Если Поставщик = "ВОМОНД" Тогда
Книга = Эксель.WorkBooks.Open("C:\1С_Форт_ШАБЛОНЫ_Экспорт\ШаблоныПоставщиков\Вомонд_ШаблонЗаказаПоставщику_Форт.xlsb"); //ПолноеИмяФайла.
//Возврат
КонецЕсли;
КонецПроцедуры   
Изменено: i77 - 27.05.2016 19:02:32
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Всё та же ошибка.
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Если закомментировать вот это, то сообщения об ошибке НЕ возникает.
Код
'    ActiveWorkbook.SaveAs Filename:=NewFileName _
'        , FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
'        ReadOnlyRecommended:=False, CreateBackup:=False
'    ActiveWorkbook.Close SaveChanges:=False 'закрытие сделанного Эксель-варианта Заказа.

(А "ActiveWorkbook.Sheets"--ничего не меняется.)
Как же иначе сохранить книгу?
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Я закомментировал только эту строчку. Появилось такое сообщение, как во вложении.
Ни одна из причин, указанных в нем НЕ подходят.
Изменено: i77 - 27.05.2016 16:39:29
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Ре Влад. Я, к сожалению, не понял смысла Ваших слов, потому что аматор.
Хорошо, а как помочь? Попробовал  такое--
Код
Sheets("Ф_Transit").Range("L10").Value = NewFileName

Та же ошибка.
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
kuklp, Doober, спасибо, что отозвались.
Ре kuklp. Не помогает. Все по прежнему.
Ре Doober. Книга маленькая. Вся работа в ней, вместе с сохранением занимает около 2-3 секунд.

Может ещё есть варианты?
Сообщение об ошибке при запуске макроса (Эксель 2007) из 1С
 
Добрый день. Опять к Вам на поклон.
Такое дело... Из 1С я открываю Эксель-файл (как положено). И в этом файле запускаю сперва один макрос, затем второй. И начиная с определенных строк макроса №2, в 1С появляется сообщение об ошибке. Если закомментировать эти строки, сообщения об ошибке НЕ возникает, но это строки нужные и в рабочем файле они должны быть раскомментированы.
Причем, когда я запускаю этот макрос НЕ из 1С, а как обычно, открыв этот файл в Экселе, то все нормально отрабатывается, как и задумано. Эксель при этом ни на что не жалуется. Да и когда 1С жалуется на ошибку, Эксель--ни в одном глазу. Вот.

Сообщение 1С об ошибке такое:
  {Форма.Форма.Форма(116)}: Ошибка при вызове метода контекста (Run): Произошла исключительная ситуация (0x800a9c68)

Добрые люди, помогите, пожалуйста.
PS. В коде вложенного файла я отметил начало проблемных строк.
Изменено: i77 - 27.05.2016 13:14:53
Формула. Убрать лидирующие нули.
 
Спасибо. Помогло.
Формула. Убрать лидирующие нули.
 
Добрый день.
Задача такая.
Пользователь может копировать коды в ячейки в В  по-разному и из разных источников. Когда-то с лидирующими нулями, когда-то без них.
Максимальное число цифр в коде 9. Минимальное 1. Есть только цифры (без букв и прочего).
А мне надо сравнивать значения в ячейках.
Помогите, пожалуйста, избавляться от лидирующих нулей.
В одной группе строк скрыть те же по очередности строки, которые скрыты в аналогичной другой группе строк.
 
Супер! Спасибо большое.
В одной группе строк скрыть те же по очередности строки, которые скрыты в аналогичной другой группе строк.
 
Добрый вечер, Знатоки. Такой вопрос...
На двух листах есть две группы строк. Количество строк в этих двух группах одинаковое. Известны номера первой и последней строк.
На листе "ооо", в группе строк с 14-й по 27 строку, надо скрыть строки, которые совпадают по очередности со строками на листе "ааа" в группе строк с 10 по 23 строку.
Т.е., если в группе на листе "ааа" скрыта третья строка, то и в группе на листе "ооо" должна быть скрыта третья строка. И так далее.

В примере для удобства строки, которые надо скрыть, желтые и подписаны, но в реальном файле--нет. Ориентироваться только на очередность строк.
В реальном файле таких строк надо обрабатывать около 400.
Страницы: 1
Наверх