кто юзал EXCEL как COM?

psvpolo

начало проги на 1с 8.1:
Excel = Новый COMОбъект("Excel.Application");
Excel.WorkBooks.Open(ДиалогВыбораФайла.ПолноеИмяФайла);
Состояние("Обработка файла Microsoft Excel...");
ExcelЛист = Excel.Sheets(НомерЛистаExcel);
требуеццо:
1) установить формат всего листа как текстовый без потери символов при конвертации
2) другая задача: перебрать все ячейки и установить там значения (везде тип - текст)
зы: интересны только ком-методы а реализацию переборки я напишу сам на 1с 8.1..

psvpolo

господа, может вы мне поможете задачку решить без помощи 1с?
задача то в принципе простая: 1с экспортирует в эксель так что все ячейки оказываются "Другого" формата, при попытке установить текстовый формат эксель, сцуко такая, отрезает от строки "023545" передний нуль, или от "12365,00" отрезает нули и запятую, а надо тупо поменять формат без всяких преобразований!
страшно подумать какое эксель гавно, если для этого нужно несколько дней прогать.. :shocked:

Mixaz

добавь впереди значения апостроф (') и будет ячейка текстовой (апостроф отображаться не будет).
или формулой:
A2="'' & A1
или макросом:
cell(a,b).value="'" & cell(a,b).value

psvpolo

сорри но как туда внедрить макрос? я просто в экселе ламер :o

nekaya

То что ты понимаешь под "прогой на 1с 8.1" это по сути то же что и макрос.
Бери код, который тебе дали и копируй в свою "прогу", всего-то делов )

psvpolo

ну я просто подумал что по сути можно сразу заполнять ячейки в 1сной таблице формата mxl с этой хренью - ' что по сути выполняет твой макрос или я не прав?

Mixaz

ну я просто подумал что по сути можно сразу заполнять ячейки в 1сной таблице формата mxl

сохраняй из 1С не в mxl, а в xls.

psvpolo

я так и делаю, но проблема в том что макет печатной формы нельзя сделать в экселе, изначально он в mxl а внутренние конверторы 1с кривоваты: не передают в xls формат ячеек.

Mixaz

сорри но как туда внедрить макрос? я просто в экселе ламер

Сервис->Макрос->Редактор Visual Basic
Там пишиешь:
Sub
i=1
while i<1000' число строк
j=1
while j<50 'число столбцов
cells(i,j).value= "'" & cells(i,j).value
j=j+1
wend
i=i+1
wend
End Sub
потом запускаешь его, а потом меняешь формат листа на тесктовый.

psvpolo

спасибо - с меня пиво!, так намного проще чем по кому..
все сделал как ты описал, но вот только непонятно: макрос этот что прикрепляется к файлу, а новый когда файл перегрузится что заново руками его забивать? что-то я не увидел возможности сохранить его и повесить на менюху, чтоп выгруженные из 1с файлы было легко обрабатывать..

psvpolo

не повериш, но после выполнения такого макроса передний нуль все равно теряется! :(

Mixaz

Можно сохранить в файле PERSONAL.XLS он по умолчанию загружается при открытии Excel. Надо в редакторе выбрать нужный файл (PERSONAL.XLS) куда макрос забить.
Больше хз что с нулями делать

psvpolo

кароче выход такой:
сохраняем из 1с в xls95 открываем к экселе меняем форматы нужных столбцов и сохраняем потом в том же 95м формате. непонятно правда примет ли банк такие файлы - завтра посмотрим, есть другой вариант - прописывать каждый раз формулу (формулу уже подсказали но неудобно - каждый раз из текстовика копировать..
кароче ексель это набор глюков! :crazy:

Mixaz

Попробуй в макросе заменить cells(i,j).value на cells(i,j).text
должен работать.

Usmanova72

Пришли мне примерчик листа или книга, напешу макрос типа сэл и паэхаль.

psvpolo

Попробуй в макросе заменить cells(i,j).value на cells(i,j).text
действительно теперь работает, но макрос почемуто стал зацикливаццо но после его останова все ок!
personal.xls - нету такого на моем компе, как нету и нормал.дот

Mixaz

personal.xls - нету такого на моем компе, как нету и нормал.дот

можно сохранить в любой книге, главное чтобы она была открыта.
а макрос будет работать на листе, который активен при запуске макроса.
чтобы не зацикливался, сделай поменьше строк и стобцов в макросе, я не знаю сколько у тебя там из 1С выводится.

psvpolo

ок, преезжай за пивом! :smirk:
Оставить комментарий
Имя или ник:
Комментарий: