powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Из книги Excel добавить лист из другой книги Excel
25 сообщений из 55, страница 2 из 3
Из книги Excel добавить лист из другой книги Excel
    #36445031
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я это про "только название файла" писал, если кто не понял.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36445039
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi только название файла и его разшерение, а не полный путь.

не заметил этого условия

Код: 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.
25.
26.
27.
28.
29.
30.
Function GetFilePath() As String

Dim fd As FileDialog   ' объявляем переменную
Set fd = Application.FileDialog(msoFileDialogOpen)  ' создаем диалог

With fd
.Filters.Clear    ' удаляем все стандартные фильтры диалога
.Filters.Add "Все файлы", "*.*"  ' создаем нулевой фильтр
.Filters.Add "Все MDB ", "*.MDB"  ' создаем второй фильтр в данном случае он может быть не нужен
.FilterIndex =  0                    ' ставим маркер на 0 фильтр
.AllowMultiSelect = False  ' запрещаем мультиселект
.ButtonName = "Выбрать"    ' называем кнопку выбора как хотим
End With

   If fd.Show = - 1  Then
      GetFilePath = fd.SelectedItems.Item( 1 ) ' присваиваем функции путь и имя
   Else
      Exit Function   ' если нажата клавиша cancel
  End If

Set fd = Nothing ' чистим память

End Function

Sub doit()
Dim MyFilename, MyExt As String

    MyFilename = Dir(GetFilePath) 'получаем имя файла
    MyExt = Right(MyFilename,  3 )  'получаем расширение
    
End Sub

расширение файла в разных ОС может быть не 3 символа, поэтому тут можно применить разный подход. Может есть стандартные функции по выделению, но я их незнаю. Это вопрос к старожилам.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36445292
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все равно что-то не получается... занести в книгу лист из другой книги.
Хотя ведь макрос это как то делает...
только делает это с одной и той же книгой. А мне надо что бы был выбор этой злополучной книги, из которой лист взять нужно...
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36445377
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот же выбор:
Код: plaintext
1.
2.
3.
openxlsb = Application _
                .GetOpenFilename("Файл-источник (*.xls), *.xls")
Set xlsb = Workbooks.Open(Filename:=openxlsb, ReadOnly:=True)
Теперь бери из этого xlsb Sheets(n):
xlsb.Sheets(1).Copy куданадо
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36445446
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Ну вот же выбор:
Код: plaintext
1.
2.
3.
openxlsb = Application _
                .GetOpenFilename("Файл-источник (*.xls), *.xls")
Set xlsb = Workbooks.Open(Filename:=openxlsb, ReadOnly:=True)
Теперь бери из этого xlsb Sheets(n):
xlsb.Sheets(1).Copy куданадо

у меня вот тут возникает ошибка.

Код: plaintext
openxlsb = Application.GetOpenFilename("Файл-источник (*.xls), *.xls")

(type mistmatch)

В общем что-то не допонимаю я, не хочет у меня из выбранной книги брать лист. Он у меня поему книгу целиком хочет добавить. Отсюда наверное и ошибка...
Пока еще не разобрался.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36445464
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, запусти приложение, что скажет:
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36446215
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,
ваш метод гораздо красивше моего. Спасибо за инфу.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36446335
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiВсе равно что-то не получается... занести в книгу лист из другой книги.
Хотя ведь макрос это как то делает...
только делает это с одной и той же книгой. А мне надо что бы был выбор этой злополучной книги, из которой лист взять нужно...

вот это должно быть решением Вашей задачи, я сделал реализацию на основе файла Hugo121
там два листа - вариант Hugo121 и если у Вас по какой то причине не заработает "GetOpenFilename" мой вариант, не требующий этой функции.

В моём модуле идет объявление глобальной переменной с номером избранного листа, если будете Удалять мой модуль не забудьте о ней. Иначе вне зависимости от выбора будет всегда выбираться лист 1.
Ну и не стал делать масштабируемость листа с выбором страницы книги. Если очень надо погуглите как менять размер формы.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36446370
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так, примечание к кодам для новичков.
Имя "openxlsb" - это остатки от моего другого кода - там были "openxlsa", "openxlsb", "openxlsc", затем уже "set xlsa", "set xlsb", "set xlsc".
Держаться именно за это имя не обязательно, если файл выбирается только один, то понятнее было бы сперва использовать имя вида "openWB", затем "Set WB".
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36446420
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант с копированием листа целиком на основе варианта Shamanus - правда так работает только мой вариант
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36446509
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Вариант с копированием листа целиком на основе варианта Shamanus - правда так работает только мой вариант

я просто понял, что нужно именно содержимое листа скопировать
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36446578
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пусть будут два варианта. Я понял, что человеку в итоге надо набирать листы из разных книг, копирование листов целиком проще в цикл запихнуть, да и наверное название листов тоже надо сохранять...
В начале кода выбора файлов есть смысл помочь пользователю с выбором начальной папки, если она постоянна:
Код: plaintext
1.
2.
Const dir = "C:\test" 'Вставь правильный путь !!!
ChDir dir
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447006
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, круто все работает, спасибо ребят.
кстати Hugo121 ты прав, нужно было что бы как раз сделать что бы он лист добавлял.
Я вот щас, проверил только что все варианты. Заглянул в код, но не совсем в нем разобрался ))
Где там момент внесения листа, в книгу. Мне надо что бы он не первым заносился, а последним, в конец книги.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447063
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтоб последним - замени код на этот (в другом варианте примерно так же сделать можно):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 Sub DoIt()
Dim ActiveWBK, NewWB As Workbook

Set ActiveWBK = ActiveWorkbook
   
openxlsb = Application.GetOpenFilename("Файл-источник (*.xls), *.xls")

Application.ScreenUpdating = False
Choise =  1 
Set NewWB = Workbooks.Open(openxlsb, ReadOnly:=True)  ' открываем новую книгу
    UserForm1.Show
NewWB.Sheets(Choise).Copy After:=ActiveWBK.Sheets(ActiveWBK.Sheets.Count) ' копируем лист в нашу книгу
NewWB.Close                                 'закрываем новую книгу без сохранения

Application.ScreenUpdating = True

End Sub
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447065
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

Before поменять на after только указать ссылку на последний лист индекс последнего листа .Sheets(ActiveWB.Sheets.Count)
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447089
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus, не совсем так - там Set ActiveWB = ActiveWorkbook.ActiveSheet
тогда сперва поменять на
Set ActiveWB = ActiveWorkbook
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447284
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага спасибо, все работает, добавляет лист в конец книги.

Hugo121
Код: plaintext
1.
2.
Const dir = "C:\test" 'Вставь правильный путь !!!
ChDir dir


Эта идея у тебя Hugo121 удобная оказалась) тоже применил ))
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447341
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

А можно мне как навечку попоросить кого нибудь разобрать код который в водится на форме.
Магический момент, в виде появления на форме элемента ptionbutton. Я разобрал. А вот все остальное не совсем понял, что, для чего и главное как взаимодействует.

Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub Cmd_AddWorkList_Click() 'кнопка
Me.Hide
For i =  1  To ActiveWorkbook.Sheets.Count
If Controls("opt" & i).Value = True Then 
Choise = i
Exit For
End If
Next i
End Sub
 

Private Sub UserForm_Activate() ' форма
For i =  1  To ActiveWorkbook.Sheets.Count
            Set MyOpButt = Frm_AddWorkSheet.Controls.Add("forms.optionbutton.1") ' Добавляет на форму листы, в элемент управления optionbutton.
              With MyOpButt 
                    .Name = "opt" & i
                    .AutoSize = True: .Left =  10 : .Top =  10  + i *  15 : .WordWrap = False
                    .Caption = Sheets(i).Name ' За что отвечает этот .Caption ? 
            End With

Next i
End Sub

...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447357
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
.Caption = Sheets(i).Name ' За что отвечает этот .Caption ? - это пишется название листа.
Я вот пытаюсь цикл организовать - проблема очистить форму от этих контролов, добавляет новые поверх старых, в итоге не работает... Как очистить - не могу пример кода найти, подскажите.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447377
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121 .Caption = Sheets(i).Name ' За что отвечает этот .Caption ? - это пишется название листа.
Я вот пытаюсь цикл организовать - проблема очистить форму от этих контролов, добавляет новые поверх старых, в итоге не работает... Как очистить - не могу пример кода найти, подскажите.
Код: plaintext
1.
2.
For i =  1  To ActiveWorkbook.Sheets.Count
 Me.Controls.Remove ("opt" & i)
Next I
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447393
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати если код переделать вот так
то форму можно не чистить

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub CommandButton1_Click()
For i =  1  To ActiveWorkbook.Sheets.Count
If Controls("opt" & i).Value = True Then
Choise = i
Exit For
End If
Next i
Unload Me
End Sub

бо вывод на форму контролов висит не на инициализации а на активации формы
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447400
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shamanus, спасибо, заработало! Сейчас второй способ попробую.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447414
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, что-то я ходил вокруг Unload, но так и не нащупал...
Спасибо, второй способ тоже работает, сделал цикл на заданное количество листов/файлов.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447433
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот, ТС, если надо несколько файлв открывать, подчистил слегка (оставил только свою версию открытия файлов):
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447442
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Вот, ТС, если надо несколько файлв открывать, подчистил слегка (оставил только свою версию открытия файлов):

Хорошо бы еще на эту форму где появляются выбор листов которые хочешь добавить. Кнопочку отмены. На случай если не тот файл открыл и не эти листы в книгу хочешь добавить.
Вот где проверку писать? Я чето пробовал условие в самом модуле написать. Но чето он даже его не замечает.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 2 из 3
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Из книги Excel добавить лист из другой книги Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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