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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2012, 14:27   #1
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию Что может вызывать восстановление документа?

Добрый всем день.
Вот такая бяка: попросили написать макрос статистики pdf файлов в выбранной папке. Написал, проверил в 2003, 2007 и в 2010.
У заказчика не работет. Ошибку не выдаёт но при пошаговом прохождении
Восстанавливает документ при переходе от строки
Part1Document.Open (Folder & Application.PathSeparator & wb) к строке
numPages = Part1Document.GetNumPages()
При этом выполнение макроса прекращается
Код:
 Sub STATISIKA()

  Dim Folder As String
  Dim wb As String
  Dim i As Integer
    Dim Part1Document As Acrobat.CAcroPDDoc
    Dim numPages As Long
    Set Part1Document = CreateObject("AcroExch.PDDoc")
  'Показываем диалог выбора папки
  With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Выберите папку, файлы в которой нужно обработать"
    .ButtonName = "Выбрать"
    .AllowMultiSelect = False
    If .Show Then Folder = .SelectedItems(1) Else Exit Sub
  End With
   i = i + 1
   Cells(i, 1) = "Содержимое папки " & Folder
   i = i + 1
        Cells(i, 1) = "Файл"
        Cells(i, 2) = "Страниц"
  'Начинаем читать файлы из папки
wb = Dir(Folder & Application.PathSeparator & "*.pdf")
  
  While Len(wb) > 0
'Debug.Print wb ' Ctrl+G для открытия окна
        i = i + 1
        Part1Document.Open (Folder & Application.PathSeparator & wb)
        numPages = Part1Document.GetNumPages()
        Part1Document.Close
            Cells(i, 1) = wb
            Cells(i, 2) = numPages
        wb = Dir 'читаем следующий файл
  Wend
    Set Part1Document = Nothing
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 30.08.2012, 15:28   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А зачем CreateObject("AcroExch.PDDoc")
если используете раннее связывание? ( Dim Part1Document As Acrobat.CAcroPDDoc)

Не проще ли написать
Код:
Dim Part1Document As NEW Acrobat.CAcroPDDoc
Проблема в объекте AcroExch.PDDoc - возможно, у закачика используется другая версия (глючная, некорректно установленная, или ещё что-то)
EducatedFool вне форума Ответить с цитированием
Старый 30.08.2012, 17:00   #3
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Спасибо. Я уже потом понял свою ошибку: смешал ранне и позднее связывание.
В итоге: убрал ссылку в референсах
И применил познее связывание

Код:
Dim Part1Document ' 
Set AcroApp = CreateObject("AcroExch.App")
У него действительно оказалась другая версия
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
переменные или что-нибудь, чтоб не вызывать сто раз JavaScript Ihavoker HTML и CSS 3 27.01.2011 06:26
Может быть так, что в мамку может попасть вирус и не загружать жесткий диск Berzhan Операционные системы общие вопросы 6 27.07.2009 21:40
то такое мастерство в программировании, что такое мастер программист и что он может? Cezar Свободное общение 29 02.06.2007 23:48