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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2011, 18:27   #1
bigor
 
Регистрация: 15.09.2011
Сообщений: 6
По умолчанию Замена меток в Excel

Есть скрипт замены меток в excel-файле, который стабильно работал в 2003 и более старых версиях офиса.
На 2010 работать отказался.

Сам скрипт вот такой:

' Замена строки ReplacedText строкой ReplaceWith
' Замена начинается от начала документа
' В течении выполнения данной операции курсор не изменяет своего положения
Private Sub ReplaceTextCustom(ReplacedText As String, ReplaceWith As String)
Dim oRange As Object 'Word.Range

Set oRange = ActiveWorkbook.ActiveSheet.UsedRang e
oRange.Replace What:=ReplacedText, _
Replacement:=ReplaceWith, _
LookAt:=xlWhole, _
MatchCase:=False

Set oRange = Nothing
End Sub

ОШИБКА:

Run-time Error '-2147417848 (80010108)'
Automation error
The object invoked has disconnected from its clients

Пытался обойти это написав напрямую скрипт из записанного макроса в 2010 офисе - тоже не работает.

Cells.Replace What:="$*]"", Replacement:="", LookAt:=xlPart, SearchOrder:= _
xlByRows, MatchCase:=False

Тоже не дает, выдает ошибку:

Run-time Error '-2147417848 (80010108)'
Method 'Replace' of object 'Range' failed

Подскажите, что я не так делаю.
bigor вне форума Ответить с цитированием
Старый 16.09.2011, 02:01   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Ошибка, скорее всего, в чем-то другом.
Это - простейший код, он не должен вызывать ошибок (если вызывается из VBA Excel)
Подробнее об этой ошибке: http://support.microsoft.com/default...;en-us;Q319832

Несколько смущает строка
Цитата:
Код:
Dim oRange As Object 'Word.Range
Вы, случайно, не из Word этот код запускаете?
Если да - то Word не знает значения встроенных Excel-констант типа xlPart, xlWhole и т.п.

Попробуйте так:
Код:
Private Sub ReplaceTextCustom(ReplacedText As String, ReplaceWith As String)
    ActiveSheet.UsedRange.Replace ReplacedText, ReplaceWith, 1, , False
End Sub

Sub Macro2()
    Cells.Replace "$*]", "", 2
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 16.09.2011, 15:21   #3
bigor
 
Регистрация: 15.09.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Несколько смущает строка

Вы, случайно, не из Word этот код запускаете?
Нет, вызывается именно из Excel!
И в 2003 это все прекрасно работает, а в 2010 вылетает с ошибками.

Приведенный Вами пример так же не заработал.
bigor вне форума Ответить с цитированием
Старый 19.09.2011, 16:25   #4
bigor
 
Регистрация: 15.09.2011
Сообщений: 6
По умолчанию

Утоню как запускается макрос. Наверное стоило это указывать в самом начале.
Это формирование отчета по шаблону excel и отдельно лежащему файлу макроса.
Запускается все по следующему алгоритму (написано все на Delphi):

1) открывается шаблон эксель

2) для него запускается макрос командой
FApplication.VBE.ActiveVBProject.VB Components.Import(FScriptList[i])
FApplication.Run(FRunMacroName)

Здесь FScriptList[i] - полный путь к макросу.

Где-то при таком механизме запуска что-то отваливается в 2010 офисе.
bigor вне форума Ответить с цитированием
Старый 19.09.2011, 16:59   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Доступ к VBProject разрешён?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.09.2011, 12:30   #6
bigor
 
Регистрация: 15.09.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Доступ к VBProject разрешён?
Да, конечно. Макросы выполняются. Не работает именно конкретный макрос замены меток.
bigor вне форума Ответить с цитированием
Старый 20.09.2011, 12:41   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

То, что макросы выполняются - на 2007/10 не значит, что разрешён доступ к VBProject.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.09.2011, 14:18   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А зачем вообще всё усложнять?
К чему вообще весь этот импорт макросов в файл?
Почему код нельзя сразу поместить в шаблон Excel???

Или, в крайнем случае, почему не выполнить код прямо из Delphi? (код-то простейший, всего одна строка)
EducatedFool вне форума Ответить с цитированием
Старый 21.09.2011, 10:12   #9
bigor
 
Регистрация: 15.09.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А зачем вообще всё усложнять?
К чему вообще весь этот импорт макросов в файл?
Почему код нельзя сразу поместить в шаблон Excel???
Код, который не работает - маленький кусочек отчета, формируемого из информационной системы. Оттуда это все дело и вызывается.
Сам инструмент заточен под запуск отдельно шаблона и отдельно макроса.
Плюс есть набор библиотек, которые подгружаются при необходимости.
Отчетов много, так что тянуть это все в код - не вариант.

Соответственно все работает... Кроме замены меток.
И та не работает только в 2010 офисе.

Последний раз редактировалось bigor; 21.09.2011 в 10:15.
bigor вне форума Ответить с цитированием
Старый 21.09.2011, 10:13   #10
bigor
 
Регистрация: 15.09.2011
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
То, что макросы выполняются - на 2007/10 не значит, что разрешён доступ к VBProject.
Да, согласен. Но доступ разрешён.
bigor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание меток отдельных сегментов таблицы Excel 2010 own Microsoft Office Excel 1 29.01.2011 22:12
замена обзаца в word из excel pooli Microsoft Office Excel 3 21.09.2010 16:17
Замена Excel на более скоростную программу. kola672 Софт 14 13.09.2010 14:02
Замена символа в ОДНОЙ ячейке Excel.... Al_Sha Общие вопросы Delphi 2 11.06.2010 21:13
Описание меток Yura_S Общие вопросы Delphi 5 20.10.2009 22:29