Здравствуйте, всем! Уважаемые знатоки XL и макросов, подскажите, в чем ошибка: при попытке скопировать лист в другую книгу (макросом и при помощи кнопки) в коде возникает ошибка. Вот кусок кода
' Sheets(MySheet).Select ' ' мой код ' ' создание кнопки макрорекордером ' ' Windows.Arrange ArrangeStyle:=xlTiled Windows("МЕНЮ.xlsm").Activate Sheets(MySheet).Select
' заменяю уникальные имена листов на имя переменной ' на эту строку жалуется Sheets(MySheet).Move Before:=Workbooks("АРХИВ_МЕНЮ.xlsm").Sheets(2 _ ) ActiveWorkbook.Save ActiveWindow.Close End Sub
[/vba]
Здравствуйте, всем! Уважаемые знатоки XL и макросов, подскажите, в чем ошибка: при попытке скопировать лист в другую книгу (макросом и при помощи кнопки) в коде возникает ошибка. Вот кусок кода
' Sheets(MySheet).Select ' ' мой код ' ' создание кнопки макрорекордером ' ' Windows.Arrange ArrangeStyle:=xlTiled Windows("МЕНЮ.xlsm").Activate Sheets(MySheet).Select
' заменяю уникальные имена листов на имя переменной ' на эту строку жалуется Sheets(MySheet).Move Before:=Workbooks("АРХИВ_МЕНЮ.xlsm").Sheets(2 _ ) ActiveWorkbook.Save ActiveWindow.Close End Sub
Сорри, не знаю как на сайте выложить код... [admin]в режиме редактирования поста надо выделить код и нажать кнопку # на панели инструментов. Исправила[/admin]
Сорри, не знаю как на сайте выложить код... [admin]в режиме редактирования поста надо выделить код и нажать кнопку # на панели инструментов. Исправила[/admin]olegglebovich
Сообщение отредактировал Pelena - Вторник, 19.01.2021, 22:40
Книга, куда Вы вставляете лист должна быть открыта. В коде не видно строк, где открывается эта книга.
Вы не копируете лист, а перемещаете (.Move), поэтому если он единственный в книге МЕНЮ.xlsm, то он не может быть перемещён. Для копирования нужно не .Move, а .Copy
Книга, куда Вы вставляете лист должна быть открыта. В коде не видно строк, где открывается эта книга.
Вы не копируете лист, а перемещаете (.Move), поэтому если он единственный в книге МЕНЮ.xlsm, то он не может быть перемещён. Для копирования нужно не .Move, а .CopyPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Всем доброго времени суток! Нашел более менее подходящий для себя код, но в нем есть две беды- сохраняет каждый лист в отдельную книгу (а надо,чтоб в одну АРХИВ_МЕНЮ.xlsm) и дает ошибку. Подскажите, как это исправить. [vba]
Код
Public Wb As Workbook Sub SaveSheetInFolderToFile()
Workbooks.Open Filename:="C:\Users\Oleg\АРХИВ_МЕНЮ.xlsm" Set Wb = ActiveWorkbook MsgBox Wb.Name
Dim bookconst As Workbook Set bookconst = Workbooks(ActiveWorkbook.Name)
Application.ScreenUpdating = False
ActiveSheet.Move 'дает ошибку: в книге должен быть хотя бы один видимый лист
Dim sName, fAdres As Variant sName = ActiveSheet.Name fAdres = bookconst.Path
If Len(Dir(fAdres & "\" & bookconst, vbDirectory)) = 0 Then MkDir fAdres & "\" & bookconst
Всем доброго времени суток! Нашел более менее подходящий для себя код, но в нем есть две беды- сохраняет каждый лист в отдельную книгу (а надо,чтоб в одну АРХИВ_МЕНЮ.xlsm) и дает ошибку. Подскажите, как это исправить. [vba]
Код
Public Wb As Workbook Sub SaveSheetInFolderToFile()
Workbooks.Open Filename:="C:\Users\Oleg\АРХИВ_МЕНЮ.xlsm" Set Wb = ActiveWorkbook MsgBox Wb.Name
Dim bookconst As Workbook Set bookconst = Workbooks(ActiveWorkbook.Name)
Application.ScreenUpdating = False
ActiveSheet.Move 'дает ошибку: в книге должен быть хотя бы один видимый лист
Dim sName, fAdres As Variant sName = ActiveSheet.Name fAdres = bookconst.Path
If Len(Dir(fAdres & "\" & bookconst, vbDirectory)) = 0 Then MkDir fAdres & "\" & bookconst
Здравствуйте. Нашел решение, код рабочий. Подскажите, как его изменить, что бы перемещенный лист сохранялся в заданной книге без запроса на выбор? [vba]
Код
Option Explicit Dim DestinationBook As Workbook Public Sub КопированиеЛистаВНужнуюКнигу() Dim SourceSheet As Worksheet
Set SourceSheet = ThisWorkbook.ActiveSheet If ВыбратьКнигуПолучатель = True Then SourceSheet.Copy After:=DestinationBook.Sheets("Лист1") End If End Sub Function ВыбратьКнигуПолучатель() As Boolean Dim OpenFileName As String
On Error Resume Next OpenFileName = Application.GetOpenFilename(FileFilter:="Рабочие книги (*.xls),*.xls") Set DestinationBook = Workbooks.Open(OpenFileName) If Err.Number > 0 Then ВыбратьКнигуПолучатель = False Else ВыбратьКнигуПолучатель = True End If End Function
[/vba]
Здравствуйте. Нашел решение, код рабочий. Подскажите, как его изменить, что бы перемещенный лист сохранялся в заданной книге без запроса на выбор? [vba]
Код
Option Explicit Dim DestinationBook As Workbook Public Sub КопированиеЛистаВНужнуюКнигу() Dim SourceSheet As Worksheet
Set SourceSheet = ThisWorkbook.ActiveSheet If ВыбратьКнигуПолучатель = True Then SourceSheet.Copy After:=DestinationBook.Sheets("Лист1") End If End Sub Function ВыбратьКнигуПолучатель() As Boolean Dim OpenFileName As String
On Error Resume Next OpenFileName = Application.GetOpenFilename(FileFilter:="Рабочие книги (*.xls),*.xls") Set DestinationBook = Workbooks.Open(OpenFileName) If Err.Number > 0 Then ВыбратьКнигуПолучатель = False Else ВыбратьКнигуПолучатель = True End If End Function