Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2010, 18:05   #1
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию ремонт excel

доброго времени суток!
Появилась у меня такая проблема: файл с макросами перестал работать. Любое действие в нем, начиная от редактирования значения ячейки, до запуска макроса заканчивается ошибкой "ошибка чтения библиотеки DDL". Иногда открывается диалоговое окно с выбором библиотек для подключения, выбор в которых опять таки приводит к той же самой ошибки... Другие файлы работают нормально. На других компьютерах файл работает нормально.
Что можно сделать?
maksim_serg вне форума Ответить с цитированием
Старый 20.12.2010, 18:08   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Переустановка офиса займет не более 5 минут.
_SERGEYX_ вне форума Ответить с цитированием
Старый 20.12.2010, 18:16   #3
maksim_serg
Форумчанин
 
Аватар для maksim_serg
 
Регистрация: 25.03.2010
Сообщений: 417
По умолчанию

наверное лучший вариант. Но если такой возможности нет?
maksim_serg вне форума Ответить с цитированием
Старый 21.12.2010, 06:06   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
Другие файлы работают нормально
Значит, проблема не в Excel, и его переустановка не требуется.

1. Отключите в файле лишние библиотеки: http://www.excel-vba.ru/index.php?fi...t_Find_Library

2. Если не поможет, выкладывайте файл сюда - мы поглядим.

PS: Возможно, дело в разных версиях Windows или Office
Код VBA для этих случаев несколько отличается:
Цитата:
Сообщение от http://msdn.microsoft.com/ru-ru/library/ee691831.aspx
Предполагается, что операторы Declare без атрибута PtrSafe не совместимы с 64-разрядной версией Office 2010.

Как было сказано ранее, есть две новых условных констант компиляции: VBA7 и Win64. Для обеспечения обратной совместимости с предыдущими версиями Office используется константа VBA7 (это более распространено), чтобы не допустить выполнение 64-разрядного кода в более ранних версиях Office. Для кода, который отличается для 32- и 64-разрядной версии, такого как вызов математического интерфейса API, который использует LongLong для 64-разрядных версий и Long для 32-разрядной версии, нужно использовать константу Win64. В следующем примере кода показано использование этих двух констант.


Код:
#if Win64 then
   Declare PtrSafe Function MyMathFunc Lib "User32" (ByVal N As LongLong) As LongLong
#else
   Declare Function MyMathFunc Lib "User32" (ByVal N As Long) As Long
#end if
#if VBA7 then
   Declare PtrSafe Sub MessageBeep Lib "User32" (ByVal N AS Long)
#else
   Declare Sub MessageBeep Lib "User32" (ByVal N AS Long)
#end if
Подводя итоги, можно сказать, что при написании 64-разрядного кода, который будет использоваться в предыдущих версиях Microsoft Office, следует применять константу условной компиляции VBA7. Однако при написании 32-разрядного кода в Office 2010 он работает как и в предыдущих версиях Microsoft Office без применения константы компиляции. Если требуется обеспечить использование 32-разрядных операторов для 32-разрядных версий и 64-разрядных операторов для 64-разрядных версий, лучше всего использовать константу условной компиляции Win64.
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ремонт флешки как? Virus25 Компьютерное железо 16 26.06.2010 18:12
ремонт компов Setter Компьютерное железо 4 31.03.2010 06:40
На свалку или в ремонт. teoneo Компьютерное железо 5 21.01.2010 22:53
ремонт Xatr Свободное общение 1 14.02.2009 17:45