2014-01-09 5 views
3

У меня есть макрос, который создает отчет эксперимента на основе шаблона слова, а затем сохраняет его на удаленном сервере. Ячейка выбрана на листе Excel, выполняется макрос, экземпляр Word открывается пустым шаблоном, и файл сохраняется на основе выбранной ячейки и других данных. Я хочу сделать редактирование заголовка в пустом шаблоне и обновить его до имени эксперимента, который находится в первом столбце строки выбранной ячейки.Как изменить текст в Word Doc из Excel VBA, когда Word Doc находится на сервере?

Приведенный ниже код работает, когда я открываю файл из локальных файлов, но не работает, когда файл находится на сервере.

Dim oWord As Object 
    Set oWord = CreateObject("Word.Application") 
    oWord.Visible = True 
    oWord.Activate 

    ' Open a new instance of the ExperimentTemplate and save it 
    oWord.Documents.Add Template:="ExperimentTemplate", NewTemplate:=False, DocumentType:=0 
    oWord.ActiveDocument.SaveAs FileName:=fPath & "example.docx", FileFormat:=wdFormatXMLDocument 'fPath is the path to the folder where file will be saved on the server 
    oWord.ActiveDocument.Close 

    ' Re-open file and change Experiment Name 
    oWord.Documents.Open FileName:=fPath & "example.docx" 
    Set oSelection = oWord.Selection 
    oSelection.Find.Text = "Experiment Name" 
    oSelection.Find.Replacement.Text = name 'defined as the text in the first cell of the selected column 
    oSelection.Find.Execute Replace:=wdReplaceAll 
    oWord.ActiveDocument.Save 
    oWord.Quit 
    Set oWord = Nothing 

Я знаю, что мой код не самый элегантный, но это мало беспокойства для меня, если это не влияет на функциональность я пытаюсь достичь. Любая помощь будет принята с благодарностью. Это разрушило мою голову уже две недели!

+0

Что вы имеете в виду, не работает? Любое сообщение об ошибке? –

+0

Когда я запускаю это локально, текст «Имя эксперимента», расположенный в верхней части файла, заменяется текстом, расположенным в первом столбце строки выбранной ячейки. Но когда я запускаю его для файла, созданного на сервере, он, похоже, пропускает замену текста, а «Имя эксперимента» остается в верхней части файла. Никаких изменений в файле – Malteaser6900

+1

Пробовал ли вы отлаживать код, перейдя через него? –

ответ

4

Можете ли вы попробовать этот код для меня?

Dim oWord As Object 
Dim oSelection As Object 
Dim sel As Object 

Set oWord = CreateObject("Word.Application") 
oWord.Visible = True 
oWord.Activate 

oWord.Documents.Add Template:="ExperimentTemplate", NewTemplate:=False, DocumentType:=0 
oWord.ActiveDocument.SaveAs FileName:=fPath & "example.docx", FileFormat:=wdFormatXMLDocument 'fPath is the path to the folder where file will be saved on the server 
oWord.ActiveDocument.Close 

' Re-open file and change Experiment Name 
oWord.Documents.Open FileName:=fPath & "example.docx" 

Set oSelection = oWord.Documents(1).Content 

oSelection.Select 

Set sel = oWord.Selection 

With sel 
    .Find.ClearFormatting 
    .Find.Replacement.ClearFormatting 
    With .Find 
     .Text = "Experiment Name" 
     .Replacement.Text = Name 'Hope you have declared it somewhere? 
     .Forward = True 
     .Wrap = 1 'wdFindContinue 
     .Format = False 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchWildcards = False 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
     sel.Find.Execute Replace:=2 'wdReplaceAll 
    End With 
End With 
+0

Это именно то, что Я искал! я знал, что у меня возникли проблемы с выбором текста ... Спасибо миллион за вашу помощь – Malteaser6900

+0

@ Malteaser6900: Я рад, что он сработал для вас :) –

+0

+ 1 Nice Followup! –

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