Твой софтовый форум > Тематические форумы > Программирование

VBA в Word

,

копирование doc1 в doc2

Дата публикации: 13.03.2007 - 13:22
Elf_XP
плиз, помогите разобраться..
Есть два документа doc1 и doc2. (представлены как объекты) В документе doc2 нужно найти строку "Предложение". Если её не находим,то копируем все что есть в doc1 в doc2, предварительно удалив из doc2 все ,что там уже было записано.
fff принимает значение TRUE если в документе найдено нужное предложение, а если в doc2 такой строчки не найдено, то идет пробежка по циклу, сначала удаляются все строки из doc2, а потом идет еще один цикл, строки из doc1 по одной копируются в doc2. не знаю, идет ли переход на новую строку или нет.. но не в этом дело. ничего все-равно не работает =( doc2maxline = doc2.CountOfLines и doc1maxline = doc1.CountOfLines соответственно. Вот часть кода, которая вроде бы должна это реализовать, но не реализует =(( (MsgBox "Успешно скопировано" не выскакивает несмотря на то, что теперь когда из doc1 все скопировано в doc2 "Предложение" должно быть найдено, а значит fff принять значение TRUE. ничего подбного не происходит)

CODE
fff = doc2.Find("Предложение", 1, 1, doc2maxline, 11)

  If fff = False Then 'уничтожение всего что есть в doc2
      For k = 1 To doc2maxline
          doc2.DeleteLines (k)
          k = k + 1
      Next


   For i = 1 To doc1maxline
      doc2.InsertLines (i), doc1.Lines(i) 'заносим все что есть в doc1 в doc2
      i = i + 1
   Next
 
End If
If fff = TRUE then
MsgBox "Успешно скопировано"
End if
ggl
Не очень понятно - вроде конструкция вида
If fff=FALSE Then ... Else ... End If.
Т.е. если fff=FALSE, мы никогда не попадем на строку "Успешно скопировано". Сравнение fff=TRUE не приведет автоматически к вызову Find во второй раз.
Quim2005
Удалять по одной строчке, конечно, не серъезно, но чтобы много не воротить:

CODE

fff = doc2.Find("Предложение", 1, 1, doc2maxline, 11)      
IF NOT fff Then
 'уничтожение всего что есть в doc2        
 For k = 0 To doc2.maxline-1
 doc2.DeleteLines (1)            
 Next k
 
 'заносим все что есть в doc1 в doc2
 For i = 0 To doc1.maxline-1
 'на счет следующей строки сомнения
 doc2.InsertLines(i), doc1.Lines(i)      
 Next i
ELSE
 MsgBox "Успешно скопировано"
END IF


не запускал, только на основе собственного опыта.
может вместо doc1maxline все-таки DOC1.Maxline ?


Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке: VBA в Word
SoftoRooM © 2004-2024