С Новым годом! Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
Excel

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

18.05.2020, 20:54. Показов 5451. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята не пойму почему не сохраняется документ в папку:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim objWrdApp As Object
Dim objWrdDoc As Object
Dim F$
Dim iPath$
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range("A:A"), Target) Is Nothing Then
    On Error Resume Next
        If objWrdApp Is Nothing Then
            Set objWrdApp = CreateObject("Word.Application")
             Set objWrdDoc = objWrdApp.Documents.Open(App.Path & "\МФО.docm")
            objWrdApp.Visible = True
With objWrdDoc
    .Bookmarks("полноеимяорг").Range.Text = CStr(Cells(Selection.Rows.Row, 12).Value)
End With
F$ = App.Path & "\Вывод\"
    objWrdDoc.SaveAs F$ & CStr(Cells(Selection.Rows.Row, 12).Value) & ".doc"
        objWrdApp.Quit
End If
End If
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2020, 20:54
Ответы с готовыми решениями:

Сохранение документа Word из макроса Excel
Макросом Excel формирую в рабочей книге в ячейке B3 имя для документа Word (типа itogi_050914.doc). Потом пытаюсь с этим именем сохоанить...

Постраничная разбивка документа Word. Сохранение под разными именами.(данные из документа)
ТЗ: Сделать так чтобы данные из Excel перетягивались в Word, При этом файл ворд разбивался на 5 файлов и сохранялся под 5 именами. ...

Добавление срок в таблицу Word при заполнении документа Word из данных Excel
Всем привет! Я новичок в этом деле и нужна помощь. Есть таблица Excel с данными на основании которого заполняется документ Word по...

25
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
18.05.2020, 21:08
ASSEI,
Цитата Сообщение от ASSEI Посмотреть сообщение
Selection.Rows.Row
???
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
18.05.2020, 21:19
Цитата Сообщение от ASSEI Посмотреть сообщение
On Error Resume Next
для начала закомменте эту строку - она не дает увидеть ошибки
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
18.05.2020, 21:20  [ТС]
да , вроде записывает
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
18.05.2020, 21:23
Цитата Сообщение от ASSEI Посмотреть сообщение
Set objWrdDoc = objWrdApp.Documents.Open(App.Path & "\МФО.docm")
добавлять надо через шаблон ..... add(.....dotx/dotm)
открывая документ вы рискуете запороть документ, потеряв закладку
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
18.05.2020, 21:43  [ТС]
у меня ошибку выдает, когда закоментировал
Visual Basic
1
Set objWrdDoc = objWrdApp.Documents.Open(App.Path & "\МФО.dotm")
Добавлено через 55 секунд
теперь вообще листа не видно открывается одно приложение

Добавлено через 12 минут
почему при открытии лист пропадает?
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
18.05.2020, 21:50
ASSEI, Если не обращать внимание на извращения, которые Вы упрямо копируете из темы в тему, то задайтесь вопросом, откуда в VBA может взяться App.Path ? ибо App это об'ект из "чистого" VB. А если документ находится в той же папке, что и книга, то ThisWorkbook.Path
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
18.05.2020, 22:30  [ТС]
согласен невнимателен, хотел пойти по пути наименьшего сопративления и просто как вы и сказали просто скопировать

Добавлено через 28 минут
вот как то так: или грубовато?
Visual Basic
1
2
3
F$ = ThisWorkbook.Path & "\вывод\"
    objWrdDoc.SaveAs F$ & CStr(Cells(Selection.Rows.Row, 13).Value) & ".doc"
        objWrdApp.Quit wdDoNotSaveChanges
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
18.05.2020, 22:52
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Range("A:A"), Target) Is Nothing Then
       Dim wdApp As Object, wdDoc As Object, iPath$, txt$
       iPath = ThisWorkbook.Path
       Set wdApp = CreateObject("Word.Application")
       Set wdDoc = wdApp.Documents.Open(iPath & "\МФО.docm") 'Или
       'Set wdDoc = wdApp.Documents.Add(iPath & "\МФО.docm")
       wdApp.Visible = True: txt = CStr(Target(1, 12))
       wdDoc.Bookmarks("ПолноеИмяОрг").Range.Text = txt
       wdDoc.SaveAs iPath & "\Вывод\" & txt & ".doc", 0 'wdFormatDocument
       wdDoc.Close 0 'wdDocwdDoNotSaveChanges
       wdApp.Quit
    End If
End Sub
1
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
19.05.2020, 19:56  [ТС]
Ребята подскажите пожалуйста столкнулся с таким моментом что не каждую строку сохраняет в папку ? какие мысли по данному поводу? бывает где то на 500 тых не сохраняет а на 1000-х работает
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
19.05.2020, 19:59
Цитата Сообщение от ASSEI Посмотреть сообщение
что не каждую строку сохраняет в папку ?
Цитата Сообщение от ASSEI Посмотреть сообщение
If Target.Cells.Count > 1 Then Exit Sub
Что здесь удивительного, Вы сами ограничили выполнения макроса, сейчас только после выделения одной единственной ячейки.
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
19.05.2020, 20:01
Цитата Сообщение от ASSEI Посмотреть сообщение
бывает где то на 500 тых не сохраняет а на 1000-х работает
в ворде может быть только 63 столбца, причем надо еще убирать 3,8мм полей
в ексель- тьма, до 16т столбцов
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
19.05.2020, 20:09  [ТС]
ага, не понял но еще поясню, на листе в таблице около 5000 строк,
1. поиском ищу нужное наименование
2. кликаю по ячейке, в столбце "А",
2. Записываю в ворд найденую строку
3. и так много раз подряд

но получается что некоторые строки записываются в документ НО не сохраняется сам документ в папку т.е.
если закоментировать, строки в коде, сохранения в папку , то видно, что документ ворд формируется и записывается, НО приходится в ручную сохранять
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
19.05.2020, 20:15  [ТС]
посмотрите замысел во вложении, и таких строк в книге около 5000
Вложения
Тип файла: rar МФО (2).rar (32.2 Кб, 5 просмотров)
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
19.05.2020, 20:15
ASSEI, И здесь тоже нет ничего удивительного, ведь имя файла не может содержать некоторые символы. А ячейка может, поэтому, перед сохранением нужно удалять мусор из имени файла.
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
19.05.2020, 20:45  [ТС]
так то все работает, но вот иногда такое бывает,
да вы правы такое то же может быть

Добавлено через 17 минут
посчитал 11300 т строк

Добавлено через 12 минут
ааа да кавычки не пропускает а у меня в файле их полно
0
Модератор
Эксперт MS Access
 Аватар для shanemac51
12231 / 5078 / 814
Регистрация: 07.08.2010
Сообщений: 14,932
Записей в блоге: 4
19.05.2020, 21:08
Цитата Сообщение от ASSEI Посмотреть сообщение
на листе в таблице около 5000 строк
это примерно 70 страниц - для ворда это много, не каждый комп потянет

Добавлено через 2 минуты
Цитата Сообщение от ASSEI Посмотреть сообщение
посчитал 11300 т строк
а это 11300/70=160страниц --- тем более, особенно если автоподбор ширины столбцов(из личного опыта)

Добавлено через 2 минуты
выводила больше, но не таблицей, а гладким текстом, даже без табуляторов
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
19.05.2020, 21:28
shanemac51, Что ж Вас так перемкнуло на количестве строк, ведь видно, что одна строка = один документ. А проблема - именно в наличии недопустимых символах в имени файла.
0
0 / 1 / 3
Регистрация: 18.10.2012
Сообщений: 662
19.05.2020, 21:31  [ТС]
Цитата Сообщение от ASSEI Посмотреть сообщение
Добавлено через 12 минут
ааа да кавычки не пропускает а у меня в файле их полно
так я и отметил что да проблема именно в символах, но не получается, то пробелов лишних много
Visual Basic
1
2
Dim a As String
a = Replace(CStr(Target(1, 13)), """", "  ", "«»")
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
19.05.2020, 21:37
ASSEI, Имя файла это переменная txt, поэтому в строке #11

Visual Basic
1
wdDoc.SaveAs iPath & "\Вывод\" & newFileName(txt), 0 'wdFormatDocument
и, разумеется, функция, удаляющая весь мусор :

Visual Basic
1
2
3
4
5
6
7
8
Private Function newFileName$(oldFileName$)
    Const trash = "/\?:*""""<>|"
    Dim i&
    For i = 1 To 10 'Len(trash)
        oldFileName = Replace(oldFileName, Mid$(trash, i, 1), "")
    Next
    newFileName = oldFileName & ".doc"
End Function
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2020, 21:37
Помогаю со студенческими работами здесь

Сохранение переменных в файле документа Word.
Сохранение переменных в файле документа Word. Используя приведенные процедуры, дополните файл таким кодом, чтобы при открытии документа...

Сохранение документа Word без запроса
Подскажите как отловить событие - когда пользователь нажал на кнопку Закрыть в документе Ворд и чтобы не появлялось сообшение Сохранить...

Сохранение документа Word без макросов
Задача в следующем: Создан шаблон с макрокомандами, формирующими документ. Требуется сохранять созданный документ так, чтобы в экземпляре...

Задать в Word по умолчанию место сохранение документа
Доброго времени суток! Такая проблема, как можно задать в ворд по умолчанию место сохранение документа, и если есть документ с подобным...

Создание документа Word из Excel
Доброго времени суток. есть макрос в excele надо создать документ ворд заполнить его по шаблону некоторыми текстовыми данными после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru