Открыть word vba access

gordan11

1 / 1 / 1

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

Сообщений: 240

1

13.12.2014, 22:54. Показов 15093. Ответов 18

Метки нет (Все метки)


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

Здравствуйте, подскажите как сделать, или в каком направлении гуглить. Мне нужно запусть макрос в access, который открывает файл word. На просторах интернета нашел код.

Visual Basic
1
2
3
4
Dim WD
    Set WD = CreateObject("Word.Application")
    WD.Visible = True
    WD.Documents.Open FileName:="G:UsersNOUTDesktop11.doc"

Он запускает Word документ но:

  • Word свернут
  • Нужно указывать полный путь к файлу

Как можно исправить эти «но», и можно ли их вообще исправит?



0



Alex77755

11482 / 3773 / 677

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

Сообщений: 11,147

13.12.2014, 23:34

2

Visual Basic
1
2
3
    WD.Application.WindowState = 2' свернуть
    WD.Application.WindowState = 0' в окно
    WD.Application.WindowState = 1' полній экран

Добавлено через 2 минуты
По второму вопросу: можно искать рядом с программой

Visual Basic
1
FileName:=app.path & "1.doc"



1



1 / 1 / 1

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

Сообщений: 240

13.12.2014, 23:54

 [ТС]

3

Цитата
Сообщение от Alex77755
Посмотреть сообщение

По второму вопросу: можно искать рядом с программой
Код Visual Basic
1
FileName:=app.path & «1.doc»

На этой строке выдает ошибку:
run-time error 424
object required



0



11482 / 3773 / 677

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

Сообщений: 11,147

14.12.2014, 00:02

4

А есть файл рядом с программой?

Добавлено через 3 минуты
Сорри не APP надо



0



1 / 1 / 1

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

Сообщений: 240

14.12.2014, 00:07

 [ТС]

5

Цитата
Сообщение от Alex77755
Посмотреть сообщение

А есть файл рядом с программой?

Да файл в той же папке

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Сорри не APP надо

Без app ищет файл в C:windowssystem32

Добавлено через 2 минуты
А как можно получить путь от куда запускается макрос?



0



Alex77755

11482 / 3773 / 677

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

Сообщений: 11,147

14.12.2014, 00:09

6

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

Решение

Visual Basic
1
FileName:=CurrentProject.Path & "1.doc"

Добавлено через 1 минуту
APP это в бейсике. Проморгал, что не тот раздел



1



gordan11

1 / 1 / 1

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

Сообщений: 240

14.12.2014, 00:15

 [ТС]

7

Цитата
Сообщение от Alex77755
Посмотреть сообщение

APP это в бейсике. Проморгал, что не тот раздел

Бывает Главное что помог. Спасибо файл открывает
Только вот, все равно в свернутом окне

Visual Basic
1
2
3
4
5
Dim WD
    Set WD = CreateObject("Word.Application")
    WD.Visible = True
    WD.Application.WindowState = 2
    WD.Documents.Open FileName:=CurrentProject.path & "1.doc"



0



Alex77755

11482 / 3773 / 677

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

Сообщений: 11,147

14.12.2014, 00:18

8

Что написал так и делает!
Я же просто перечислил варианты состояния. Надо выбрать нужный

Visual Basic
1
WD.Application.WindowState = 1



0



1 / 1 / 1

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

Сообщений: 240

14.12.2014, 00:21

 [ТС]

9

Ну как я понял это

Цитата
Сообщение от Alex77755
Посмотреть сообщение

Код Visual Basic
1
WD.Application.WindowState = 1

открывает word в свернутом состоянии, а мне нужно открывать не в свернутом. Я наверное не правильно сформулировал вопрос)



0



Alex77755

11482 / 3773 / 677

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

Сообщений: 11,147

14.12.2014, 00:57

10

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

Visual Basic
1
2
3
 WD.Application.WindowState = 2' свернуть
 WD.Application.WindowState = 0' в окно
 WD.Application.WindowState = 1' полній экран

И всё отрабатыватся



1



1 / 1 / 1

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

Сообщений: 240

14.12.2014, 11:40

 [ТС]

11

Цитата
Сообщение от Alex77755
Посмотреть сообщение

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

Понял)) Я пробовал вставлять только одну строку, когда вставил все три — Заработало)



0



1 / 1 / 1

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

Сообщений: 78

10.07.2015, 17:28

12

а как сделать чтоб открываемый файл запускался поверх всех окон



0



texnik-san

шапоклякистка 8-го дня

3674 / 2234 / 391

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

Сообщений: 4,647

Записей в блоге: 1

11.07.2015, 09:47

13

Цитата
Сообщение от engine
Посмотреть сообщение

а как сделать чтоб открываемый файл запускался поверх всех окон

WD.Activate

Добавлено через 2 минуты

Visual Basic
1
2
3
4
5
6
Dim WD As Object
    Set WD = CreateObject("Word.Application")
    WD.Documents.Open FileName:=CurrentProject.Path & "1.doc"
    WD.Visible = True
    WD.Application.WindowState = 1
    WD.Activate



0



1 / 1 / 1

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

Сообщений: 78

12.07.2015, 06:13

14

WD.Activate грубо говоря дописать… Спасибо работает



0



0 / 0 / 0

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

Сообщений: 5

15.06.2017, 08:32

15

Добрый день всем,
Помогите пожалуйста, тоже самое повторить только со слиянием. Есть форма «Запросы» с кнопкой открытия файла Word, все открывается и работает, но вот не задача, нужно чтобы было слияния еще с таблицей «Запросы». Подскажите пожалуйста

Добавлено через 15 секунд
Добрый день всем,
Помогите пожалуйста, тоже самое повторить только со слиянием. Есть форма «Запросы» с кнопкой открытия файла Word, все открывается и работает, но вот не задача, нужно чтобы было слияния еще с таблицей «Запросы». Подскажите пожалуйста



0



Juliya_pjv

0 / 0 / 0

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

Сообщений: 2

15.03.2018, 14:20

16

Здравствуйте! Использовала для запуска Word макрос, который предложил автор темы:

Visual Basic
1
2
3
4
Dim WD
    Set WD = CreateObject("Word.Application")
    WD.Visible = True
    WD.Documents.Open FileName:="G:UsersNOUTDesktop11.doc"

Но возникла проблема. Файлы Word содержат слияние с базой данных. По кнопке мне нужно их просто открыть с сохранением слияния. Но, к сожалению, слияние сбрасывается и в открывшемся файле снова приходится открывать источник записей. Помогите, пожалуйста, как сделать чтобы слияние при открытие из Access сохранялось в файлах Word.



0



Модератор

Эксперт MS Access

11343 / 4661 / 749

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

Сообщений: 13,512

Записей в блоге: 4

15.03.2018, 14:45

17

Цитата
Сообщение от Juliya_pjv
Посмотреть сообщение

Помогите, пожалуйста, как сделать чтобы слияние при открытие из Access сохранялось в файлах Word.

а зачем вам слияние, если запускаете из аксесс

в аксессе сделайте ленточную форму
—для поиска и фильтрации по нескольким полям
—в шаблон ворда поместите закладки(или поля замены) , чтобы показать, куда делать вставки
—небольшой код для вывода данных выбранной строки в шаблон word(вариантов более 10)



0



0 / 0 / 0

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

Сообщений: 2

16.03.2018, 08:38

18

Так слишком много всего переделывать придется.



0



Модератор

Эксперт MS Access

11343 / 4661 / 749

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

Сообщений: 13,512

Записей в блоге: 4

16.03.2018, 09:34

19

выложите пример базы и шаблона(со слиянием)
+сколько примерно у вас шаблонов

Добавлено через 2 минуты

Цитата
Сообщение от Juliya_pjv
Посмотреть сообщение

Так слишком много всего переделывать придется.

глаза боятся а руки делают
переделывать —это одноразовая работа
а выбор и запуск на выполнение —десятки-сотни раз



0



I’m using Access 2013 and created a help button on a form that I would like to open up a Word doc with instructions. Here’s the code I tried:

Private Sub cmdHelp_Click()
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim filepath As String

    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = True

    filepath = "C:...Handout.docx"
    Set wrdDoc = wrdApp.Documents.Open(filepath)
End Sub

The problem is, when I try to compile I get an error on the first line that says «User-defined type not defined»

Kazimierz Jawor's user avatar

asked Jul 31, 2013 at 14:23

user2521720's user avatar

4

Please check if you set appropriate reference to Word Library in VBA Environment.

To do so follow the path:

Go to VBA Editor >> Menu >> Tools >> References >> 
    Find on the list Microsoft Word XX.X Object Library where 
    XX.X is the highest available number >> 
Check it >> press OK.

answered Aug 1, 2013 at 19:53

Kazimierz Jawor's user avatar

Kazimierz JaworKazimierz Jawor

18.8k7 gold badges35 silver badges55 bronze badges

1

Wouldn’t be easier just to do:

Shell "winword ""c:...Handout.docx"""

… instead of creating an object just to open the application?

answered Jul 31, 2013 at 20:24

Fabio Pereira's user avatar

totn Access


This MSAccess tutorial explains how to open a Microsoft Word document from within Access 2003 (with step-by-step instructions).

Question: How can I open a particular Microsoft Word document from an Access 2003/XP/2000/97 database?

For example, I have a filed called «Doc1.doc» that I want to open. How can I do this?

Answer: From your Access database, you can open any Word document that you wish.

The following VBA code would open a document called «Doc1.doc» from Access. This file can be found under the following path: «c:Doc1.doc».

Private Sub Command1_Click()

   Dim LWordDoc As String
   Dim oApp As Object

   'Path to the word document
   LWordDoc = "c:Doc1.doc"

   If Dir(LWordDoc) = "" Then
      MsgBox "Document not found."

   Else
      'Create an instance of MS Word
      Set oApp = CreateObject(Class:="Word.Application")
      oApp.Visible = True

      'Open the Document
      oApp.Documents.Open filename:=LWordDoc
   End If

End Sub

In this example, we’ve created a button called Command1. When the user clicks this button, the VBA code will open a session of Microsoft Word and display the Word document called «Doc1.doc».

This MSAccess tutorial explains how to launch Microsoft Excel from Access.

This MSAccess tutorial explains how to launch Notepad from Access.

This MSAccess tutorial explains how to launch any application from Access.

Формулировка задачи:

Здравствуйте, подскажите как сделать, или в каком направлении гуглить. Мне нужно запусть макрос в access, который открывает файл word. На просторах интернета нашел код.

Он запускает Word документ но:

  • Word свернут
  • Нужно указывать полный путь к файлу

Как можно исправить эти «но», и можно ли их вообще исправит?

Код к задаче: «Из Access открыть файл Word, развернув окно на полный экран. Путь к файлу указать относительно файла Access»

textual

FileName:=CurrentProject.Path & "1.doc"

Полезно ли:

6   голосов , оценка 4.333 из 5

Содержание

  • 1 Add a word document
  • 2 Close a document
  • 3 Generating Word ata from an Excel VBA program
  • 4 Load contact table from Access and create letter in Word
  • 5 Open an Existing Document
  • 6 Save a document
  • 7 Save Changes to a Document
  • 8 To close a specific document, you can close the active document or you can specify a document name:
  • 9 To create a new document that uses a specific template, use this:
  • 10 To save a document with a new name, use the SaveAs method

Add a word document

   <source lang="vb">

Sub wordDoc()

   Dim WordApp As Object
   Set WordApp = CreateObject("Word.Application")
   With WordApp
       .Documents.Add
   End With

End Sub

</source>
   
  

Close a document

   <source lang="vb">

Sub exitFor()

   Dim Doc As Document
   For Each Doc In Documents
       If Doc.Name = "Document1" Then Exit For
       Doc.Close
   Next Doc

End Sub

</source>
   
  

Generating Word ata from an Excel VBA program

   <source lang="vb">

Sub MakeMemos()

   Dim WordApp As Object
   Set WordApp = CreateObject("Word.Application")
   
   For i = 1 To 3
       Application.StatusBar = "Processing Record " & i
       SaveAsName = ThisWorkbook.Path & "test.doc"
       With WordApp
           .Documents.Add
           With .Selection
               .Font.Size = 14
               .Font.Bold = True
               .ParagraphFormat.Alignment = 1
               .TypeText Text:="M E M O R A N D U M"
               .TypeParagraph
               .TypeParagraph
               .Font.Size = 12
               .ParagraphFormat.Alignment = 0
               .Font.Bold = False
               .TypeText Text:="Date:" & vbTab & Format(Date, "mmmm d, yyyy")
               .TypeParagraph
               .TypeText Text:="To:" & vbTab & " Manager"
               .TypeParagraph
               .TypeText Text:="From:" & vbTab & _
                  Application.userName
               .TypeParagraph
               .TypeParagraph
               .TypeText "text"
               .TypeParagraph
               .TypeParagraph
               .TypeText Text:="Units Sold:" & vbTab & "asdf"
               .TypeParagraph
               .TypeText Text:="Amount:" & vbTab & Format(1000, "$#,##0")
           End With
               .ActiveDocument.SaveAs FileName:=SaveAsName
               .ActiveWindow.Close
       End With
   Next i
   WordApp.Quit
   Set WordApp = Nothing
   Application.StatusBar = ""
   MsgBox " memos were created and saved in " & ThisWorkbook.Path

End Sub

</source>
   
  

Load contact table from Access and create letter in Word

   <source lang="vb">

Sub ControlWord()

   Dim objWord As New Word.Application
   Dim rsContacts As New ADODB.Recordset
   Dim strLtrContent As String
   rsContacts.ActiveConnection = CurrentProject.Connection
   rsContacts.Open "tblContacts"
   
   objWord.Documents.Add
   
   Do While Not rsContacts.EOF
     strLtrContent = rsContacts("FirstName") & " " & rsContacts("LastName")
     strLtrContent = strLtrContent & rsContacts("Address") & vbCrLf
     strLtrContent = strLtrContent & rsContacts("City") & ", " & rsContacts("Region")
     strLtrContent = strLtrContent & "  " & rsContacts("PostalCode") 
     strLtrContent = strLtrContent & "Dear " & rsContacts("FirstName") & " "
     strLtrContent = strLtrContent & rsContacts("LastName") & ":" 
   
       objWord.Selection.EndOf
       objWord.Selection.Text = strLtrContent
   
       objWord.Selection.EndOf
       objWord.Selection.InsertBreak
       
       rsContacts.MoveNext
   Loop
   objWord.Visible = True
   objWord.PrintPreview = True

End Sub

</source>
   
  

Open an Existing Document

   <source lang="vb">

Sub Main()

   Dim wdApp As Word.Application
   
   Set wdApp = GetObject(, "Word.Application")
   wdApp.Documents.Open Filename:="C:Arrays.docx", ReadOnly:=True, AddtoRecentFiles:=False

End Sub

</source>
   
  

Save a document

   <source lang="vb">

Sub WordLateBound()

   Dim objWord As Object 
   Dim objDoc As Object 
   Set objWord = CreateObject("Word.Application") 
   Set objDoc = objWord.Documents.Add 
   objDoc.SaveAs "C:testdoc2.doc" 
   objDoc.Close 
   Set objDoc = Nothing 
   Set objWord = Nothing 

End Sub

</source>
   
  

Save Changes to a Document

   <source lang="vb">

Sub main()

   Dim wdApp As Word.Application
   
   Set wdApp = GetObject(, "Word.Application")
   wdApp.Documents.Save

End Sub

</source>
   
  

To close a specific document, you can close the active document or you can specify a document name:

   <source lang="vb">

Sub main()

   Dim wdApp As Word.Application
   Set wdApp = GetObject(, "Word.Application")
   wdApp.ActiveDocument.Close
   "or
   wdApp.Documents("Arrays.docx").Close

End Sub

</source>
   
  

To create a new document that uses a specific template, use this:

   <source lang="vb">

Sub add()

   Dim wdApp As Word.Application
   
   Set wdApp = GetObject(, "Word.Application")
   wdApp.Documents.Add Template:="Contemporary Memo.dot"

End Sub

</source>
   
  

To save a document with a new name, use the SaveAs method

   <source lang="vb">

Sub Main()

   Dim wdApp As Word.Application
   Set wdApp = GetObject(, "Word.Application")
   wdApp.ActiveDocument.SaveAs "C:MemoTest.docx"

End Sub

</source>

Like this post? Please share to your friends:
  • Открыть pdf с помощью excel
  • Открыть pdf при помощи word
  • Открыть pdf в word кодировка
  • Открыть excel в разных окнах реестр
  • Открыть excel в отдельном процессе