Использование цикла и сохранения для сохранения нескольких вложенных документов Word на диск C (или другие) - PullRequest
0 голосов
/ 26 января 2012

У меня есть лист Excel, в котором сохранены документы из нескольких слов, и я хотел бы программно сохранить их из встроенного документа Excel на диск.Я использовал некоторый код, который нашел здесь, и попытался добавить цикл, чтобы он просматривал каждый документ и сохранял его, но он завершается с ошибками до завершения цикла.Вот код:

Sub aaSaveEmbedded1()

Application.ScreenUpdating = False

i = 1
Do Until i = 10


Dim num As String
num = Cells(i + 9, 4).Value
Dim nam As String
nam = Cells(i + 9, 8).Value & ".doc"
Dim sh1 As Shape
Dim objWord As Object ''Word.Document
Dim objOLE As OLEObject

''The shape holding the object from 'Create from file'

Set sh1 = ActiveSheet.Shapes(i)

''Activate the contents of the object
sh1.OLEFormat.Activate

''The OLE Object contained
Set objOLE = sh1.OLEFormat.Object

''This is the bit that took time
Set objWord = objOLE.Object

''Save it
objWord.SaveAs2 Filename:="C:\Users\rchandler\Desktop\condor project\Procedures\1_Drilling Procedures\" & num & nam, _
FileFormat:= _
wdFormatTemplate  ''1=wdFormatTemplate


objWord.Application.Quit
Set objWord = Nothing
Set sh1 = Nothing
Set objOLE = Nothing
num = Empty
nam = Empty

i = i + 1

Loop

Application.ScreenUpdating = True

End Sub

Когда я запускаю код, первая итерация работает и первый документ сохраняется.После этого я получаю сообщение об ошибке «Не удается запустить исходное приложение для этого объекта» в этой строке:

sh1.OLEFormat.Activate

Я только начал использовать VBA на этой неделе, и я делаюне очень большой опыт программирования, поэтому любая помощь будет принята с благодарностью.Мне нужно много времени, чтобы решить проблемы.Заранее спасибо.

1 Ответ

0 голосов
/ 26 января 2012

Я создал документ Excel 2010, вставил два объекта типа Word, набрал «Test 1» в первый контейнер и «Test 2» во второй и запустил ваш код - он сразу же выдал ошибку, потому что вы активировали OLE-объект и метод SaveAs2 не могут сохранить то, что редактируется. Однако, когда я прокомментировал активацию, она работала просто отлично,

Мне пришлось изменить SaveAs, чтобы использовать i & i вместо num & num в имени файла (так как у меня не было значения, заполненного в ячейках, которые вы читали и присваивали переменной num). Возможно ли, что ваши имена файлов на основе num & num не являются уникальными во втором раунде? Если это так, то это определенно вызовет бомбу в методе SaveAs2 (если файл уже существует).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...