Vba как открыть документ word

Создание нового документа Word или открытие существующего из кода VBA Excel. Методы Documents.Add и Documents.Open. Сохранение и закрытие документа.

Работа с Word из кода VBA Excel
Часть 2. Создание и открытие документов Word
[Часть 1] [Часть 2] [Часть 3] [Часть 4] [Часть 5] [Часть 6]

Новый документ Word создается из кода VBA Excel с помощью метода Documents.Add:

Sub Test1()

Dim myWord As New Word.Application

Dim myDocument As Word.Document

Set myDocument = myWord.Documents.Add

myWord.Visible = True

End Sub

Переменную myDocument можно объявить с типом Object, но тогда не будет ранней привязки к типу Word.Document и подсказок при написании кода (Auto List Members).

Открытие существующего документа

Существующий документ Word открывается из кода VBA Excel с помощью метода Documents.Open:

Sub Test2()

Dim myWord As New Word.Application

Dim myDocument As Word.Document

Set myDocument = _

myWord.Documents.Open(«C:Документ1.docx»)

myWord.Visible = True

End Sub

Замените в этой процедуре строку «C:Документ1.docx» на адрес своего файла.

Подключение к открытому документу

Присвоение переменной ссылки на существующий экземпляр Word.Application осуществляется в VBA Excel с помощью функции GetObject:

Sub Test3()

Dim myWord As Object, myDoc As Word.Document

On Error GoTo Instr

    Set myWord = GetObject(, «Word.Application»)

    Set myDoc = myWord.Documents(«Документ1.docx»)

    myDoc.Range.InsertAfter «Добавляем новый текст, подтверждающий подключение к открытому документу.»

Exit Sub

Instr:

    MsgBox «Произошла ошибка: « & Err.Description

End Sub

Если открытого приложения Word нет, выполнение функции GetObject приведет к ошибке. Также произойдет ошибка, если не будет найден указанный документ (в примере — «Документ1.docx»).

Сохранение и закрытие документа

Сохранение нового документа

Чтобы сохранить из кода VBA Excel новый документ Word, используйте метод SaveAs2 объекта Document:

myDocument.SaveAs2 («C:Документ2.docx»)

Замените «C:Документ2.docx» на путь к нужному каталогу с именем файла, под которым вы хотите сохранить новый документ.

Сохранение изменений в открытом документа

Сохраняйте изменения в существующем документе с помощью метода Document.Save или параметра SaveChanges метода Document.Close:

‘Сохранение изменений документа

myDocument.Save

‘Сохранение изменений документа

‘при закрытии

myDocument.Close ‘по умолчанию True

myDocument.Close True

myDocument.Close wdSaveChanges

‘Закрытие документа без

‘сохранения изменений

myDocument.Close False

myDocument.Close wdDoNotSaveChanges

Закрытие любого сохраненного документа

Метод Document.Close закрывает документ, но не приложение. Если работа с приложением закончена, оно закрывается с помощью метода Application.Quit.

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

Documents.Open method (Word)

vbawd10.chm158072851

vbawd10.chm158072851

word

Word.Documents.Open

9e61e9d5-58d1-833a-5f93-b87299deb400

06/08/2017

medium

Documents.Open method (Word)

Opens the specified document and adds it to the Documents collection. Returns a Document object.

Syntax

expression.Open (FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format, Encoding, Visible, OpenConflictDocument, OpenAndRepair, DocumentDirection, NoEncodingDialog)

expression Required. A variable that represents a Documents object.

Parameters

Name Required/Optional Data type Description
FileName Required Variant The name of the document (paths are accepted).
ConfirmConversions Optional Variant True to display the Convert File dialog box if the file isn’t in Microsoft Word format.
ReadOnly Optional Variant True to open the document as read-only. This argument doesn’t override the read-only recommended setting on a saved document. For example, if a document has been saved with read-only recommended turned on, setting the ReadOnly argument to False will not cause the file to be opened as read/write.
AddToRecentFiles Optional Variant True to add the file name to the list of recently used files at the bottom of the File menu.
PasswordDocument Optional Variant The password for opening the document.
PasswordTemplate Optional Variant The password for opening the template.
Revert Optional Variant Controls what happens if FileName is the name of an open document. True to discard any unsaved changes to the open document and reopen the file. False to activate the open document.
WritePasswordDocument Optional Variant The password for saving changes to the document.
WritePasswordTemplate Optional Variant The password for saving changes to the template.
Format Optional Variant The file converter to be used to open the document. Can be one of the WdOpenFormat constants. The default value is wdOpenFormatAuto. To specify an external file format, apply the OpenFormat property to a FileConverter object to determine the value to use with this argument.
Encoding Optional Variant The document encoding (code page or character set) to be used by Microsoft Word when you view the saved document. Can be any valid MsoEncoding constant. For the list of valid MsoEncoding constants, see the Object Browser in the Visual Basic Editor. The default value is the system code page.
Visible Optional Variant True if the document is opened in a visible window. The default value is True.
OpenConflictDocument Optional Variant Specifies whether to open the conflict file for a document with an offline conflict.
OpenAndRepair Optional Variant True to repair the document to prevent document corruption.
DocumentDirection Optional WdDocumentDirection Indicates the horizontal flow of text in a document. The default value is wdLeftToRight.
NoEncodingDialog Optional Variant True to skip displaying the Encoding dialog box that Word displays if the text encoding cannot be recognized. The default value is False.

Return value

Document

Security

[!IMPORTANT]
Avoid using hard-coded passwords in your applications. If a password is required in a procedure, request the password from the user, store it in a variable, and then use the variable in your code. For recommended best practices on how to do this, see Security notes for Office solution developers.

Example

This example opens MyDoc.doc as a read-only document.

Sub OpenDoc() 
 Documents.Open FileName:="C:MyFilesMyDoc.doc", ReadOnly:=True 
End Sub

This example opens Test.wp using the WordPerfect 6.x file converter.

Sub OpenDoc2() 
 Dim fmt As Variant 
 fmt = Application.FileConverters("WordPerfect6x").OpenFormat 
 Documents.Open FileName:="C:MyFilesTest.wp", Format:=fmt 
End Sub

[!includeSupport and feedback]

Open Word Document

This Word VBA Macro will open a word document from the specified directory:

Sub OpenDoc()
    Dim strFile As String

    strFile = "c:UsersNenadDesktopTest PM.docm"    'change to path of your file
    If Dir(strFile) <> "" Then    'First we check if document exists at all at given location
        Documents.Open strFile
    End If
End Sub

Now you can interact with the newly opened document with the ActiveDocument Object. This code will add some text to the document.

ActiveDocument.Range(0, 0).Text = "Add Some Text"

Open Document to Variable

You can also open a Word document, immediately assigning it to a variable:

Sub OpenDoc()
    Dim strFile As String
    Dim oDoc as Document

    strFile = "c:UsersNenadDesktopTest PM.docm"    'change to path of your file
    If Dir(strFile) <> "" Then    'First we check if document exists at all at given location
        Set oDoc = Documents.Open strFile
    End If
End Sub

Allowing you to interact with the document via the variable oDoc.:

oDoc.Range(0, 0).Text = "Add Some Text"

Generally it’s best practice to open to a variable, giving you the ability to easily reference the document at any point.

Open Word Document From Excel

This VBA procedure will open a Word Document from another MS Office program (ex. Excel):

Sub OpenDocFromExcel()
    Dim wordapp
    Dim strFile As String


    strFile = "c:UsersNenadDesktopTest PM.docm"
    Set wordapp = CreateObject("word.Application")
    wordapp.Documents.Open strFile
    wordapp.Visible = True
End Sub

Word VBA, Open Document

Jun 07, 2015 in Dialogs

In this article I will explain how you can open a word document using VBA.


Opening Word Document:

If you are opening a word document from word you can use the code below:

Sub main()
Documents.Open ("D:TestFolderMain.docx")
End Sub

Where “D:TestFolderMain.docx” is the path where the word document is located.


Opening Word Document From Other Applications:

If you are opening a word document from another application, you would need to automate a word application first. This can be done using the code below:

Sub main()
Dim objWord As Object
'automate word application
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'open word document
objWord.documents.Open ("D:TestFolderMain.docx")
End Sub

For more information about automating word applications please see the article below:

  • VBA, Automating Word From Excel


Using Open File Dialogs

You could also ask the user to choose the path of the word document using an open file dialogs. I have covered this topic in detail in the article below. Although the article was written for VBA for Excel, the concept can also be used in VBA for Word:

  • Excel VBA, Open File Dialog

In the sample code below the user is asked to select the location of the word file from an open file dialog. After selecting the file, it is opened:

Sub main()
Dim intChoice As Integer
Dim strPath As String
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True

Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
intChoice = Application.FileDialog(msoFileDialogOpen).Show
'if the user selects a file
If intChoice <> 0 Then
    'get the path selected
    strPath = Application.FileDialog( _
        msoFileDialogOpen).SelectedItems(1)
    'opens the document
    objWord.documents.Open (strPath)
End If
End Sub

 See also:

  • VBA, Automating Word From Excel
  • Word Automation VBA, Common Errors
  • Word VBA, Apply Macro to Multiple Files
  • Word VBA, Modify Header For Multiple Files
  • Word Automation VBA, Common Errors
  • VBA, Write Excel Values to Word Document

If you need assistance with your code, or you are looking for a VBA programmer to hire feel free to contact me. Also please visit my website  www.software-solutions-online.com

Float

1

09.03.2007, 12:22. Показов 26192. Ответов 6


Студворк — интернет-сервис помощи студентам

Как из Excel открыть документ Word, в котором был бы определенный текст

Pavel55

971 / 353 / 135

Регистрация: 27.10.2006

Сообщений: 764

09.03.2007, 21:27

2

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
Sub CreateWordDoc()
Dim WordObj As Object  'Объект Word.application
Dim WordDoc As Object   'Создаваемый документ
    Set WordObj = CreateObject("Word.Application")
    WordObj.Visible = True
    Set WordDoc = WordObj.Documents.Add
    WordObj.Keyboard (1033) 'English
    WordObj.Selection.TypeText Text:="Hello, World!!!"
    WordObj.Selection.TypeParagraph
    WordObj.Application.Keyboard (1049) 'Russian
    WordObj.Selection.TypeText Text:="Привет, Мир!!!"
    'WordDoc.SaveAs Filename:="C:Temp" & WordDoc & ".doc"  'сохраняем его
    'WordDoc.Close 'закрываем только документ
    'WordObj.Quit 'закрываем всё приложение
    Set WordDoc = Nothing
    Set WordObj = Nothing
End Sub

2) Чтобы открыть уже существующий документ, распечатать его и закрыть

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub PrintOutWordFile()
    Dim WordObj As Object
    Dim WordDoc As Object
        Set WordObj = CreateObject("Word.Application")
        Set WordDoc = WordObj.Documents.Open("C:TempPrint.doc")
       ' WordObj.Visible = True 'можно его отображать, можно не отображать
       ' Call wDoc.PrintOut 'распечатываем его
       ' Call WordObj.Quit(False) 'закрываем всё приложение
    Set WordDoc = Nothing
    Set WordObj = Nothing
End Sub



0



Float

10.03.2007, 22:13

3

Спасибо

Float

15.03.2007, 19:58

4

Уже совсем наглость — как выдать текст с новой строки?

Pavel55

971 / 353 / 135

Регистрация: 27.10.2006

Сообщений: 764

15.03.2007, 23:30

5

Точно не знаю, попробуй

Visual Basic
1
Selection.TypeParagraph



0



0 / 0 / 0

Регистрация: 10.07.2014

Сообщений: 41

07.11.2016, 19:32

6

А если путь к файлу документа будет меняться?
На каждом компьютере будет на разных дисках. Или, например, на рабочем столе. Или с флешки запускаться. Можно как то прописать путь не с самого начала, а чтобы он находил файл документа в папке, в которой находится открытая книга эксель?
Например, книга, с которой запускается макрос, находится по адресу: «G:ДокументыХламКнига.xlsm», а адрес документа, который нужно запустить: «G:ДокументыХламПапкаBiatlon.docx».
Как прописать, чтобы указать только «ПапкаBiatlon.docx»? Тогда когда файлы будут кочевать с компьютера на компьютер, адрес меняться не будет.



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

07.11.2016, 20:20

7

CrazyTonik, путь книги с макросом это thisworkbook.Path
Соответственно,

Visual Basic
1
Set WordDoc = WordObj.Documents.Open(thisworkbook.Path & "ПапкаBiatlon.docx")



0



Like this post? Please share to your friends:
  • Vba как обратится к таблице excel
  • Vba как закрыть сам excel
  • Vba как закрыть открытую книгу excel
  • Vba как закрыть все excel
  • Vba как добавить строки в таблицу word