Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - макрос excel

Ответить
Настройки темы
VBA - макрос excel

Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Maza11
Дата: 01-07-2015
нужен простой макрос. в документ excel удалить два логотипа организации, уместить для печати на 1 страницу документ, сохранить и напечатать 3 копии.
Можно ли как то его применить для всех документов в конкретной папке, есть много папок по разным торг.точкам, но документ одинаковый и в каждой папке по 20-50 документов. чтобы каждый не открывать и не проделывать это все.

Пробовал записать макрос нажав на "Запись", вот такой код вышел

Код: Выделить весь код
Sub лямина2()
'
' лямина2 Макрос
'
' Сочетание клавиш: Ctrl+l
'
    Range("H4:I7").Select
    Selection.ClearContents
    ActiveSheet.Shapes.Range(Array("Picture -767")).Select
    Selection.Delete
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.236220472440945)
        .RightMargin = Application.InchesToPoints(0.236220472440945)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWindow.SelectedSheets.PrintPreview
    ActiveWorkbook.Save
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
        IgnorePrintAreas:=False
End Sub
применять для других документов его как не открывая каждый из 492 документов ???

Отправлено: 13:17, 01-07-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Maza11, упакуйте пару-тройку образцов документов в архив, прикрепите последний к сообщению или выложите на RGhost.

Отправлено: 13:22, 01-07-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


делал все через менюшки и выставлял уместить для печати на 1 страницу документ через предварительный просмотр - параметры страницы - разместить на 1 странице,
и при срабатывании макроса. он останавливается на окне предварительного просмотра

Отправлено: 13:22, 01-07-2015 | #3


Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar затяжка.rar
(30.9 Kb, 4 просмотров)

прикрепил образцы

Отправлено: 13:25, 01-07-2015 | #4


Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


нужно наверное еще два варианта в одном уместить по ширине на 1 страницу, в другом на 1 страницу и по ширине и высоте (чтобы фамилии и подписи не переносило на новый лист)

Отправлено: 13:34, 01-07-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Maza11:
удалить два логотипа организации, »
Maza11, я вижу в выложенных документах только один рисунок на документ:
Скрытый текст

Поясните.

Далее:
Цитата Maza11:
уместить для печати на 1 страницу »
Надо полагать, Вы хотели сказать — по ширине на одну страницу?

Отправлено: 13:49, 01-07-2015 | #6


Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата Iska:
, я вижу в выложенных документах только один рисунок на документ: »
под ним строка %!25 это тоже удалить

Цитата Iska:
Надо полагать, Вы хотели сказать — по ширине на одну страницу? »
да.

Просто внезапно озадачили. в спешке писал

делаю сейчас так

печатает, без лишних окон, но приходится открывать каждый документ, нажимать "Ctrl + L", закрывать и так далее
вот этот момент можно оптимизировать ?

Код: Выделить весь код
Sub лямина2()
'
' лямина2 Макрос
'
' Сочетание клавиш: Ctrl+l
'
    Range("H4:I7").Select
    Selection.ClearContents
    ActiveSheet.Shapes.Range(Array("Picture -767")).Select
    Selection.Delete
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.236220472440945)
        .RightMargin = Application.InchesToPoints(0.236220472440945)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    ActiveWorkbook.Save
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Отправлено: 14:08, 01-07-2015 | #7


Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


это еще не все оказалось, внизу строка есть

Цитата:
Автор друку: Хал....
но у нее разный адрес получается на каждом документе, поэтому удалять ее автоматически уже не знаю как

Отправлено: 14:29, 01-07-2015 | #8


Аватара для Maza11

Старожил


Сообщения: 269
Благодарности: 1

Профиль | Отправить PM | Цитировать


думаю надо макросом удалять строку содержащую "Автор друку: ..." и строку перед ней, т.к. там какая то дурацкая строка идет высотой 300-400.
Это возможно ???

Отправлено: 16:02, 01-07-2015 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Примерно так (WSH, VBScript):
Скрытый текст
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim objFile
Dim objExcel


If WScript.Arguments.Count = 1 Then
	strSourceFolder = WScript.Arguments.Item(0)
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If .FolderExists(strSourceFolder) Then
			Set objExcel = Nothing
			
			For Each objFile In .GetFolder(strSourceFolder).Files
				Select Case LCase(.GetExtensionName(objFile.Name))
					Case "xls", "xlsx"
						If objExcel Is Nothing Then
							Set objExcel = WScript.CreateObject("Excel.Application")
						End If
						
						WScript.Echo objFile.Path
						
						With objExcel
							With .Workbooks.Open(objFile.Path)
								With .Worksheets.Item(1)
									.Shapes.Item("Picture -767").Delete
									.Range("H4:I6").Select
									objExcel.Selection.ClearContents
									.Range("A1").Select
									
									objExcel.Union(.Rows(.UsedRange.Rows.Count).EntireRow, .Rows(.UsedRange.Rows.Count -1).EntireRow).Delete
									
									.PageSetup.FitToPagesWide = 1
									.PrintOut ,, 3
								End With
								
								.Save
								.Close
							End With
						End With
					Case Else
						' Nothing to do
				End Select
			Next
			
			If Not objExcel Is Nothing Then
				Set objExcel = WScript.CreateObject("Excel.Application")
			End If
		Else
			WScript.Echo "Can't find source folder [" & strSourceFolder & "]."
			WScript.Quit 2
		End If
	End with
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source folder>"
	WScript.Quit 1
End If

WScript.Quit 0

Целевая папка указывается параметром скрипта (также можно просто перетащить папку на скрипт в Проводнике).

Отправлено: 16:42, 01-07-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - макрос excel

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Помогите написать макрос в Excel, экспорт данных из Excel в Word. E.v.g Программирование и базы данных 7 03-05-2018 22:18
VBS/WSH/JS - исправить макрос excel oleg-sm Скриптовые языки администрирования Windows 1 09-08-2013 19:01
VBA - [решено] Макрос excel neo21 Программирование и базы данных 4 06-03-2012 22:04
Разное - Макрос Excel. KiriJolit Microsoft Office (Word, Excel, Outlook и т.д.) 0 02-12-2010 23:19
Макрос Excel работает после перезагрузки :( Guest Программирование и базы данных 1 11-05-2004 08:43




 
Переход