Как программно запустить word

Skip to content

Открыть файл из 1С программно (word, excel, pdf и т.д.)

Открыть файл из 1С программно (word, excel, pdf и т. д.)

С помощью данного способа можно открывать любые файлы на компьютере из 1С. Открываться файлы будут с помощью программ/приложений выбранных по умолчанию, для запуска данного типа файла. Например .xls файлы будут запускаться с помощью Excel, .doc — с помощью Word, .pptx — с помощью Power point. Word, excel, power point также должны быть установлены на компьютере.

Пример программного кода:

&НаКлиенте
Процедура ОткрытьФайл(Команда)
	ЗапуститьПриложение("G:Руслан и Людмила.xlsx");
КонецПроцедуры

Файл из данного примера запустится в excel.

Также читайте:

  • Программное чтение, редактирование word;
  • Программное чтение, редактирование excel;

Связанные статьи

GafarovIS

24 / 23 / 0

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

Сообщений: 849

1

13.12.2017, 14:56. Показов 1680. Ответов 11

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


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

Здравствуйте!
Подскажите пожалуйста, как в по нажатию на кнопку открыть шаблон Word?
Окно для открытия уже написал, а вот как открывать выбранный файл не знаю.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Кнопка_Click()
    Dim Файл As String
    Dim Выбор As Integer
    With Application.FileDialog(1)
        .Title = "Шаблоны Word"
        .InitialFileName = CurrentProject.Path & "Шаблоны"
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Шаблон Word", "*.dot; *.dotx", 1
        Выбор = .Show
        If Выбор = 0 Then
            Файл = ""
            Else
                Файл = Trim(.SelectedItems.Item(1))
        End If
    End With
    MsgBox Файл
End Sub

Вложения

Тип файла: rar Database1.rar (11.2 Кб, 8 просмотров)



0



Capi

Модератор

Эксперт MS Access

5124 / 2531 / 628

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

Сообщений: 6,753

13.12.2017, 15:04

2

Visual Basic
1
2
Dim R
R = Shell "WINWORD.EXE " & Файл



1



24 / 23 / 0

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

Сообщений: 849

13.12.2017, 15:09

 [ТС]

3

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

R = Shell «WINWORD.EXE » & Файл

не знаю почему, но эта строка у меня выходит как ошибка



0



mobile

Эксперт MS Access

26777 / 14456 / 3192

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

Сообщений: 15,782

13.12.2017, 15:10

4

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

Решение

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Кнопка_Click()
    Dim Файл As String
    Dim Выбор As Integer
    Dim oApp as object, oDoc as object 'Объявляем переменные
    With Application.FileDialog(1)
        .Title = "Шаблоны Word"
        .InitialFileName = CurrentProject.Path & "Шаблоны"
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Шаблон Word", "*.dot; *.dotx", 1
        Выбор = .Show
        If Выбор = 0 Then
            Файл = ""
            Else
                Файл = Trim(.SelectedItems.Item(1))
                Set oApp = CreateObject("Word.Application") 'Создаем приложение ворда
                oApp.Visible = True                         'Делаем приложение видимым
                Set oDoc = oWApp.Documents.Open(Файл)       'Открываем найденный документ
        End If
    End With
    MsgBox Файл
End Sub



1



GafarovIS

24 / 23 / 0

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

Сообщений: 849

13.12.2017, 15:12

 [ТС]

5

Visual Basic
1
Shell "WINWORD.EXE " & Файл

так не выдаёт ошибку, но пишет, что нет файла.
видимо потому, что моя текущая папка другая? или как?



0



Модератор

Эксперт MS Access

5124 / 2531 / 628

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

Сообщений: 6,753

13.12.2017, 15:12

6

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

не знаю почему, но эта строка у меня выходит как ошибка

Что значит «как ошибка»?
При компиляции или при выполнении?
Сообщение какое?



1



24 / 23 / 0

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

Сообщений: 849

13.12.2017, 15:15

 [ТС]

7

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

Set oDoc = oWApp.Documents.Open(Файл) * * * ‘Открываем найденный документ

на этой строке выдаёт ошибку 424 Object Required



0



Capi

Модератор

Эксперт MS Access

5124 / 2531 / 628

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

Сообщений: 6,753

13.12.2017, 15:18

8

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

пишет, что нет файла.

Посмотрите, как называется у Вас файл Ворда (не документа), и укажите правильное имя.
А также полный путь к документу:

Visual Basic
1
Shell "WINWORD.EXE " & CurrentProject.Path & "Шаблоны" & Файл



0



Eugene-LS

9728 / 4908 / 1195

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

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

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

13.12.2017, 15:20

9

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

на этой строке выдаёт ошибку 424 Object Required

Там одна буковка лишняя
Напишите так:

Visual Basic
1
Set oDoc = oApp.Documents.Open(Файл)       'Открываем найденный документ



2



24 / 23 / 0

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

Сообщений: 849

13.12.2017, 15:28

 [ТС]

10

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

Shell «WINWORD.EXE » & CurrentProject.Path & «Шаблоны» & Файл

эта строка создаёт новый документ

Добавлено через 48 секунд
и кстати, если запускать файл, который в папке OneDrive, то ошибка, а если в дрйгоу папке, то работает

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

Цитата
Сообщение от Eugene-LS
Посмотреть сообщение

Set oDoc = oApp.Documents.Open(Файл) * * * ‘Открываем найденный документ

только одно но… файл открывает для изменения шаблона, а не для создания документа на его основек



0



Модератор

Эксперт MS Access

5124 / 2531 / 628

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

Сообщений: 6,753

13.12.2017, 15:29

11

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

эта строка создаёт новый документ

Не должна бы…



1



Eugene-LS

9728 / 4908 / 1195

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

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

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

13.12.2017, 15:52

12

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

Решение

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

файл открывает для изменения шаблона, а не для создания документа на его основек

Согласен!
Если шаблон то:

Visual Basic
1
Set oDoc = oApp.Documents.Add(Файл)         'Открываем найденный документ (КАК ШАБЛОН НОВОГО ДОКУМЕНТА)



2



Если есть необходимость обратиться к данным, хранящимся в текстовом файле приложения Word, или наоборот, передать данные из Excel в такой файл, то возникнет необходимость запуска приложения, в формате которого сохранен файл. Ниже приведен программный код макроса VBA для Microsoft Excel, запускающий приложение Word.

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

Sub Zapusk_Word_iz_Excel_01()
    Dim objWrdApp As Object
    Dim objWrdDoc As Object
    On Error Resume Next
    Set objWrdApp = GetObject(, "Word.Application")
        If objWrdApp Is Nothing Then
            Set objWrdApp = CreateObject("Word.Application")
            Set objWrdDoc = objWrdApp.Documents.Add
            objWrdApp.Visible = True
        End If
    Set objWrdDoc = objWrdApp.Documents.Add
    Set objWrdDoc = Nothing
    Set objWrdApp = Nothing
End Sub

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

Макрос, запускающий Word из Excel и открывающий существующий документ

Если для передачи данных из Word в Excel, необходимо открыть файл с заданным именем, то можно использовать аналогичный код, в котором вместо добавления нового документа открывается документ существующий: 

Sub Zapusk_Word_iz_Excel_02()
    Dim objWrdApp As Object
    Dim objWrdDoc As Object
    On Error Resume Next
    Set objWrdApp = GetObject(, "Word.Application")
        If objWrdApp Is Nothing Then
            Set objWrdApp = CreateObject("Word.Application")
            Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
            objWrdApp.Visible = True
        End If
    Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
    Set objWrdDoc = Nothing
    Set objWrdApp = Nothing
End Sub

При копировании этого кода на свой компьютер, не забудьте изменить путь к файлу и его имя. Запуск приложения можно сделать невидимым, если в коде изменить True на False.

Макрос для передачи данных из Excel в Word

Ниже приведен программный код макроса, копирующий в активной рабочей книге Excel диапазон с данными A1:E2 и вставляющий его в открытый документ Word. После передачи данных из Excel в Word производится закрытие документа с сохранением изменений и выход из приложения.

Sub Peredacha_Dannyh_iz_Excel_v_Word()
    Dim objWrdApp As Object
    Dim objWrdDoc As Object
    On Error Resume Next
    Set objWrdApp = GetObject(, "Word.Application")
        If objWrdApp Is Nothing Then
            Set objWrdApp = CreateObject("Word.Application")
            Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
            objWrdApp.Visible = False
        End If
    Set objWrdDoc = objWrdApp.Documents.Open("C:Doc1.doc")
    Range("A1:E2").Copy
    objWrdDoc.Range(0).Paste
    objWrdDoc.Close True
    'True - с сохранением, False - без сохранения
    objWrdApp.Quit
    Set objWrdDoc = Nothing
    Set objWrdApp = Nothing
End Sub

Другие материалы по теме:

How to force execute/start of Word Automation Services programmatically?
I need to start/execute once submit a conversion process.

    string siteUrl = "http://localhost";
    string wordAutomationServiceName = "Word Automation Services";
    using (SPSite spSite = new SPSite(siteUrl))
    {
        ConversionJob job = new ConversionJob(wordAutomationServiceName);
        job.UserToken = spSite.UserToken;
        job.Settings.UpdateFields = true;
        job.Settings.OutputFormat = SaveFormat.PDF;
        job.AddFile(siteUrl + "/Shared%20Documents/Test.docx", siteUrl + "/Shared%20Documents/Test.pdf");
        job.Start();
    }

asked May 2, 2011 at 18:21

Ahmed Atia's user avatar

Ahmed AtiaAhmed Atia

17.8k25 gold badges91 silver badges133 bronze badges

Yes, you can force the jobs to start immediately from code as well as from the Central Admin UI. See my solution (built on top of the RunNow method of the SPJobDefinition class) here.

You should start the Word Automation Services Timer Job.

For eaxmple, using PowerShell:

$watj = Get-SPTimerJob "Word Automation Service Application"
$watj.RunNow()

or even shorter:

Start-SPTimerJob "Word Automation Services"

answered Aug 30, 2011 at 13:27

pholpar's user avatar

Are you asking if there is a way to force the job to execute immediately, rather than waiting for the time interval set in the Word Automations Services admin settings?
Currently, in Word Automation Services for SP 2010, there is no way to do this. All I can think of is to change the time interval to the minimum of 1 minute (as opposed to the default of 15 minutes).

answered May 14, 2011 at 17:18

Stephen D. Oliver's user avatar

Запуск и управление приложениями семейства MS Office

Иногда требуется управлять другими приложениями из VBA Excel. Начнем с
приложений семейства Microsoft Office. Например, на основе произведенных
расчетов в Excel надо сформировать текстовый документ в Word-е. Для
начала в нашем проекте надо подключить библиотеку с объектами MS Word:

Tools=>References подключаем последнюю версию библиотеки Microsoft Word Object Library

Пример кода для запуска Word-а из VBA

Dim w As Word.Application

Set w = New Word.Application

w.Visible = True

w.Activate

Вот и все, мы запустили приложение Word.

Аналогичным способом можно запустить любое другое приложение из
семейства Microsoft Office: Access, Outlook, PowerPoint. Можно получить к
любому приложению, которое мы видим списке библиотек.

Для работы с внешним приложением необходимо ознакомиться с объектной моделью,
изучить свойства и методы объектов.

Кроме запуска внешнего приложения, мы имеем полный доступ к объектам
данного приложения. Можно писать макросы, которые будут управлять
объектами Word  в данном случае.

 

Запуск внешнего приложения с помощью скрипта WScript.Shell.

Все очень просто

Sub RunShell()

Set WSShell = CreateObject(«Wscript.Shell»)

WSShell.Run «»»C:Program Files (x86)GoogleGoogle Earthclientgoogleearth.exe»»», 1

End Sub

 

Главное пишем побольше кавычек (аж три штуки с краю), если путь содержит пробелы и прочие «противные» символы.

К сожалению, в данном случае, мы только запускаем внешнее приложение без доступа к его объектам.

 

Запуск и управление внешним приложением

В меню VBA=>Tools=>Refernces видно все COM-объекты приложений,
которые установлены на вашем компьютере. Подключаем соответствующую
библиотеку, например, «GrymCore». И мы получаем доступ к ДубльГису. С
документацией API Дубль Гиса можно ознакомиться на их сайте.

Like this post? Please share to your friends:
  • Как программно записать документы excel в один документ
  • Как программно закрыть word
  • Как программно закрыть excel 1с
  • Как программно закрасить ячейки в excel
  • Как программно задать формат ячейки в excel