powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите скопировать лист из книги в книгу
13 сообщений из 38, страница 2 из 2
Помогите скопировать лист из книги в книгу
    #34053305
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Люди, подскажите как метку можно обнулить?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34071773
Фотография Ivan33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3 k-nike Dmitriy3Я так понимаю лист скопируется в активную книгу, а мне нужно в другую
Прежде чем лист копировать в книгу эту книгу надо открыть!

Подрозумевается, что книга будет уже открыта. Собираюсь это повесить на событие при открытии книги это так, нашел добавку для проверки открыта ли книга

авторOne very flexible way to approach the task of checking whether a workbook is open is to use a function that does the checking, and then simply returns a TRUE or FALSE value based on whether the workbook is open. The following short macro performs this succinct task:
Код: plaintext
1.
2.
3.
4.
5.
6.
Function AlreadyOpen(sFname As String) As Boolean
    Dim wkb As Workbook
    On Error Resume Next
    Set wkb = Workbooks(sFname)
    AlreadyOpen = Not wkb Is Nothing
    Set wkb = Nothing
End Function

авторTo use the function, just pass it the name of the workbook you want to check, in the following manner:

Код: plaintext
1.
2.
3.
4.
5.
6.
sFilename = "MyFileName.xls"
    sPath = "C:\MyFolder\MySubFolder\"
    If AlreadyOpen(sFilename) Then
        'Do not have to open
    Else
        Workbooks.Open sPath & sFilename
    End If
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34320402
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня примерно такая задача, котораю тут обсуждалась. Взял за основу увиденный код. Задача такая: Есть XLS-документ в который я вставил кнопку. При нажатии на которую создается новый XLS-документ (C:\test\zakaz.xls), а если он там уже есть, то удалить и создать новый пустой. Из первого документа во вновь созданный копируется лист "Бланк заказов" (хорошо, если бы он там единственным остался).
Текст процедуры такой:

Private Sub CommandButton1_Click()
Dim wb As Workbook, wbFullName As String, wbName As String

wbFullName = "C:\test\zakaz.xls"
wbName = Dir(wbFullName)

On Error Resume Next
Set wb = Workbooks(wbName)
On Error GoTo 0
If wb Is Nothing Then
If wbName = "" Then
Set wb = CreateObject("Excel.Sheet")
wb.Application.Workbooks.Open (wbFullName)
' Else
' Set wb = Workbooks.Open(wbFullName)
End If
End If

On Error Resume Next
Application.DisplayAlerts = False
wb.Sheets("Ëèñò1").Delete
Application.DisplayAlerts = True
On Error GoTo 0
ThisWorkbook.Sheets("Бланк заказов").Copy before:=wb.Sheets(1)
wb.Close True
End Sub

Естественно, что код не работает. Помогите, ребята победить эту проблему! Спасибо.
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34320823
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправка в предыдущее сообщение - вместо
wb.Sheets("Ëèñò1").Delete

читать
wb.Sheets("Лист1").Delete
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34320937
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот так пойдет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub CommandButton1_Click()
Const wbFullName = "C:\test\zakaz.xls"

    ActiveWorkbook.Sheets("Бланк заказов").Copy
    
    ActiveWorkbook.SaveAs Filename:=wbFullName, FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34321003
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vbaproа вот так пойдет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub CommandButton1_Click()
Const wbFullName = "C:\test\zakaz.xls"

    ActiveWorkbook.Sheets("Бланк заказов").Copy
    
    ActiveWorkbook.SaveAs Filename:=wbFullName, FileFormat:=xlNormal, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
End Sub


За идею спасибо. Применил как мог. Последняя (длинная) строка вызывает ошибку, где-то видать запятую не поставил...
Заменил строку у себя

' ThisWorkbook.Sheets("Бланк заказов").Copy before:=wb.Sheets(1)
ActiveWorkbook.Sheets("Бланк заказов").Copy before:=wb.Sheets(2)

всё равно на этой строке останов происходит... :( Шаманство с wb.Sheets(?) также не помогает.
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34322924
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub CommandButton1_Click()
    Dim wb As Workbook, wbFullName As String, wbName As String
    wbFullName = "C:\test\zakaz.xls"
    wbName = Dir(wbFullName)
    If wbName <> "" Then
        On Error Resume Next
        Set wb = Workbooks(wbName)
        On Error GoTo  0 
        If Not wb Is Nothing Then wb.Close
        Kill wbFullName
    End If
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("Бланк заказов").Copy
    ActiveWorkbook.SaveAs wbFullName
    ActiveWorkbook.Close
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34324189
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkodor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub CommandButton1_Click()
    Dim wb As Workbook, wbFullName As String, wbName As String
    wbFullName = "C:\test\zakaz.xls"
    wbName = Dir(wbFullName)
    If wbName <> "" Then
        On Error Resume Next
        Set wb = Workbooks(wbName)
        On Error GoTo  0 
        If Not wb Is Nothing Then wb.Close
        Kill wbFullName
    End If
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("Бланк заказов").Copy
    ActiveWorkbook.SaveAs wbFullName
    ActiveWorkbook.Close
End Sub

Спасибо, но к сожалению, код не работает, вылетает на строке ThisWorkbook.Sheets("Бланк заказов").Copy
т.к. на этот момент документ, в который надо скопировать лист, уже удален.
А в какой строке документ zakaz.xls СОЗДАЕТСЯ?
Господа программисты, а какой командой создается стандартный документ XLS?
Пересмотрел несколько справочников - везде показаны примеры, как открыть\закрыть документ...
Первоначально было условие: "При нажатии на кнопку создается новый XLS-документ (C:\test\zakaz.xls), а если он там уже есть, то удалить его и создать новый пустой файл C:\test\zakaz.xls." Кнопку я создал! ;)

Подскажите, как это сделать?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34324380
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37 vkodor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub CommandButton1_Click()
    Dim wb As Workbook, wbFullName As String, wbName As String
    wbFullName = "C:\test\zakaz.xls"
    wbName = Dir(wbFullName)
    If wbName <> "" Then
        On Error Resume Next
        Set wb = Workbooks(wbName)
        On Error GoTo  0 
        If Not wb Is Nothing Then wb.Close
        Kill wbFullName
    End If
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("Бланк заказов").Copy
    ActiveWorkbook.SaveAs wbFullName
    ActiveWorkbook.Close
End Sub

Спасибо, но к сожалению, код не работает, вылетает на строке ThisWorkbook.Sheets("Бланк заказов").Copy
т.к. на этот момент документ, в который надо скопировать лист, уже удален.
А в какой строке документ zakaz.xls СОЗДАЕТСЯ?
Господа программисты, а какой командой создается стандартный документ XLS?
Пересмотрел несколько справочников - везде показаны примеры, как открыть\закрыть документ...
Первоначально было условие: "При нажатии на кнопку создается новый XLS-документ (C:\test\zakaz.xls), а если он там уже есть, то удалить его и создать новый пустой файл C:\test\zakaz.xls." Кнопку я создал! ;)

Подскажите, как это сделать?
ThisWorkbook.Sheets("Бланк заказов").Copy - эта строка и создает новый документ, кроме этого, можно создать через Workbooks.Add. Решение "первоначального условия" уже несколько раз для Вас представили. Если хотите все-таки получить то, что нужно, то перефразируйте и опишите поточнее задачу. Будет лучше, если выложите основной файл...
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34324413
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex37 vkodor
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub CommandButton1_Click()
    Dim wb As Workbook, wbFullName As String, wbName As String
    wbFullName = "C:\test\zakaz.xls"
    wbName = Dir(wbFullName) 'читаем путь к файлу
    If wbName <> "" Then ' если не пустота значит файл существует
        On Error Resume Next
        Set wb = Workbooks(wbName) ' присваиваем обьктной переменной ссылку на книгу
        On Error GoTo  0 
        If Not wb Is Nothing Then wb.Close 'если ссылка есть значит книга открыта и перед удалением её надо закрыть
        Kill wbFullName 'удаление файла
    End If
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("Бланк заказов").Copy ' если у метода "Copy" не прописаны параметры, то метод копирует лист в новую книгу
    ActiveWorkbook.SaveAs wbFullName ' сохраняем вновь созданную книгу со скопированным листом методом "сохранить как"
    ActiveWorkbook.Close 'закрываем сохраненую книгу
End Sub

Спасибо, но к сожалению, код не работает, вылетает на строке ThisWorkbook.Sheets("Бланк заказов").Copy
т.к. на этот момент документ, в который надо скопировать лист, уже удален.
А в какой строке документ zakaz.xls СОЗДАЕТСЯ?
Господа программисты, а какой командой создается стандартный документ XLS?
Пересмотрел несколько справочников - везде показаны примеры, как открыть\закрыть документ...
Первоначально было условие: "При нажатии на кнопку создается новый XLS-документ (C:\test\zakaz.xls), а если он там уже есть, то удалить его и создать новый пустой файл C:\test\zakaz.xls." Кнопку я создал! ;)

Подскажите, как это сделать?
Код: plaintext
ThisWorkbook.Sheets("Бланк заказов").Copy
предпалагалось, что макрос будет лежать в книге, в которой есть лист "Бланк заказов"
этот лист и будет копироваться во вновь созданную книгу.
Если лист "Бланк заказов" находится в другой книге, то нужно обозначить в какой книге этот лист
т.е. вместо
Код: plaintext
ThisWorkbook.Sheets("Бланк заказов").Copy
надо писать
Код: plaintext
Workbooks("имя книги в которой лежит нужный лист").Sheets("Бланк заказов").Copy
при этом книга д.б. открыта
если книга закрыта, то её сначало надо открыть а потом копировать
примерно так
Код: plaintext
1.
2.
3.
Dim xlApp As New Excel.Application
Dim xlWb As Workbooks
Set xlWb = xlApp.Workbooks.Open("путь и имя файла")
xlWb.Sheets("Бланк заказов").Copy
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34325216
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор[/ThisWorkbook.Sheets("Бланк заказов").Copy - эта строка и создает новый документ, кроме этого, можно создать через Workbooks.Add. Решение "первоначального условия" уже несколько раз для Вас представили. Если хотите все-таки получить то, что нужно, то перефразируйте и опишите поточнее задачу. Будет лучше, если выложите основной файл
Ребята. Вы мне все правильно писали! Я сам дурак.
По неопытности я код писал не в модуле, а на первом листе проекта, там же кнопку создал. Перенёс код в модуль - всё заработало! Проверял работу запуская код из редактора VB.
Спасибо огромное всем за помощь. Опыта в написании кода на VBA у меня мало, раньше лишь на Турбо Паскале проги писал.
Теперь остается понять, как кнопку (расположена на первой странице документа) к коду прицепить. После переноса кода со страницы в модуль кнопка перестала запускать этот код.
Реально это сделать?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34325851
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первый вариант если макрос лежит в модуле и называется допустим "myCopy"
Код: plaintext
1.
2.
Private Sub CommandButton1_Click()
    Call myCopy
End Sub
второй вариант положить в тело макроса кнопки в модуле листа на котором расположена кнопка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub CommandButton1_Click()
    Dim wb As Workbook, wbFullName As String, wbName As String
    wbFullName = "C:\test\zakaz.xls"
    wbName = Dir(wbFullName) 'читаем путь к файлу
    If wbName <> "" Then ' если не пустота значит файл существует
        On Error Resume Next
        Set wb = Workbooks(wbName) ' присваиваем обьктной переменной ссылку на книгу
        On Error GoTo  0 
        If Not wb Is Nothing Then wb.Close 'если ссылка есть значит книга открыта и перед удалением её надо закрыть
        Kill wbFullName 'удаление файла
    End If
    Application.ScreenUpdating = False
    ThisWorkbook.Sheets("Бланк заказов").Copy ' если у метода "Copy" не прописаны параметры, то метод копирует лист в новую книгу
    ActiveWorkbook.SaveAs wbFullName ' сохраняем вновь созданную книгу со скопированным листом методом "сохранить как"
    ActiveWorkbook.Close 'закрываем сохраненую книгу
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34326929
Alex37
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
первый вариант если макрос лежит в модуле и называется допустим "myCopy"
Код: plaintext
1.
2.
Private Sub CommandButton1_Click()
    Call myCopy
End Sub

второй вариант положить в тело макроса кнопки в модуле листа на котором расположена кнопка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub CommandButton1_Click()
    Dim wb As Workbook, wbFullName As String, wbName As String
    wbFullName = "C:\test\zakaz.xls"
......................
       ThisWorkbook.Sheets("Бланк заказов").Copy 
......................
 ActiveWorkbook.Close 'закрываем сохраненую книгу
End Sub


Первый вариант - то что требовалось. Как домой приду, сразу проверить надо...
а вот второй вариант не работает. Я его ранее применял - ошибку вызывает строка
ThisWorkbook.Sheets("Бланк заказов").Copy
Именно эта строка, если код в модуле листа!
Спасибо.
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите скопировать лист из книги в книгу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]