2012-01-26 2 views
0

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

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 на этой неделе, и я не очень опыт программирования, поэтому любая помощь будет принята с благодарностью. Мне нужно много времени, чтобы исправить проблемы. Заранее спасибо.

ответ

0

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

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

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