Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
1

Экспорт файла .xlsm в pdf

04.10.2016, 15:42. Показов 3145. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть файлик .xlsm с путем C:\users\test.xlsm, задача его экспортировать в pdf.
Можно совет с помощью каких инструментов можно написать данный скрипт на VBA?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2016, 15:42
Ответы с готовыми решениями:

Макрос сохранения в pdf и xlsm
Всем привет. Есть два макроса: Sub PDFActiveSheet() Dim wsA As Worksheet Dim wbA As...

Экспорт из Access 10 средствами VBA в файл xlsx и xlsm
Коллеги, добрый день! Подскажите, пожалуйста, в возникшей проблеме при организации экспорта данных...

Запуск файла xlsm
пишу в VBA скрипт Dim RetVal1 RetVal1 = Shell("D:\Journal1.xlsm", 1) который должен открывать...

Копирование файла формата .xlsm
Пытаюсь копировать файл при закрытии исходного файла на другой диск, с С на D. Исходный файл...

15
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
04.10.2016, 16:43 2
Можете попробовать что-то вроде :

Visual Basic
1
2
3
4
5
6
Private Sub Test()
    With Workbooks.Open("C:\Users\Test.xlsm", 0)
         .ExportAsFixedFormat xlTypePDF, "C:\Users\Test.pdf"
         .Close False
    End With
End Sub
0
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
05.10.2016, 12:26  [ТС] 3
Цитата Сообщение от pashulka Посмотреть сообщение
Можете попробовать что-то вроде :
Хм, не работает. нужно ли явно указывать имя листов в файле xlsx, так как их там два?
0
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.10.2016, 14:58 4
Согласно справке, метод ExportAsFixedFormat есть у об'ектов Chart, Range, Worksheet и Workbook, так что, если Вам не нужны два pdf файла, то указывать листы не нужно.

Что касается термина не работает, то он довольно расплывчат и не конкретен. Возможно, Вам поможет использование необязательного аргумента IgnorePrintAreas, т.е.

Visual Basic
1
2
3
4
5
6
Private Sub Test2()
    With Workbooks.Open("C:\Users\Test.xlsm", 0)
         .ExportAsFixedFormat xlTypePDF, "C:\Users\Test.pdf", , , True
         .Close False
    End With
End Sub
0
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
05.10.2016, 16:31  [ТС] 5
Цитата Сообщение от pashulka Посмотреть сообщение
огласно справке, метод ExportAsFixedFormat есть у об'ектов Chart, Range, Worksheet и Workbook, так что, если Вам не нужны два pdf файла, то указывать листы не нужно.
Я так понимаю, что он даже не работает на этапе открытия эксель файла, дебаггер не жалуется на ошибки.
0
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
05.10.2016, 17:59 6
Попытка #3

P.S. И давайте обойдёмся без оверквотинга.
Вложения
Тип файла: zip Example_ExportAsFixedFormat.zip (37.1 Кб, 10 просмотров)
0
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
06.10.2016, 10:22  [ТС] 7
Спасибо, это работает. Но я имел ввиду, чтобы это все запускалось через скрипт в командной строке, натолкните на мысль, я сам доделаю
0
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
06.10.2016, 13:09 8
В упрощённом виде (без проверки существования файла и т.д.)
Вложения
Тип файла: zip Excel_ExportAsFixedFormat.zip (257 байт, 15 просмотров)
0
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
10.10.2016, 14:10  [ТС] 9
Благодарю, переделал в своих нуждах в немного другой код.
Есть еще один вопрос, можно ли передать в параметрах, чтобы скрипт сохранял только определенный sheet, а не всю целиком книгу
В файле два sheet'а один с названием export_s, export_p. И сохранить нужно только один из них
Visual Basic
1
objXL.ActiveWorkbook.ExportAsFixedFormat xlTypePDF, filepathp, 0
0
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
10.10.2016, 14:42 10
Visual Basic
1
objXL.ActiveWorkbook.Worksheets("export_s").ExportAsFixedFormat 0, filepath, 0
1
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
10.10.2016, 16:16  [ТС] 11
Спасибо. Сильно выручаете.
И еще последний вопрос, чтобы превратить этот sheet еще в jpg, нужно использовать метод CopyPicture? Или есть более простой аналог как pdf?
0
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
10.10.2016, 17:50 12
По памяти - только диаграмма имеет метод, который позволяет сохранить её в т.ч. и в "jpg"
0
15153 / 6426 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.10.2016, 18:09 13
DjekDjekx, процитирую свое сообщение с другого форума.
Можно и без Корела, с бесплатным IrfanView.
Макрос для получения изображения ячейки А1:
Visual Basic
1
2
3
4
Sub bb()
[A1].Copy
Shell """C:\Program Files\IrfanView\i_view32.exe"" /clippaste /dpi=(300,300) /convert=d:\A1.jpg"
End Sub
Приделайте цикл, паузу - и готово!
2
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
12.10.2016, 11:43  [ТС] 14
Visual Basic
1
2
3
4
filepathj = "C:\test.jpg"
objXL.ActiveWorkbook.Worksheets("expor_col").Range("A1:L56").CopyPicture xlScreen, xlBitmap
Set oCht = Charts.Add 
oCht.Paste.Export filepathj, Filtername = "JPG"
А если ячейки преобразовать "типа" в диаграмму и дальше эскпортировать таким способом? Правда этот кусок кода не рабочий
0
 Аватар для pashulka
4135 / 2239 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
12.10.2016, 15:52 15
Лучший ответ Сообщение было отмечено DjekDjekx как решение

Решение

Если хотите идти этой дорогой, то :

Visual Basic
1
2
3
4
5
6
7
8
9
10
filepath = "C:\Test.jpg"
With objXL.ActiveWorkbook.Worksheets("expor_col")
     Set objSource = .Range("A1:L56")
     objSource.CopyPicture 1, 2
     With .ChartObjects.Add(0, 0, objSource.Width, objSource.Height)
          .Chart.Paste
          .Chart.Export filepath, "JPG"
          .Delete
     End With
End With
1
0 / 0 / 0
Регистрация: 04.10.2016
Сообщений: 8
13.10.2016, 14:25  [ТС] 16
Спасибо! Я еще дополнил код отправкой сообщения по почте и прикреплением картинки в тело сообщения. Может кому понадобится.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
dim cdoMessage, cdoConfig, sch, filepath
filepath = "C:\test.jpg"
sch = "http://schemas.microsoft.com/cdo/configuration/"
Set cdoConfig = CreateObject("CDO.Configuration")
set cdoMessage = CreateObject("CDO.Message")
 
With cdoConfig.Fields
  .Item(sch & "sendusing") = 2 ' порты
  .Item(sch & "smtpserver") = "мойсмпт@server.ru" 
  .Item(sch & "smtpserverport") = 25
  .Item(sch & "smtpconnectiontimeout") = 10
  .Item(sch & "languagecode") = "ru"
  .Item("urn:schemas:mailheader:content-type") = "application/octet-stream; charset=windows-1251"
  .update
End With
 
Set cdoMessage.Configuration = cdoConfig
cdoMessage.From = "from@test.ru"
cdoMessage.To = "to@test.ru"
cdoMessage.Subject = Test
cdoMessage.AddAttachment(filepath)
cdoMessage.HtmlBody = "<html><body><img src=""cid:myimage.jpg""/></body></html>" & vbCrLf
 
Set objBP = cdoMessage.AddRelatedBodyPart(filepath, "myimage.jpg", CdoReferenceTypeName)
objBP.Fields.Item("urn:schemas:mailheader:Content-ID") = "<myimage.jpg>"
objBP.Fields.Update
 
cdoMessage.Send
0
13.10.2016, 14:25
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.10.2016, 14:25
Помогаю со студенческими работами здесь

Как получить выбранное значение из XLSM-файла?
Привет. На днях поставили такую незатейлевую задачу и я что-то не могу найти как ее исполнить. Есть...

Экспорт в PDF
Добрый день! Подскажите, что не так в коде? Первый раз при запуске выполняется экспорт, второй...

экспорт в Pdf
Всем привет. Люди добрые помогите решить задачу, а суть ее такова : Есть отчет в лотусе, который...

Экспорт отчета в PDF
Есть отчет содержащий подчиненный отчет. Первый содержит поле год, по которому группируется записи...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Создание макробота, как способа экономии времени и варианта ИИ.
Hrethgir 28.01.2025
Чисто теоретически, создание ИИ на ПК можно разделить на части. Создать бота отвечающего за железо (эмулирование вкл, выкл, мышь, клавиатура), другой бот осуществляет распознавание изображений,. . .
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru