Форум » [x]Harbour » Вопрос по Excel ? » Ответить

Вопрос по Excel ?

Andrey: Всем привет. Вопрос к знатокам Excel-я, как подсчитать сумму ВСЕХ значений с минусом и с плюсом ? Вот есть таблица из многих столбцов. Как сделать формулу для расчёта этих значений по 2-му столбцу ?

Ответов - 153, стр: 1 2 3 4 5 6 7 8 All

Dima: Andrey пишет: Петр пишет: цитата: 1. У обьекта oBook нет метода SaveAs А как тогда писать правильно ? oExcel:SaveAs( cFileSave, xlCSV )

Andrey: WinXP) Версия: Excel 2003 (11.0) - открывает файлы нормально, без ошибок. Xin7) Версия: Excel 2014 (16.0) - при открытии этих же файлов, вылетает с ошибкой: [pre2] oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .F. // НЕ Показывать EXCEL oExcel:DisplayAlerts := .F. // не приставать с запросами oExcel:Workbooks:Open( cFileName, 0 ) // строка 90 oBook := oExcel:ActiveSheet()[/pre2] Почему ? При открытии этого файла напрямую в Экселе - вот такое окно: Пока не щёлкнешь по кнопке "Разрешить редактирование" для этого файла, программа на МиниГуи будет вылетать. Т.е. ОЛЕ в МиниГуи (для Экселя-2014) не может открыть такой файл ? Как тогда добиться совместимости, чтобы программа на всех ОФИСАХ работала ? Можно ли у себя в программе ввести параметр для разрешения редактирования таких файлов ?

Haz: Andrey пишет: Можно ли у себя в программе ввести параметр для разрешения редактирования таких файлов ? Почитай в msdn про параметры метода open. Уверен там есть ответ.


Pasha: Опыт показывает, что параметрами метода Open не обойдешься. Excel последних версий стал слишком "умный", и теперь сам решает, стоит ли ему открывать файл, или не стоит. То ему папка не нравится, то файл не такой. Иногда можно подшаманить настройки самого Excel, иногда надо удалять определенные ветки реестра. Но в общем случае для произвольного Office заранее неизвестно, согласится ли сей капризный продукт открыть файл, или его надо специально уговаривать.

Andrey: Haz пишет: Почитай в msdn про параметры метода open. Уверен там есть ответ. Нашел это - https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbooks-open-method-excel Ничего подходящего нет... Pasha пишет: Но в общем случае для произвольного Office заранее неизвестно, согласится ли сей капризный продукт открыть файл, или его надо специально уговаривать. Да фиг бы сним, нельзя открыть - так нельзя ! Главное чтобы моя программа не сваливалась по ОЛЕ-ошибке и юзеру окошко читаемое выдать ! Что только ему написать то пока не знаю.

Haz: Andrey пишет: Ничего подходящего нет... Это не то ? IgnoreReadOnlyRecommended Если не помогла , то в параметрах безопасности экселя нужно запретить эти предупреждения. Как сделать руками знаю, как из VBA не видел Хотя есть такое , попробуй http://getadmx.com/?Category=Office2016&Policy=excel16.Office.Microsoft.Policies.Windows::L_TrustedLoc01&Language=ru-ru

Петр: Andrey пишет: Главное чтобы моя программа не сваливалась по ОЛЕ-ошибке Я вам про BEGIN SEQUENCE от нефиг делать писал? Организуйте обработку ошибок и будет вам счастье. К тому же IF FILE( cFileSave ) // Чтобы Excel не приставал в вопросом "Такой файл уже существует" nErr := DELETEFILE(cFileSave) - это очень "детский" код, под DOS - все нормально, в Win может быть источником трудноотлавливаемых ошибок.

Andrey: Haz пишет: Если не помогла , то в параметрах безопасности экселя нужно запретить эти предупреждения. Я писал выше, что ручное разрешение на этот файл позволяет избавиться от ошибки. Но хочется сделать открытие файла по максиму - без ошибок ! Самое лучшее конечно предложение от Петра, сделать BEGIN SEQUENCE на открытие файла. Кстати проверял и Эксель 2014 и 2016 - файлы нормально открываются/конвертируются. У меня два файла в тесты записаны, вообще на диске лежат с 2014 года, может битые какие-то. Хотя Эксель 2003 их просто на ура конвертирует.... Чем дальше в лес, тем больше дров. Нашел кто создаёт такие хитро-битые файлы, вот один в качестве примера - https://cloud.mail.ru/public/Fd2b/kTZEAo8Nj

Dima: Haz пишет: как из VBA не видел да полно ссылок если погуглить.

Andrey: Dima попробуй у себя открыть этот файл - https://cloud.mail.ru/public/Fd2b/kTZEAo8Nj !

Dima: Andrey пишет: Dima попробуй у себя открыть этот файл у меня Excel 2003

Haz: Dima пишет: да полно ссылок если погуглить. Может и полнно, но мне не надо. Давно листал, и для себя запомнил, что эта гадость без танцев не отключается. И надо все валить на админа. Если с тех времен ссылок накидали то это талько хорошо. Ps. Вспоминается анекдот : Тяжело спорить с товарищем сталиным, ты ему цитату, а он тебе ссылку

Pasha: По поводу открытия файлов в последних версиях Office: 2010 с обновлениями, 2013, 2016. Иногда помогают такие танцы с бубном, причем бубен обязательно должен быть изготовлен из шкур священных животных из Тибета, а шаман должен иметь сертификат от далай-ламы. Вот рецепты, которые я находил: Отключение проверки файлов офиса при открытии: Создайте в реестре ключ EnableOnLoad типа DWORD со значением 0 по пути HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\<Версия вашего Офиса, например 14.0 для 2010>\<Приложение, например Excel>\Security\FileValidation\ или HKEY_CURRENT_USER\Software\Microsoft\Office\<Версия вашего Офиса, например 14.0 для 2010>\<Приложение, например Excel>\Security\FileValidation\ Откройте вкладку Файл, чтобы переключиться в представление Microsoft Office Backstage. В меню Справка выберите пункт Параметры; отобразится диалоговое окно Параметры. Щелкните элемент Центр управления безопасностью и нажмите кнопку Параметры центра управления безопасностью. В центре управления безопасностью щелкните пункт Параметры блокировки файлов. Установите флажок Открывать выбранные типы файлов в режиме защищенного просмотра и разрешить редактирование. На приведенном ниже рисунке показана область Параметры блокировки файлов центра управления безопасностью. Было слелано следующее на компьютере: 1. Microsoft Office 2010 x32 был удален с компьютера, и установлен Microsoft Office 2013 x64 2. В реестре изменен след. параметр [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems] на SharedSection=1024,20480,1024 согласно ссылке http://www.commix.ru/settings/desktop-heap.html Смотреть - http://www.pixic.ru/i/2030R7U3V8X797r4.jpg В результате работы с большим количеством открытых экслевских, вордовских документов, вышеописанная проблема с зависанием приложений не появляется. и еще: На некоторых файлах строка Documents.Open последовательно зависает, причем никаких бросающихся в глаза различий между этими файлами и остальными нет. Ворд 2007, хотя файлы в формате doc. Раньше была проблема с длинными именами файлов - файл с длинным именем зависал, но проходил нормально после его переименования в нечто более короткое. Сейчас весь path включая имя файла - порядка 20 символов. http://www.sql.ru/forum/1135099/servis-zavisaet-pri-popytke-otkryt-vord Нашел! HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Word\Resiliency\DisabledItems Вот это если почистить, то оно начинает работать. Буду чистить программно. Всем спасибо! Иногда помогает, иногда нет.

Andrey: Pasha СПАСИБО ! Петр пишет: 1. У обьекта oBook нет метода SaveAs Делаю так: [pre2] oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .F. oExcel:DisplayAlerts := .F. oExcel:Workbooks:Open( cFileName, 0 ) oExcel:SaveAs( cFileSave, xlCSV ) // строка 111 oExcel:Quit()[/pre2] Вылет по ошибке: Error Excel.Application/0 S_OK: SAVEAS Called from TOLEAUTO:SAVEAS(0) Called from XLSTOCSV(111) in module: Form_convert.prg Если делаю так: [pre2] oExcel := TOleAuto():New( "Excel.Application" ) oExcel:Visible := .F. oExcel:DisplayAlerts := .F. oExcel:Workbooks:Open( cFileName, 0 ) oBook := oExcel:ActiveSheet() oBook:SaveAs( cFileSave, xlCSV ) // строка 111 oExcel:Quit()[/pre2] Вылета по ошибке НЕТ. И как тогда правильно писать ? Может ещё что-то нужно добавить/исправить в коде

Pasha: Метод SaveAs есть у объекта WorkBook, и Chart и WorkSheet Так что правильно как раз: oBook:SaveAs( cFileSave, xlCSV ) для таких вопросов есть хелп по Excel VBA, а еще такая классная вещь, как поисковик в браузере.

Andrey: Pasha пишет: для таких вопросов есть хелп по Excel VBA, а еще такая классная вещь, как поисковик в браузере. Спасибо ! На них не надеюсь, важно как на форуме у нас напишут !

Pasha: А набрать в яндексе "Excel SaveAs" влом ?

Andrey: Pasha пишет: А набрать в яндексе "Excel SaveAs" влом ? Да смотрел я. Просто засомневался, из-за этого и спрашивал...

Pasha: Andrey пишет: oBook := oExcel:ActiveSheet() Мне одному кажется, что в этом коде что-то не так ?

Dima: В ячейке имеем QWERTYASDEFG , нужно ASDEFG сделать жирным шрифтом. Руками получается и макрос смотрел , но не пойму как сделать на Harbour. Делал кто такие вещи ?



полная версия страницы