Добрый день всем! Заметил странную особенность, если не сказать больше. Если при выполнении макроса по созданию файла MS WORD в диспетчере задач WINDOWS нет процесса WINWORD.EXE - выполнение макроса прерывается ошибкой run-time error 462. Причём при нажатии кнопки debug подсвечивается строка с форматированием листа создаваемого файла - ParagraphFormat.LeftIndent = CentimetersToPoints(0).
Если процесс WINWORD.EXE активен - код работает исправно. Код макроса прикладывать пока не буду. Если потребуется, приложу. Заранее спасибо!
Добрый день всем! Заметил странную особенность, если не сказать больше. Если при выполнении макроса по созданию файла MS WORD в диспетчере задач WINDOWS нет процесса WINWORD.EXE - выполнение макроса прерывается ошибкой run-time error 462. Причём при нажатии кнопки debug подсвечивается строка с форматированием листа создаваемого файла - ParagraphFormat.LeftIndent = CentimetersToPoints(0).
Если процесс WINWORD.EXE активен - код работает исправно. Код макроса прикладывать пока не буду. Если потребуется, приложу. Заранее спасибо!rvshestakov
doober, просто в моём случае ошибка может быть очевидной, поэтому я подумал, что возможно и не в коде дело и моя ошибка лежит на поверхности
[vba]
Код
Dim PathForFile As String Dim NameWRD As String Set AppWord = CreateObject("Word.Application") NameWRD = Sheets(1).Range("НомерЗакупки").Value & ". Проект решения " & Sheets(1).Range("ТипПрезентации").Value & ".docx" PathForFile$ = ThisWorkbook.Path Set FSO = CreateObject("Scripting.FileSystemObject") If Not FSO.FolderExists(PathForFile$) Then FSO.CreateFolder (PathForFile$) ' End If Set FSO = Nothing
doober, просто в моём случае ошибка может быть очевидной, поэтому я подумал, что возможно и не в коде дело и моя ошибка лежит на поверхности
[vba]
Код
Dim PathForFile As String Dim NameWRD As String Set AppWord = CreateObject("Word.Application") NameWRD = Sheets(1).Range("НомерЗакупки").Value & ". Проект решения " & Sheets(1).Range("ТипПрезентации").Value & ".docx" PathForFile$ = ThisWorkbook.Path Set FSO = CreateObject("Scripting.FileSystemObject") If Not FSO.FolderExists(PathForFile$) Then FSO.CreateFolder (PathForFile$) ' End If Set FSO = Nothing
Ужас, что происходит с форматированием блока (/code)? на предпросмотре, всё корректно отображается. [moder]Потому что для кода надо использовать [vba][code] (кнопка #)[/moder]
Ужас, что происходит с форматированием блока (/code)? на предпросмотре, всё корректно отображается. [moder]Потому что для кода надо использовать [vba][code] (кнопка #)[/moder]rvshestakov
rvshestakov, нужно сначало проверить, запущено ли приложение word:[vba]
Код
On Error Resume Next Set AppWord = GetObject(, "Word.Application") If Err <> 0 Then Set AppWord = CreateObject("Word.Application") End If On Error GoTo 0
[/vba] А потом уже можно работать с файлами[vba]
Код
AppWord.Documents.Add
[/vba]
rvshestakov, нужно сначало проверить, запущено ли приложение word:[vba]
Код
On Error Resume Next Set AppWord = GetObject(, "Word.Application") If Err <> 0 Then Set AppWord = CreateObject("Word.Application") End If On Error GoTo 0
комментарии с саппорта Майкрософта: Visual Basic устанавливает ссылку на Excel из-за наличия в коде строки, вызывающей объект, метод или свойство Excel без квалификации элемента с помощью объектной переменной Excel. Visual Basic не освобождает эту ссылку до завершения работы программы. Эта ошибочная ссылка конфликтует с кодом автоматизации, если этот код выполняется более одного раза. Чтобы устранить эту проблему, измените код таким образом, чтобы каждый вызов объекта, метода или свойства Excel квалифицировался соответствующей объектной переменной.
тоже не помогло.
комментарии с саппорта Майкрософта: Visual Basic устанавливает ссылку на Excel из-за наличия в коде строки, вызывающей объект, метод или свойство Excel без квалификации элемента с помощью объектной переменной Excel. Visual Basic не освобождает эту ссылку до завершения работы программы. Эта ошибочная ссылка конфликтует с кодом автоматизации, если этот код выполняется более одного раза. Чтобы устранить эту проблему, измените код таким образом, чтобы каждый вызов объекта, метода или свойства Excel квалифицировался соответствующей объектной переменной.