Здравствуйте. Есть макрос который сохраняет определенный лист в определенную папку.Как его правильно модернизировать чтобы он после первого действия выполнял еще действия, а именно копировал три листа уже в другую папку.
Вот пример первого макроса. [vba]
Код
Sub Лист_экспорт() Dim cPath As String, cPrefix As String, cName As String cPath = ThisWorkbook.Path & "\экспорт\" cPrefix = "Экспорт " cName = cPath & cPrefix & Replace(ThisWorkbook.Name, ".xlsm", "") & ".xlsx"
Dim wbC As Workbook, wbE As Workbook Application.ScreenUpdating = False Set wbC = ThisWorkbook Set wbE = Workbooks.Add wbE.Sheets(1).Name = "Экспорт" wbC.Sheets("Экспорт").Cells.Copy wbE.Sheets("Экспорт").[a1].PasteSpecial xlPasteValues Application.DisplayAlerts = False wbE.SaveAs cName wbE.Close False Application.DisplayAlerts = True Application.ScreenUpdating = True
End Sub
[/vba]
к нему хочу еще это добавить. Правда теперь хотелось бы чтоб копировались значения а не формулы но сохранялся формат изначальный.
"добавить к нему" это значит что надо сделать сначала первое действие а затем второе. 1 действие копируем одну страничку в папку эеспорт 2 действие копируем три странички в другую папку с сохранением форматов но копируем только значения.
Пока что наткнулся на проблему: не знаю как прописать второй путь для второго файла. Возможно надо сначала первый сохранить и закрыть ?
[vba]
Код
Dim cPath As String, cPrefix As String, cName As String cPath = ThisWorkbook.Path & "\\1c-server\ОБЩИЕ_ДОКУМЕНТЫ\Бухгалтерия\Овощи_приход\" cPrefix = "Экспорт " cName = cPath & cPrefix & Replace(ThisWorkbook.Name, ".xlsm", "") & ".xlsx"
Здравствуйте. Есть макрос который сохраняет определенный лист в определенную папку.Как его правильно модернизировать чтобы он после первого действия выполнял еще действия, а именно копировал три листа уже в другую папку.
Вот пример первого макроса. [vba]
Код
Sub Лист_экспорт() Dim cPath As String, cPrefix As String, cName As String cPath = ThisWorkbook.Path & "\экспорт\" cPrefix = "Экспорт " cName = cPath & cPrefix & Replace(ThisWorkbook.Name, ".xlsm", "") & ".xlsx"
Dim wbC As Workbook, wbE As Workbook Application.ScreenUpdating = False Set wbC = ThisWorkbook Set wbE = Workbooks.Add wbE.Sheets(1).Name = "Экспорт" wbC.Sheets("Экспорт").Cells.Copy wbE.Sheets("Экспорт").[a1].PasteSpecial xlPasteValues Application.DisplayAlerts = False wbE.SaveAs cName wbE.Close False Application.DisplayAlerts = True Application.ScreenUpdating = True
End Sub
[/vba]
к нему хочу еще это добавить. Правда теперь хотелось бы чтоб копировались значения а не формулы но сохранялся формат изначальный.
"добавить к нему" это значит что надо сделать сначала первое действие а затем второе. 1 действие копируем одну страничку в папку эеспорт 2 действие копируем три странички в другую папку с сохранением форматов но копируем только значения.
Пока что наткнулся на проблему: не знаю как прописать второй путь для второго файла. Возможно надо сначала первый сохранить и закрыть ?
[vba]
Код
Dim cPath As String, cPrefix As String, cName As String cPath = ThisWorkbook.Path & "\\1c-server\ОБЩИЕ_ДОКУМЕНТЫ\Бухгалтерия\Овощи_приход\" cPrefix = "Экспорт " cName = cPath & cPrefix & Replace(ThisWorkbook.Name, ".xlsm", "") & ".xlsx"
Почти все что хотел работает. Проблемы следующие. Естественно скидывается формат. Так как я и не знаю как сказать чтобы копировал учитывая формат. И почему-то не хочет сохранять файл. может я путь не правильно пишу хотя клинет на строчке
[vba]
Код
wbA.SaveAs bName
[/vba]
Догадался как исправить некоторые проблемы. Теперь макрос такой:
[vba]
Код
Sub Лист_экспорт() Dim cPath As String, cPrefix As String, cName As String cPath = ThisWorkbook.Path & "\экспорт\" cPrefix = "Экспорт " cName = cPath & cPrefix & Replace(ThisWorkbook.Name, ".xlsm", "") & ".xlsx"
Dim wbC As Workbook, wbE As Workbook Application.ScreenUpdating = False Set wbC = ThisWorkbook Set wbE = Workbooks.Add wbE.Sheets(1).Name = "Экспорт" wbC.Sheets("Экспорт").Cells.Copy wbE.Sheets("Экспорт").[a1].PasteSpecial xlPasteValues Application.DisplayAlerts = False wbE.SaveAs cName wbE.Close False Application.DisplayAlerts = True Application.ScreenUpdating = True
Dim bPath As String, bPrefix As String, bName As String bPath = ThisWorkbook.Path & "\\1c-server\ОБЩИЕ_ДОКУМЕНТЫ\Бухгалтерия\Овощи_приход\" bPrefix = "Экспорт " bName = bPath & bPrefix & Replace(ThisWorkbook.Name, ".xlsm", "") & ".xlsx"
Почти все что хотел работает. Проблемы следующие. Естественно скидывается формат. Так как я и не знаю как сказать чтобы копировал учитывая формат. И почему-то не хочет сохранять файл. может я путь не правильно пишу хотя клинет на строчке
Manyasha, мы с вами как-то по разному смотрим. Я вижу в начале двойной слеш. Или вы запустили макрос ? ДА в логе он приклеивает к моему пути какойто свой. Почему он так делает не знаю. перед тем что я написал он еще дописывает путь до месторасположения текущего файла.
Manyasha, мы с вами как-то по разному смотрим. Я вижу в начале двойной слеш. Или вы запустили макрос ? ДА в логе он приклеивает к моему пути какойто свой. Почему он так делает не знаю. перед тем что я написал он еще дописывает путь до месторасположения текущего файла.koyaanisqatsi
Сообщение отредактировал koyaanisqatsi - Пятница, 06.03.2015, 21:06
Sheets(Array("Лист1", "Лист2", "Лист3")).Copy' копируем 3 листа Set newB = ActiveWorkbook For Each sh In newB.Sheets sh.UsedRange.Value = sh.UsedRange.Value'удаляем формулы Next sh newB.SaveAs bName'сохраняем, bName - полный путь
[/vba] Только листы переименовать останется.
А можно и так [vba]
Код
Sheets(Array("Лист1", "Лист2", "Лист3")).Copy' копируем 3 листа Set newB = ActiveWorkbook For Each sh In newB.Sheets sh.UsedRange.Value = sh.UsedRange.Value'удаляем формулы Next sh newB.SaveAs bName'сохраняем, bName - полный путь
[/vba] Только листы переименовать останется.Manyasha
ЯД: 410013299366744 WM: R193491431804
Сообщение отредактировал Manyasha - Пятница, 06.03.2015, 22:14