2013-11-28 3 views
0

Я получаю сообщениеКак открыть документ Word с помощью макроса VBA в режиме чтения и записать текст в документ?

  1. Open Только чтение
  2. Local Copy
  3. Recieve Уведомление при наличии мне нужно открыть документ в режиме чтения и записи, и документ закрыт до макросъемки казнены

Также я ahve сомнения в том, как я пишу текст

Sub Read_Write_Document() 

    Dim p As Long, r As Long 
    Set wrdApp = CreateObject("Word.Application") 

    wrdApp.Visible = True 

    Set wrdDoc = wrdApp.Documents.Open("C:\Documents and Settings\Desktop\Word_File_read_write_1.docx") 

    Dim i As Integer 
    i = 1 
    With wrdDoc_Read 
     For p = 1 To .Paragraphs.Count 
      Set tRange = .Range(Start:=.Paragraphs(p).Range.Start, End:=.Paragraphs(p).Range.End) 
      tString = tRange.Text 
      tString = Left(tString, Len(tString) - 1) 

      If InStr(1, tString, "1") > 0 Then 
       If Mid(tString, 1, 4) = "date" Then 
        tRange.Text = "DATE" ' Write Text 
       End If 
      End If 
     Next p 
    End With 
    .SaveAs ("C:\Documents and Settings\Desktop\Word_File_read_write_2.docx") 
    wrdApp.Quit ' close the Word application 
    Set wrdDoc = Nothing 
    Set wrdApp = Nothing 

End Sub 

ответ

0

Пара вещей

Это всегда целесообразно использовать Option Explicit

Вы объявили документ слово как wrdDoc но используют wrdDoc_Read

Изменение линии

With wrdDoc_Read 

к

With wrdDoc 

B

Следующей вашей .SaveAs рутина вне With - End With и, следовательно, даст вам ошибку

C

Вы непосредственно выхода из приложения слова без закрытие слова документа. Всегда полезно выдать wrdDoc.Close (False) после .SaveAs, потому что есть случаи, когда установленная надстройка может вносить изменения в ваш документ и выйти из приложения Word снова вызовет .SaveAs.

D

Вместо прохода через клетки и заменить текст, вы можете использовать .Find и Replace

Смежные вопросы