powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите скопировать лист из книги в книгу
38 сообщений из 38, показаны все 2 страниц
Помогите скопировать лист из книги в книгу
    #34046728
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот мои мысли, но не работает. :(
Sub q()
Application.Workbooks.Open("c:\Проба\Пробный.xls").Activate
Application.ActiveWorkbook.Worksheets("ПробныйЛист").Select
Application.ActiveWorkbook.Worksheets("ПробныйЛист").Copy after:=Application.Workbooks("c:\Проба\Пробный2xls").Sheets("Лист3")
End Sub

кто что может предложить?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34046774
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Sub q()
     Application.Workbooks.Open "c:\Проба\Пробный.xls"
     Application.ActiveWorkbook.Worksheets("ПробныйЛист").Select
     Application.ActiveWorkbook.Worksheets("ПробныйЛист").Copy after:=Application.ActiveWorkbook.Sheets( 3 )
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34046819
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понимаю лист скопируется в активную книгу, а мне нужно в другую
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34046867
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3Я так понимаю лист скопируется в активную книгу, а мне нужно в другую
Прежде чем лист копировать в книгу эту книгу надо открыть!
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34046944
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
k-nike Dmitriy3Я так понимаю лист скопируется в активную книгу, а мне нужно в другую
Прежде чем лист копировать в книгу эту книгу надо открыть!

Подрозумевается, что книга будет уже открыта. Собираюсь это повесить на событие при открытии книги
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047045
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какую ошибку выдает-то?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047076
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
run-time error '9'
subscript out of range
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047115
Фотография orunbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Application.ActiveWorkbook.Worksheets("ПробныйЛист").Select
Application.ActiveWorkbook.Worksheets("ПробныйЛист").Copy after:=Application.ActiveWorkbook.Sheets( 3 )

возможно нету листа ПробныйЛист, если такой лист есть, то ошибка в Sheets(3)
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047144
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это если копируете из уже открытой книги с макросом в Пробный.xls
Код: plaintext
1.
Application.Workbooks.Open("c:\Проба\Пробный.xls").Activate
Application.ActiveWorkbook.Worksheets("ПробныйЛист").Copy after:=Application.ThisWorkbook.Sheets("Лист3")

Если вешать это событием на открытие книги Пробный.xls, то макрос переписывать надо.

...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047145
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как то мы не туда полезли :)
Я собственно хочу решить пока следующию задачу. При открытии книги Проба.xls, в нее на зарание отведенный лист, копируется все содержание листа из другой книги скажем Проба1.xls Лист1
Вот кто что может предложить на сей счет
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047253
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3Как то мы не туда полезли :)
Как-то вы тогда не так объясняете.
Dmitriy3Я собственно хочу решить пока следующию задачу. При открытии книги Проба.xls, в нее на зарание отведенный лист, копируется все содержание листа из другой книги скажем Проба1.xls Лист1
При условии, что Проба1.xls уже открыт и в книге Проба.xls не существует листа Лист1, в книге Проба.xls пишем следующий макрос:
Код: plaintext
1.
2.
Private Sub Workbook_Open()
    Application.Workbooks("Проба1.xls").Sheets("Лист1").Copy after:=ThisWorkbook.Sheets( 1 )
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047542
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
k-nike Dmitriy3Как то мы не туда полезли :)
Как-то вы тогда не так объясняете.
Dmitriy3Я собственно хочу решить пока следующию задачу. При открытии книги Проба.xls, в нее на зарание отведенный лист, копируется все содержание листа из другой книги скажем Проба1.xls Лист1
При условии, что Проба1.xls уже открыт и в книге Проба.xls не существует листа Лист1, в книге Проба.xls пишем следующий макрос:
Код: plaintext
1.
2.
Private Sub Workbook_Open()
    Application.Workbooks("Проба1.xls").Sheets("Лист1").Copy after:=ThisWorkbook.Sheets( 1 )
End Sub


А если условие такое, что Проба1.xls может быть как открыт так и закрыт и в Проба.xls уже есть Лист 1.
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047644
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3А если условие такое, что Проба1.xls может быть как открыт так и закрыт и в Проба.xls уже есть Лист 1.

Если уже есть "Лист1", то добавится "Лист1(2)", а что нужно то? Как-нибудь сразу все условия нельзя сформулировать?.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Workbook_Open()
    Dim wb As Workbook, wbFullName As String, wbName As String
    
    wbFullName = "c:\Проба\Проба1.xls"
    wbName = Dir(wbFullName)
    
    On Error Resume Next
    Set wb = Workbooks(wbName)
    On Error GoTo  0 
    If wb Is Nothing Then
        If wbName = "" Then
            MsgBox "The specified file doesn't exist in the specified directory!"
            Exit Sub
        Else
            Set wb = Workbooks.Open(wbFullName)
        End If
    End If
    wb.Sheets("Лист1").Copy after:=ThisWorkbook.Sheets( 1 )
    wb.Close False
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34047920
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL) Dmitriy3А если условие такое, что Проба1.xls может быть как открыт так и закрыт и в Проба.xls уже есть Лист 1.

Если уже есть "Лист1", то добавится "Лист1(2)", а что нужно то? Как-нибудь сразу все условия нельзя сформулировать?.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub Workbook_Open()
    Dim wb As Workbook, wbFullName As String, wbName As String
    
    wbFullName = "c:\Проба\Проба1.xls"
    wbName = Dir(wbFullName)
    
    On Error Resume Next
    Set wb = Workbooks(wbName)
    On Error GoTo  0 
    If wb Is Nothing Then
        If wbName = "" Then
            MsgBox "The specified file doesn't exist in the specified directory!"
            Exit Sub
        Else
            Set wb = Workbooks.Open(wbFullName)
        End If
    End If
    wb.Sheets("Лист1").Copy after:=ThisWorkbook.Sheets( 1 )
    wb.Close False
End Sub


Большое спасибо процедура работает.
можно откоментировать вот этот кусочек
On Error Resume Next
Set wb = Workbooks(wbName)
On Error GoTo 0

И еще одно, если Лист1 уже есть можно его переписать (заменить) на вновь скопированный, а не создавать каждый раз новый лист. (Удалять Лист1 при закрытии не желательно)
И ужу совсем хорошо было бы если при копировани смотреть был Лист1 модифицирован и если да то копировать иначе нет
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34048229
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3можно откоментировать вот этот кусочек
On Error Resume Next
Set wb = Workbooks(wbName)
On Error GoTo 0 On Error Resume Next
Временно выключаем остановку процедуры при ошибках

Set wb = Workbooks(wbName)
Пытаемся задать переменную книги. Если книга не открыта, то произойдет ошибка (на которую мы не отреагируем ввиду вышеуказ. инструкции, а если книга открыта, то задастся переменная.

On Error GoTo 0
Включаем остановку процедуры при ошибках, чтоб не пропустить др. ошибки

If wb Is Nothing Then...
Теперь проверяем задалась ли переменная и действуем по обстановке :-)

Dmitriy3если Лист1 уже есть можно его переписать (заменить) на вновь скопированный...Тогда так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Private Sub Workbook_Open()
    Dim wb As Workbook, wbFullName As String, wbName As String
    
    wbFullName = "c:\Проба\Проба1.xls"
    wbName = Dir(wbFullName)
    
    On Error Resume Next
    Set wb = Workbooks(wbName)
    On Error GoTo  0 
    If wb Is Nothing Then
        If wbName = "" Then
            MsgBox "The specified file doesn't exist in the specified directory!"
            Exit Sub
        Else
            Set wb = Workbooks.Open(wbFullName)
        End If
    End If
    On Error Resume Next
    Application.DisplayAlerts = False
    ThisWorkbook.Sheets("Лист1").Delete
    Application.DisplayAlerts = True
    On Error GoTo  0 
    wb.Sheets("Лист1").Copy after:=ThisWorkbook.Sheets( 1 )
    wb.Close False
End Sub

Dmitriy3И ужу совсем хорошо было бы если при копировани смотреть был Лист1 модифицирован и если да то копировать иначе нетНу это будет слегка посложней. Если хочешь, исследуй код приложения Compare на след. странице: http://www.cpearson.com/excel/download.htm

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34048291
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Лист1").Delete
Application.DisplayAlerts = True
On Error GoTo 0
wb.Sheets("Лист1").Copy after:=ThisWorkbook.Sheets(1)
wb.Close False
End Sub[/src]
а если фаил из которого при открытии запускаем процедуру уже открыт у кого то, то как на нем отразиться удаление и новая вставка листа?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34048432
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Sheets("Лист1").Delete
Application.DisplayAlerts = True
On Error GoTo 0
wb.Sheets("Лист1").Copy after:=ThisWorkbook.Sheets(1)
wb.Close False
End Sub[/src]
а если фаил из которого при открытии запускаем процедуру уже открыт у кого то, то как на нем отразиться удаление и новая вставка листа?

1) этого не должно происходить иначе надо отлаживать процесс работы с файлом, а не код.

2) если это все-таки происходит, тут два варианта:

а. если файл зашарен (Shared), то лист добавить невозможно в любом случае и выскочит ошибка VBA.

б. если файл не зашарен, то сохранить изменения в нем сможет только тот, кто его открыл первым. Осталные смогут ...
- либо открыть в режиме Read Only и сохранить свои изменения в др. файл, потеряв при этом изменения, которые производились первым пользователем.
- либо ждать пока первый пользователь закроет файл

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34049494
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В продолжение вчерашней темы копирования листа.
Вся задача состоит в следующем. Есть два файла (Исходный. xls и Принимающий.xls) оба имеют общий доступ в сети. Народу хочется при открытии Принимающий.xls увидеть в нем все новое, что появилось в Исходный. xls .(речь идет о конкретном листе а не о всем файле). Как быть с тем, что файлы могут одновременно открываться и закрываться, возможно и редактироваться.
Реально ли это реализовать?
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34049550
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обьедените файлы в один
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34049567
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Он сейчас и есть один. :) Но вот у начальства мысли появились сделать два.
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34050499
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хелп еще плиз.
Помогите доработать процедуру.
Как бы ее заставить не реагировать на простое выделение ячеек.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim metka As String
metka = "Было изменение"
If Cells("").Select Then ' вот тут я пытаюсь заставить не реагировать на клики по ячейкам
Range("k2").Value = ""
Else
Range("k2").Value = metka
End If
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34050537
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3Он сейчас и есть один. :) Но вот у начальства мысли появились сделать два.

Обьясни начальству что это плохая идея.
Для совмесного пользования я бы предложил связку EXCEL - ACCESS
1. Доступно (ни чего докупать не надо поскольку все в пакете MSOffice
2. Не нужно обучать народ Access т. к. вывод и ввод через EXCEL
3. Более устойчивая работа (Access позволяет одновременно подключаться ~ 25 пользователям)

А обучится этому легко http://www.firststeps.ru/vba/excel/r.php?41
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34050577
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitriy3Хелп еще плиз.
Помогите доработать процедуру.
Как бы ее заставить не реагировать на простое выделение ячеек.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim metka As String
metka = "Было изменение"
If Cells("").Select Then ' вот тут я пытаюсь заставить не реагировать на клики по ячейкам
Range("k2").Value = ""
Else
Range("k2").Value = metka
End If
End Sub

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

для отлова изменения ячейки надо использовать
Код: plaintext
Private Sub Worksheet_Change
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34050625
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот блин балда я не на то событие стал процедуру вешать, не внимательность блин.
Да я все продолжаю придумывать как выйти из положения. Сейчас думаю отслеживать были изменения на листе или нет и если были то копировать его во второй фаил. Плюс думаю разрешить это конкретному человеку чтобы только один человек мог запускать процесс. Еще хочу отследить строки где были изменения и какнибуть их акцентировать, что бы пользователь сразу видел. Ну а дальше видно будет, как еще трансформируется сия идея :)
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #34051153
Dmitriy3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять хелп.
Теперь никак не могу убрать метку. Все попытки ее убрать заканчиваются тем, что это воспринимается как изменение и она опять ставиться. :(
Хочется после того как лист скопирован эту метку убирать, а никак не выходит.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim metka As String
metka = "Было изменение"
Range("k2").Value = metka
End Sub
...
Рейтинг: 0 / 0
Помогите скопировать лист из книги в книгу
    #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
38 сообщений из 38, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите скопировать лист из книги в книгу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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