пакетная обработка doc файлов

Программирование на Visual Basic for Applications
kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

пакетная обработка doc файлов

Сообщение kibernetics » 02.06.2009 (Вт) 16:03

Скажите, а какой принцип пакетной обработки вордовских документов?
Мне нужно добавить в каждый отмеченный документ в листбоксе, допустим, какойто текст и перенести его в другую папку.
делаю так:
Код: Выделить всё
    Set objDoc = CreateObject("Word.Application")
   
    For i = 0 To lstFrom.ListCount - 1
        If lstFrom.Selected(i) Then
            sPath1 = TxtBoxFrom.Text & lstFrom.List(i)
            sPath2 = TxtBoxTo.Text & lstFrom.List(i)
           
            With objDoc
                .Documents.Open sPath1
           
                .Selection.TypeText "тестовый текст"
                .Documents.Add.SaveAs (sPath2) 'вот тут начинается какая-то жуткая ошибка, чтото про автоматизацию и прочее.
           
            End With

        End If
    Next   
    objDoc.Quit
   
    Set objDoc = Nothing


скажите, кто сталкивался, как верно сделать алгоритм?
если создавать всегда постоянно объект objDoc, то есть заторможения.
ещё, если это важно, на машине стоит два офиса: 2003 и 2007

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: пакетная обработка doc файлов

Сообщение alibek » 02.06.2009 (Вт) 16:17

kibernetics писал(а):
Код: Выделить всё
            With objDoc
                .Documents.Open sPath1
           
                .Selection.TypeText "тестовый текст"
                .Documents.Add.SaveAs (sPath2) 'вот тут начинается какая-то жуткая ошибка, чтото про автоматизацию и прочее.
           
            End With


Чье воспаленное сознание породило этот код?
Переменную objDoc надо назвать objWord, чтобы не путаться.
Смысл .Documents.Add.SaveAs от меня ускальзывает.
Lasciate ogni speranza, voi ch'entrate.

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: пакетная обработка doc файлов

Сообщение kibernetics » 02.06.2009 (Вт) 16:58

alibek, это я породил. :oops:
сори, так, что первое нашёл на поиске...
подскажи плиз советом

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Re: пакетная обработка doc файлов

Сообщение viter.alex » 02.06.2009 (Вт) 19:51

Я бы это делал так.
Код: Выделить всё
  Set objWord = CreateObject("Word.Application")

  For i = 0 To lstFrom.ListCount - 1
    If lstFrom.Selected(i) Then 'Допустим ты определил путь откуда читать и куда сохранять
      sPath1 = TxtBoxFrom.Text & lstFrom.List(i)
      sPath2 = TxtBoxTo.Text & lstFrom.List(i)
      With Documents.Open(sPath1)
        .Range.InsertAfter "тестовый текст"
        .SaveAs sPath2 'сохранение
      End With
    End If
  Next
  objWord.Quit

  Set objWord = Nothing
Лучше день потерять — потом за пять минут долететь!

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: пакетная обработка doc файлов

Сообщение Alec » 02.06.2009 (Вт) 22:10

viter.alex писал(а):Я бы это делал так.

А я бы еще добавил
Код: Выделить всё
...
  With Documents.Open(sPath1)
        .Range.InsertAfter "тестовый текст"
        .SaveAs sPath2 'сохранение
        .Close 'закрываем текущий документ
  End With
...
Иногда лучше вовремя остановиться...
И начать заново!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList