Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сохранить листа Exel в .docx. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сохранить листа Exel в .docx.
Otradnoe_4D Дата: Воскресенье, 20.08.2017, 00:03 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый. Помогите доработать код VBA. Мне нужно сохранить лист Exel в .docx. Возникло несколько проблем. Выскакивает окно с вопросом сохранить ли книгу Exel сохранять ее не надо, хочется что бы окно не выскакивало.
И еще в Ворде все выглядит так как на Screenshot_2.jpg а нужно что бы было как на Screenshot_3.jpg.
Еще заметил что текст копируется как таблица. Хочется что бы не таблицей копировалось а просто как текст.
Так же поля надо настроить лев:3 верх:2 низ:2 прав:1

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

[vba]
Код
Sub save_As_Word_3()
    Application.ScreenUpdating = False
    Dim curWb As Workbook, newWb As Workbook, wdApp As Object, wdDoc As Object, folderName As String
    folderName = createFolder("Рапорт", ThisWorkbook.Path)
    ' Текущий файл
    Set curWb = ThisWorkbook
    ' Новая копия
    Workbooks.Add
    Set newWb = ActiveWorkbook
    
    ' Копируем все ячейки в новую книгу - значения, форматы
    curWb.Sheets("Рапорт").Cells.Copy
    With newWb.ActiveSheet.Cells
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
        Range("A1").Select
    End With

    ' Имя сохранения из ячейки B1
    saveName = curWb.Sheets("Информация").Range("B1")
    
    ' Создаём документ Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Documents.Add
    Set wdDoc = wdApp.ActiveDocument
    ' С копии листа Учсуд скопируем используемый диапазон
    ActiveSheet.UsedRange.Copy
    wdDoc.Range.Paste
    '  Word'e другая модель сохранения, сначала перейдем в папку
    wdApp.ChangeFileOpenDirectory folderName
    ' Сохраним
    wdDoc.SaveAs Filename:=saveName & ".docx", FileFormat:=wdFormatXMLDocument
                
     ' К закрытию все причешем
    Application.CutCopyMode = False
    wdDoc.Close
    wdApp.Quit
    newWb.Close
    Application.ScreenUpdating = True
End Sub

' Проверить (и создать при необходимости папку, вернуть путь
Function createFolder(folderName As String, Optional folderPath As String = "") As String
    Dim fso As Object, folderFullPath As String
    If folderPath = "" Then folderPath = ThisWorkbook.Path
    folderFullPath = folderPath & "\" & folderName & "\"
    Set fso = CreateObject("scripting.filesystemobject")
    
    If Not fso.FolderExists(folderFullPath) Then
        fso.createFolder (folderFullPath)
    End If
    createFolder = folderFullPath
End Function
[/vba]
К сообщению приложен файл: -1-.xlsm (36.5 Kb)


Сообщение отредактировал Otradnoe_4D - Воскресенье, 20.08.2017, 15:42
 
Ответить
СообщениеДобрый. Помогите доработать код VBA. Мне нужно сохранить лист Exel в .docx. Возникло несколько проблем. Выскакивает окно с вопросом сохранить ли книгу Exel сохранять ее не надо, хочется что бы окно не выскакивало.
И еще в Ворде все выглядит так как на Screenshot_2.jpg а нужно что бы было как на Screenshot_3.jpg.
Еще заметил что текст копируется как таблица. Хочется что бы не таблицей копировалось а просто как текст.
Так же поля надо настроить лев:3 верх:2 низ:2 прав:1

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

[vba]
Код
Sub save_As_Word_3()
    Application.ScreenUpdating = False
    Dim curWb As Workbook, newWb As Workbook, wdApp As Object, wdDoc As Object, folderName As String
    folderName = createFolder("Рапорт", ThisWorkbook.Path)
    ' Текущий файл
    Set curWb = ThisWorkbook
    ' Новая копия
    Workbooks.Add
    Set newWb = ActiveWorkbook
    
    ' Копируем все ячейки в новую книгу - значения, форматы
    curWb.Sheets("Рапорт").Cells.Copy
    With newWb.ActiveSheet.Cells
        .PasteSpecial xlPasteValues
        .PasteSpecial xlPasteFormats
        Range("A1").Select
    End With

    ' Имя сохранения из ячейки B1
    saveName = curWb.Sheets("Информация").Range("B1")
    
    ' Создаём документ Word
    Set wdApp = CreateObject("Word.Application")
    wdApp.Documents.Add
    Set wdDoc = wdApp.ActiveDocument
    ' С копии листа Учсуд скопируем используемый диапазон
    ActiveSheet.UsedRange.Copy
    wdDoc.Range.Paste
    '  Word'e другая модель сохранения, сначала перейдем в папку
    wdApp.ChangeFileOpenDirectory folderName
    ' Сохраним
    wdDoc.SaveAs Filename:=saveName & ".docx", FileFormat:=wdFormatXMLDocument
                
     ' К закрытию все причешем
    Application.CutCopyMode = False
    wdDoc.Close
    wdApp.Quit
    newWb.Close
    Application.ScreenUpdating = True
End Sub

' Проверить (и создать при необходимости папку, вернуть путь
Function createFolder(folderName As String, Optional folderPath As String = "") As String
    Dim fso As Object, folderFullPath As String
    If folderPath = "" Then folderPath = ThisWorkbook.Path
    folderFullPath = folderPath & "\" & folderName & "\"
    Set fso = CreateObject("scripting.filesystemobject")
    
    If Not fso.FolderExists(folderFullPath) Then
        fso.createFolder (folderFullPath)
    End If
    createFolder = folderFullPath
End Function
[/vba]

Автор - Otradnoe_4D
Дата добавления - 20.08.2017 в 00:03
Otradnoe_4D Дата: Воскресенье, 20.08.2017, 00:25 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Скриншоты
К сообщению приложен файл: 3543196.jpg (34.0 Kb) · 6913854.jpg (79.5 Kb)


Сообщение отредактировал Otradnoe_4D - Воскресенье, 20.08.2017, 15:48
 
Ответить
СообщениеСкриншоты

Автор - Otradnoe_4D
Дата добавления - 20.08.2017 в 00:25
iMrTidy Дата: Воскресенье, 20.08.2017, 00:47 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 14 ±
Замечаний: 0% ±

NO
Otradnoe_4D, а для чего Вы создаете новую книгу Excel?

У процедуры Close есть параметры, первый из которых как раз позволяет обойтись без сохранения:
Код
newWb.Close False


Чтобы вставить не таблицей, а текстом лучше вручную формировать документ. Логично было бы попробовать PasteSpecial DataType:=2, но у Вас там объединение ячеек, и по-крайней мере у меня текст вставляется то количество раз, сколько объединенных ячеек.


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.
 
Ответить
СообщениеOtradnoe_4D, а для чего Вы создаете новую книгу Excel?

У процедуры Close есть параметры, первый из которых как раз позволяет обойтись без сохранения:
Код
newWb.Close False


Чтобы вставить не таблицей, а текстом лучше вручную формировать документ. Логично было бы попробовать PasteSpecial DataType:=2, но у Вас там объединение ячеек, и по-крайней мере у меня текст вставляется то количество раз, сколько объединенных ячеек.

Автор - iMrTidy
Дата добавления - 20.08.2017 в 00:47
Otradnoe_4D Дата: Воскресенье, 20.08.2017, 01:02 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Otradnoe_4D, а для чего Вы создаете новую книгу Excel?

Не знаю))) Такой код был уже... я же без понятия что и как делать)))
Если вам не трудно то исправьте так как правильно будет. В прицепе я сделал так как вы написали и окно о сохранение пропало.
 
Ответить
Сообщение
Otradnoe_4D, а для чего Вы создаете новую книгу Excel?

Не знаю))) Такой код был уже... я же без понятия что и как делать)))
Если вам не трудно то исправьте так как правильно будет. В прицепе я сделал так как вы написали и окно о сохранение пропало.

Автор - Otradnoe_4D
Дата добавления - 20.08.2017 в 01:02
iMrTidy Дата: Воскресенье, 20.08.2017, 01:37 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 85
Репутация: 14 ±
Замечаний: 0% ±

NO
Не знаю))) Такой код был уже... я же без понятия что и как делать)))

Тогда Вам лучше обратиться в раздел Работа.

А то получается:
- Я на гитаре играть не умею, только вот научился за нижнюю струну дергать, но мне нужно сочинить красивую мелодию. Сделайте пожалуйста.


Вышенаписанное мной не является истиной, но лишь моя точка зрения, которая скорее всего ошибочна.
 
Ответить
Сообщение
Не знаю))) Такой код был уже... я же без понятия что и как делать)))

Тогда Вам лучше обратиться в раздел Работа.

А то получается:
- Я на гитаре играть не умею, только вот научился за нижнюю струну дергать, но мне нужно сочинить красивую мелодию. Сделайте пожалуйста.

Автор - iMrTidy
Дата добавления - 20.08.2017 в 01:37
Pelena Дата: Воскресенье, 20.08.2017, 10:54 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19401
Репутация: 4549 ±
Замечаний: ±

Excel 365 & Mac Excel
в Ворде все выглядит так
Лично у меня на Радикал отображается всё, что угодно, только не скриншоты. Прикладывайте все файлы к сообщениям.

iMrTidy, для оформления кода используйте кнопку # ([vba][code]), а не fx ([code])
И да, не спешите посылать ТС в платный раздел, возможно, найдутся желающие потренироваться yes


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
в Ворде все выглядит так
Лично у меня на Радикал отображается всё, что угодно, только не скриншоты. Прикладывайте все файлы к сообщениям.

iMrTidy, для оформления кода используйте кнопку # ([vba][code]), а не fx ([code])
И да, не спешите посылать ТС в платный раздел, возможно, найдутся желающие потренироваться yes

Автор - Pelena
Дата добавления - 20.08.2017 в 10:54
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!