Run time error 462 vba excel

First problem : Run-time error ‘462’ : The remote server machine does not exist or is unavailable.

The issue here is the use of :

  1. Late Biding : Dim Smthg As Object or
  2. Implicit references : Dim Smthg As Range instead of
    Dim Smthg As Excel.Range or Dim Smthg As Word.Range

So you need to fully qualified all the variables that you set (I’ve done that in your code)



Second problem

You work with multiple instances of Word and you only need one to handle multiple documents.

So instead of creating a new one each time with :

Set WordApp = CreateObject("Word.Application")

You can get an open instance (if there is one) or create one with that code :

On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
If Err.Number > 0 Then Set WordApp = CreateObject("Word.Application")
On Error GoTo 0

And once you’ve put this at the start of your proc, you can use this instance until the end of the proc and before the end, quit it to avoid having multiple instances running.


Here is your code reviewed and cleaned, take a look :

Sub Docs()

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

' Control if folder exists, if not create folder
If Len(Dir("F:documents" & Year(Date), vbDirectory)) = 0 Then MkDir "F:documents" & Year(Date)

' Get or Create a Word Instance
On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
If Err.Number > 0 Then Set WordApp = CreateObject("Word.Application")
On Error GoTo 0

Workbooks("exampleworkbook.xlsm").Sheets("examplesheet").Range("A1:C33").Copy

With WordApp
    .Visible = True
    .Activate
    Set WordDoc = .Documents.Add
    .Selection.PasteSpecial Link:=False, DataType:=wdPasteRTF, _
                Placement:=wdInLine, DisplayAsIcon:=False
End With

With Application
    .Wait (Now + TimeValue("0:00:02"))
    .CutCopyMode = False
End With

With WordDoc
    .PageSetup.TopMargin = WordApp.CentimetersToPoints(1.4)
    .PageSetup.LeftMargin = WordApp.CentimetersToPoints(1.5)
    .PageSetup.BottomMargin = WordApp.CentimetersToPoints(1.5)
    .SaveAs "F:documents" & Year(Date) & "examplename " & Format(Now, "YYYYMMDD") & ".docx"
    .Close
End With

' export sheet 2 to Word
Workbooks("exampleworkbook.xlsm").Sheets("examplesheet2").Range("A1:C33").Copy

Set WordDoc = WordApp.Documents.Add
WordApp.Selection.PasteSpecial Link:=False, DataType:=wdPasteRTF, _
                        Placement:=wdInLine, DisplayAsIcon:=False
Application.Wait (Now + TimeValue("0:00:02"))

With WordDoc
    .PageSetup.LeftMargin = WordApp.CentimetersToPoints(1.5)
    .PageSetup.TopMargin = WordApp.CentimetersToPoints(1.4)
    .PageSetup.BottomMargin = WordApp.CentimetersToPoints(1.5)
    .SaveAs "F:files" & Year(Date) & "name" & Format(Now, "YYYYMMDD") & ".docx"
    .Close
End With

Application.CutCopyMode = False
WordApp.Quit
Set WordDoc = Nothing
Set WordApp = Nothing

' Variables Outlook
Dim objOutlook As Outlook.Application
Dim objMail As Outlook.MailItem
Dim rngTo As Excel.Range
Dim rngCc As Excel.Range
Dim rngSubject As Excel.Range
Dim rngBody As Excel.Range
Dim rngAttach1 As Excel.Range
Dim rngAttach2 As Excel.Range
Dim numSend As Integer


On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
If Err.Number > 0 Then Set objOutlook = CreateObject("Outlook.Application")
On Error GoTo 0


Set objMail = objOutlook.CreateItem(0)

' Outlook
On Error GoTo handleError

With Sheets("Mail")
    Set rngTo = .Range("B11")
    Set rngCc = .Range("B12")
    Set rngSubject = .Range("B13")
    Set rngBody = .Range("B14")
    Set rngAttach1 = .Range("B15")
    Set rngAttach2 = .Range("B16")
End With

With objMail
    .To = rngTo.Value
    .Subject = rngSubject.Value
    .CC = rngCc.Value
    '.Body = rngBody.Value
    .Body = "Hi," & _
            vbNewLine & vbNewLine & _
            rngBody.Value & _
            vbNewLine & vbNewLine & _
            "Kind regards,"
    .Attachments.Add rngAttach1.Value
    .Attachments.Add rngAttach2.Value
    .Display
     Application.Wait (Now + TimeValue("0:00:01"))
     Application.SendKeys "%s"
  ' .Send       ' Instead of .Display, you can use .Send to send the email _
                or .Save to save a copy in the drafts folder
End With

numSend = numSend + 1

GoTo skipError

handleError:
numErr = numErr + 1
oFile.WriteLine "*** ERROR *** Email for account" & broker & " not sent. Error: " & Err.Number & " " & Err.Description
skipError:

On Error GoTo 0

MsgBox "Sent emails: " & numSend & vbNewLine & "Number of errors: " & numErr, vbOKOnly + vbInformation, "Operation finished"

GoTo endProgram

cancelProgram:
MsgBox "No mails were sent.", vbOKOnly + vbExclamation, "Operation cancelled"

endProgram:
Set objOutlook = Nothing
Set objMail = Nothing
Set rngTo = Nothing
Set rngSubject = Nothing
Set rngBody = Nothing
Set rngAttach1 = Nothing
Set rngAttach2 = Nothing

End Sub

Все доброй ночи!  

  Очень извиняюсь, что касаюсь избитой темы (наверное), но что-то я не смог найти ответа в таком форуме, хотя регулярно пользуюсь подсказками пользователей. До сей поры хватало.  

  Суть вот в чем:  
Я хочу из существующей таблицы Excel выдернуть отсортированные значения и вставить их в Word. Казалось бы, что может быть проще:  

  Sub Import2()  
‘  
‘  

  ‘  
   Mesyats = UserForm1.ComboBox1.Value  
   ‘Mesyats = «Ноябрь»  
   Dim iLastRow As Long  
   Excel.Sheets(«123»).Select  
   iLastRow = Cells(Rows.Count, 1).End(xlUp).Row  
   Excel.ActiveSheet.ListObjects(«Таблица 3»).Range.AutoFilter Field:=1, Criteria1:=Mesyats  
   Excel.Range(«B3:D» + Right((Str(iLastRow)), (Len(Str(iLastRow) — 1)))).Select  
   Excel.Selection.Copy  
   Excel.Sheets(«123»).Select  
   On Error GoTo ErrStartWord  
   Dim Wda As Word.Application  
   Set Wda = GetObject(, «Word.Application»)  
   Set Wda = Nothing  
   ‘If Tasks.Exists(«Microsoft Word») Then  
   ‘End If  
   ‘Word.Application.Documents.Item  
   Word.Documents.Open Filename:=»c:OLS ReportsForm 2.docx»  
   Word.Application.Activate  
   Word.Selection.StartOf Unit:=wdStory, Extend:=wdMove  
   Word.Selection.MoveDown Unit:=wdLine, Count:=9  
   Word.Selection.MoveLeft Unit:=wdCharacter, Count:=17  
   Word.Selection.Delete Unit:=wdCharacter, Count:=7  
   Word.Selection.TypeText (Mesyats)  
   Word.Selection.MoveEnd  
   Word.Selection.MoveDown Unit:=wdLine, Count:=6  
   Word.Selection.MoveLeft Unit:=wdCharacter, Count:=1  
   WordBasic.EditPaste2  
   ‘Word.Application.Dialogs(wdDialogFileSaveAs).Show  
   ‘Word.Documents.Close  
ErrStartWord:  
   If Err.Number = 429 Then ‘ Word не запущен  
    Dim appWD As Object  
    Set appWD = CreateObject(«Word.Application»)  
    appWD.Visible = True  
    Resume Next  
   End If  
     If Err.Number = 0 Then  
      ‘MsgBox «Success!»  
     Else: MsgBox Err.Description & » » & Err.Number, vblnformation  
     End If  
End Sub  

  Однако не тут-то было (((    

  При повторном запуске скрипт срубается на строке «Word.Documents.Open Filename:=»c:OLS ReportsForm 2.docx»»  

  с сообщением «The remote server machine does not exist or is unavailable 462», как и положено обработчику ошибок в теле сркипта. Надо полностью закрыть Excel и заново в него зайти. Тогда вновь все заработает, на 1 раз :/ Я так думаю, что скрипт по завершению не очищает какие-то переменные, и нужно выйти из Excel.    

  Очень надо сделать, работа горит. Сижу уже 4-й час, и ничего не могу поделать ((((  

  И да. Использую Word 2007 и Excel 2007. Как думаете, в 2003 офисе такой проблемы не возникнет? А то будет жаль перставлять из-за этого…..    

  Все харанее спасибо.

  • Remove From My Forums
  • Question

  • I am trying to access a webpage from excel using VBA. I can get internet explorer to launch, and I see the webpage come up, but I get a runtime error 462 when I hit the Do Until internet.ReadyState >= 4 line of code. any ideas? ultimately I want to be able
    to parse a site and get a list of the links on that site and pick one, and then «click» on that link. suggestions and help would be great. here is the function (that I found on the web) that I am using:

    Public Sub clicklick()

    Dim internet As Object
    Dim internetdata As Object
    Dim div_result As Object
    Dim header_links As Object
    Dim link As Object
    Dim URL As String
    
    Set internet = CreateObject("InternetExplorer.Application")
    internet.Visible = True
    
    URL = "https://www.google.co.in/search?q=how+to+program+in+vba"
    internet.Navigate URL
    
    
    Do Until internet.ReadyState >= 4
        DoEvents
    Loop
    
    Application.Wait Now + TimeSerial(0, 0, 5)
    
    Set internetdata = internet.Document
    Set div_result = internetdata.getelementbyid("res")
    
    
    Set header_links = div_result.getelementsbytagname("h3")
    
    For Each h In header_links
        Set link = h.ChildNodes.Item(0)
        Cells(Range("A" & Rows.count).End(xlUp).row + 1, 1) = link.href
    Next
    
    MsgBox "done"

    End Sub

    thank you, alan

Содержание

  1. Excel automation fails second time code runs
  2. Symptoms
  3. Cause
  4. Resolution
  5. Status
  6. More Information
  7. Steps to reproduce the behavior
  8. References
  9. You may receive the «Run-time error ‘-2147023174’ (800706ba)» error message or the «Run-time error ‘462’» when you run Visual Basic code that uses Automation to control Word
  10. Symptoms
  11. Cause
  12. Resolution
  13. Status
  14. More Information
  15. Steps to Reproduce Behavior
  16. References
  17. Thread: RESOLVED: [VBA Word/Excel] Error 462 when running the code twice
  18. RESOLVED: [VBA Word/Excel] Error 462 when running the code twice
  19. «Ошибка времени выполнения 462: удаленный серверный компьютер не существует или недоступен» при повторном запуске кода VBA
  20. Первая проблема: Ошибка времени выполнения ‘462’: Удаленный серверный компьютер не существует или недоступен.
  21. Вторая проблема
  22. Vba excel ошибка 462

Excel automation fails second time code runs

Symptoms

While running code that uses Automation to control Microsoft Excel, one of the following errors may occur:

In Microsoft Excel 97 and in later versions of Excel, you receive one of the following error message:

Error message 1

Run-time error ‘1004’:
Method ‘ ‘ of object ‘_Global’ failed

Error message 2

Application-defined or object-defined error

In Microsoft Excel 95, you receive one of the following error messages:

Error message 1

Run-time error ‘-2147023174’
OLE Automation error

Error message 2

Run-time error ‘462’:
The remote server machine does not exist or is unavailable.

Cause

Visual Basic has established a reference to Excel because of a line of code that calls an Excel object, method, or property without qualifying the element with an Excel object variable. Visual Basic does not release this reference until you end the program. This errant reference interferes with automation code when the code is run more than one time.

Resolution

To resolve this problem, modify the code so each call to an Excel object, method, or property is qualified with the appropriate object variable.

Status

This behavior is by design.

More Information

To automate Microsoft Excel, you establish an object variable that usually refers to the Excel Application object or the Excel Workbook object. Other object variables can then be set to refer to a Worksheet, a Range, or other objects in the Microsoft Excel object model. When you write code to use an Excel object, method, or property, you should always precede the call with the appropriate object variable. If you do not, Visual Basic establishes its own reference to Excel. This reference might cause problems when you try to run the automation code multiple times. Note that even if the line of code begins with the object variable, a call may be made to an Excel object, method, or property in the middle of the line of code that is not preceded with an object variable.

The following steps illustrate how to reproduce this issue and how to correct the issue.

Steps to reproduce the behavior

Start a new Standard EXE project in Visual Basic. Form1 is created by default.

On the Project menu, click References, and then check the Object Library for the version of Excel that you intend to automate.

Place a CommandButton control on Form1.

Copy the following code example to the Code Window of Form1.

On the Run menu, click Start, or press F5 to start the program.

Click the CommandButton control. No error occurs. However, a reference to Excel has been created and has not been released.

Click the CommandButton control again. Notice that you receive one of the error messages that are discussed in the «Symptoms» section.

Note The error message occurs because the code refers to the method of the cell without preceding the call with the
xlSheet object variable.

Stop the project and change the following line of code:

Change the line of code to resemble the following line of code.

Run the program again. Notice that you can run the code multiple times without receiving an error message.

References

For more information, click the following article numbers to view the articles in the Microsoft Knowledge Base:

167223 Microsoft Office 97 Automation Help file available

189618 You may receive the «Run-time error ‘-2147023174’ (800706ba)» error message or the «Run-time error ‘462’» when you run Visual Basic code that uses Automation to control Word

Источник

You may receive the «Run-time error ‘-2147023174’ (800706ba)» error message or the «Run-time error ‘462’» when you run Visual Basic code that uses Automation to control Word

Symptoms

When you run Microsoft Visual Basic code that uses Automation to control Microsoft Word, you may receive one of the following error messages:

Error message 1

Run-time error ‘-2147023174’ (800706ba)
Automation error

Error message 2

Run-time error ‘462’: The remote server machine does not exist or is unavailable

Cause

Visual Basic has established a reference to Word due to a line of code that calls a Word object, method, or property without qualifying it with a Word object variable. Visual Basic does not release this reference until you end the program. This errant reference interferes with automation code when the code is run more than once.

Resolution

Modify the code so that each call to a Word object, method, or property is qualified with the appropriate object variable.

Status

This behavior is by design.

More Information

To automate Word, you establish an object variable that usually refers to the Word Application or Document object. Other object variables can then be set to refer to a Selection, a Range, or other objects in the Word object model. When you write code to use a Word object, method, or property, you should always precede the call with the appropriate object variable. If you do not, Visual Basic uses a hidden global variable reference which it sets to the currently running instance. If Word is shutdown, or if the declared object variable is released, the hidden global variable will now reference an invalid (destroyed) object. When running the automation code again, calls to this hidden object variable will fail with the aforementioned error.

The following steps illustrate how to reproduce this problem, and how to correct it.

Steps to Reproduce Behavior

Start a new Standard EXE project in Visual Basic. Form1 is created by default.

Click References from the Project menu, and then click one of the following options:

For Office Word 2007, click Microsoft Word 12.0 Object Library

For Word 2003, click Microsoft Word 11.0 Object Library

For Word 2003, click Microsoft Word 10.0 Object Library

For Word 2000, click Microsoft Word 9.0 Object Library.

For Word 97, click Microsoft Word 8.0 Object Library.

Place a CommandButton on Form1.

Copy the following code to the Code Window of Form1:

On the Run menu, click Start or press the F5 key to start the program.

Click the CommandButton. No error occurs. However, a reference to Word has been created and has not been released.

Click the CommandButton again and note that you receive the error previously described.

Note The error occurs because the code refers to the InchesToPoints Method without preceding the call with the oWord object variable.

Stop the project and change the following line:

Run the program again. Then, click the CommandButton. No error occurs.

Click the CommandButton again and note that you receive the error.

Note The error occurs because the code refers to the ActiveDocument Section one’s Range object without preceding the call with the oWord object variable.

Stop the project and change the following line:

Run the program again. Note that you can run the code multiple times without error.

When building a Visual Basic project automating Word, if your project has a reference to the Microsoft Word Object Library, sample code for the objects, methods, and properties of the Word Object Model is available from the Word Help file. When the cursor is over a key word in your code, you will see any applicable Help text by pressing the F1 key.

The sample code in the Help topic will be the Microsoft Word Visual Basic for Applications code. It will not show the object references that your Visual Basic code requires. You will need to add the qualifiers as appropriate.

References

For additional information, please see the following articles in the Microsoft Knowledge Base:

178510 PRB: Excel Automation Method of Object ‘_Global’Failed

167223 Microsoft Office 97 Automation Help File Available
For additional information about the Automation of Office applications, click the article number below to view the article in the Microsoft Knowledge Base:

222101 HOWTO: Find and Use Office Object Model Documentation

Источник

Thread: RESOLVED: [VBA Word/Excel] Error 462 when running the code twice

Thread Tools
Display

RESOLVED: [VBA Word/Excel] Error 462 when running the code twice

Hi, this is my first post, so if I’ve done something wrong like forgotten code tags or posted in the wrong section, please don’t yell at me

Before I explain the problem, I want to say that I am aware other people have posted this same problem, even on this website, but the solutions that seem to be working for everyone else have not worked for me. I have researched this problem for some 5 hours now and spent days trying to resolve it. Some examples of other threads that I have read with the same issue:

The issue is that I am writing code in VBA Word which calls an instance of Excel, does some stuff, and then closes Excel. Running the code again a second time usually results in the infamous error 462: «The remote server machine does not exist or is unavailable».

The Microsoft knowledge base (link above) advises to «Modify the code so that each call to a Word object, method, or property is qualified with the appropriate object variable.» I have gone through with a fine tooth comb and made sure that everything is qualified and referenced correctly and explicitly.

Furthermore, after reading the second article (link above) I have used late-binding on their suggestion to remove the issue of the Excel application continuing to run in the background after its supposed to be closed. I have found the [first instance of] offending line which causes the Excel app to continue to run, which, if omitted, makes the problem go away.

The code is quite lengthy so I will only post the relevant parts:

The code in red is where the error message appears when it is run a second time. However, it seems that Excel is reference properly here, so no idea why this is occurring. I have tried the following variations with no success:

Note that the above code is not resolving the original error of having the Excel app continuing to run in the background. I am in the middle of trying to fix this when I started getting the Error 462. To isolate the latter, add an early exit like:

Hope this makes sense, and hope someone can help, because I am at the end of my tether.

Last edited by Earlien; Jan 3rd, 2012 at 07:22 PM . Reason: Problem resolved

Источник

«Ошибка времени выполнения 462: удаленный серверный компьютер не существует или недоступен» при повторном запуске кода VBA

Ниже приведен код , работающий нормально при первом запуске, но когда мне нужно запустить его второй раз, он дает мне эту ошибку:

Ошибка времени выполнения ‘462’: удаленный сервер не существует или недоступен

Это происходит не всегда, поэтому я полагаю, что это имеет какое-то отношение к Word (не), работающему в фоновом режиме…? Что мне здесь не хватает?

Первая проблема: Ошибка времени выполнения ‘462’: Удаленный серверный компьютер не существует или недоступен.

Проблема здесь в использовании:

  • Late Biding: Dim Smthg As Object или
  • Неявные ссылки: Dim Smthg As Range вместо
    Dim Smthg As Excel.Range или Dim Smthg As Word.Range

Итак, вам нужно полностью квалифицировать все переменные, которые вы установили (я сделал это в вашем коде)

Вторая проблема

Вы работаете с несколькими экземплярами Word и вам нужен только один для обработки нескольких документов.

Поэтому вместо создания нового каждый раз с помощью

Вы можете получить открытый экземпляр (если он есть) или создать его с помощью этого кода:

И , как только вы положили это на начало своего proc, вы можете использовать этот экземпляр до конца для proc и до конца, выйдите из него, чтобы избежать запуска нескольких экземпляров.

Вот ваш код просмотрен и очищен, посмотрите:

Если это работает в Excel, вам, вероятно, нужно указать, что CentimetersToPoints поступает из библиотеки Word. Как бы то ни было, VBA должен угадывать, и иногда он, вероятно, не может его найти. Поэтому попробуйте:

Источник

Vba excel ошибка 462

Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ !
4. Используйте теги [ code=vba ] . текст программы. [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
FAQ Сайта FAQ Раздела Кладовка Наши Исходники API-Guide Поиск по Разделу MSDN Library Online Google
Ваше мнение о модераторах: SCINER, B.V.

Источник

Макрос по созданию файла MS WORD. run-time error 462

rvshestakov

Дата: Четверг, 19.03.2015, 16:35 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

Добрый день всем!
Заметил странную особенность, если не сказать больше.
Если при выполнении макроса по созданию файла MS WORD в диспетчере задач WINDOWS нет процесса WINWORD.EXE — выполнение макроса прерывается ошибкой run-time error 462.
Причём при нажатии кнопки debug подсвечивается строка с форматированием листа создаваемого файла — ParagraphFormat.LeftIndent = CentimetersToPoints(0).

Если процесс WINWORD.EXE активен — код работает исправно.
Код макроса прикладывать пока не буду. Если потребуется, приложу.
Заранее спасибо!

 

Ответить

doober

Дата: Четверг, 19.03.2015, 17:22 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 912


Репутация:

317

±

Замечаний:
0% ±


Excel 2010

Код макроса прикладывать пока не буду

Здесь вам помогут без кода макроса.


 

Ответить

rvshestakov

Дата: Пятница, 20.03.2015, 06:36 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

doober, :D
просто в моём случае ошибка может быть очевидной, поэтому я подумал, что возможно и не в коде дело и моя ошибка лежит на поверхности :)

[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

      AppWord.Documents.Add
      AppWord.Selection.Paste
      AppWord.Selection.WholeStory
      If AppWord.Selection.PageSetup.Orientation = wdOrientPortrait Then
          AppWord.Selection.PageSetup.Orientation = wdOrientLandscape
      Else
          AppWord.Selection.PageSetup.Orientation = wdOrientPortrait
      End If
      With AppWord.Selection.ParagraphFormat
          .SpaceBefore = 0
          .SpaceBeforeAuto = False
          .SpaceAfter = 0
          .SpaceAfterAuto = False
          .LineUnitBefore = 0
          .LineUnitAfter = 0
          .LeftIndent = CentimetersToPoints(0)
          .SpaceBeforeAuto = False
          .SpaceAfterAuto = False
          .SpaceBeforeAuto = False
          .SpaceAfterAuto = False
          .FirstLineIndent = CentimetersToPoints(0)
      End With
With AppWord.Selection
          .Font.Name = «Times New Roman»
‘       .Font.Size = 14
          .PageSetup.Orientation = wdOrientLandscape
          .PageSetup.PageWidth = CentimetersToPoints(42)
          .PageSetup.PageHeight = CentimetersToPoints(29.7)
          .PageSetup.TopMargin = CentimetersToPoints(1)
          .PageSetup.BottomMargin = CentimetersToPoints(1)
          .PageSetup.LeftMargin = CentimetersToPoints(1.5)
          .PageSetup.RightMargin = CentimetersToPoints(1)
End With
      AppWord.Visible = True
     ‘AppWord.Documents.Add.Range.PasteExcelTable False, False, False
      AppWord.ActiveDocument.SaveAs2 PathForFile$ & «» & NameWRD, _
                      12, False, «», True, «», False, False, False, False, False, 14
      AppWord.ActiveDocument.Close
      Application.CutCopyMode = False
      Set AppWord = Nothing

[/vba]

Сообщение отредактировал rvshestakovПятница, 20.03.2015, 06:41

 

Ответить

rvshestakov

Дата: Пятница, 20.03.2015, 06:42 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

Ужас, что происходит с форматированием блока (/code)? <_<
на предпросмотре, всё корректно отображается.
[moder]Потому что для кода надо использовать [vba][code] (кнопка #)[/moder]

 

Ответить

Manyasha

Дата: Пятница, 20.03.2015, 07:39 |
Сообщение № 5

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

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]


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал ManyashaПятница, 20.03.2015, 07:40

 

Ответить

rvshestakov

Дата: Пятница, 20.03.2015, 09:51 |
Сообщение № 6

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

Manyasha, добавил. не помогло :(

 

Ответить

rvshestakov

Дата: Пятница, 20.03.2015, 10:01 |
Сообщение № 7

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

комментарии с саппорта Майкрософта:
Visual Basic устанавливает ссылку на Excel из-за наличия в коде строки, вызывающей объект, метод или свойство Excel без квалификации элемента с помощью объектной переменной Excel. Visual Basic не освобождает эту ссылку до завершения работы программы. Эта ошибочная ссылка конфликтует с кодом автоматизации, если этот код выполняется более одного раза.
Чтобы устранить эту проблему, измените код таким образом, чтобы каждый вызов объекта, метода или свойства Excel квалифицировался соответствующей объектной переменной.

тоже не помогло.

 

Ответить

Manyasha

Дата: Пятница, 20.03.2015, 10:59 |
Сообщение № 8

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

rvshestakov, Вы же сами решение и описали:

измените код таким образом, чтобы каждый вызов объекта, метода или свойства Excel квалифицировался соответствующей объектной переменной.

Везде, где вызываются методы, привяжите их к объекту ворда, например
[vba]

Код

    With AppWord.Selection.ParagraphFormat
           .SpaceBefore = 0
           .SpaceBeforeAuto = False
           .SpaceAfter = 0
           .SpaceAfterAuto = False
           .LineUnitBefore = 0
           .LineUnitAfter = 0
           .LeftIndent = AppWord.CentimetersToPoints(0)’изменила
           .SpaceBeforeAuto = False
           .SpaceAfterAuto = False
           .SpaceBeforeAuto = False
           .SpaceAfterAuto = False
           .FirstLineIndent = AppWord.CentimetersToPoints(0)’изменила
       End With

[/vba]
Аналогично и в других строчках. Не [vba]

Код

.PageSetup.PageWidth = CentimetersToPoints(42)

[/vba]а вот так[vba]

Код

.PageSetup.PageWidth = AppWord.CentimetersToPoints(42)

[/vba]

Если не получится, прикладывайте пример.


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал ManyashaПятница, 20.03.2015, 11:01

 

Ответить

rvshestakov

Дата: Пятница, 20.03.2015, 12:21 |
Сообщение № 9

Группа: Пользователи

Ранг: Участник

Сообщений: 56


Репутация:

6

±

Замечаний:
0% ±


Excel 2010

Manyasha, спасибо за помощь. всё в порядке теперь (пока что) :)
Мой случай заболевания — «смотрю в книгу, вижу фигу».

 

Ответить

Like this post? Please share to your friends:
  • Run time error 438 vba excel как исправить
  • Run time error 424 vba excel object required как исправить
  • Run time error 380 excel
  • Run time error 3706 vba excel
  • Run time error 2147467259 80004005 vba excel