powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Из книги Excel добавить лист из другой книги Excel
55 сообщений из 55, показаны все 3 страниц
Из книги Excel добавить лист из другой книги Excel
    #36442487
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо из активной книги в которой работаю, сделать так что бы я мог подгрузить один или несколько листов из другой книги. При этом не загружая эту книгу.
Как мне это сделать?
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442507
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое, "подгрузить, но не грузить?"

Получить данные из другой книги? ищите здесь же CreateObject
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442531
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЧто такое, "подгрузить, но не грузить?"

Получить данные из другой книги? ищите здесь же CreateObject

Подгрузить значит, взять лист из книги, и добавить его в активную книгу, в той которой нахожусь.

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

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

Ах да. Все это через VBA по нажатию кнопочки.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442541
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы не открыть эту книгу, скопировать из нее лист и закрыть?
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442556
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА почему бы не открыть эту книгу, скопировать из нее лист и закрыть?

Для меня это тоже было бы проще. Но для того кому пишу программу. Такую процедуру будет проделать довольно сложно. Так ка с экселем не на вы.
Да и объединять в одну книгу листы из разных excel файлов. Довольно муторно. Поэтому решил заморочится и создать что-то модернезированное, что бы быстро и комфортно объединяло в одну книгу только нужную информацию взятую из других книг.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442571
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiНо для того кому пишу программу. Такую процедуру будет проделать довольно сложно.

Ему будет сложно нажать на вашу кнопку, которая сама все откроет, скопирует и закроет?
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442594
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProlopuxiНо для того кому пишу программу. Такую процедуру будет проделать довольно сложно.

Ему будет сложно нажать на вашу кнопку, которая сама все откроет, скопирует и закроет?

Да ты обсолютно прав.

И в прочем что-то подобное я уже делал.
Там была программка по проверке размера файла. И думаю если сделать что-то похожее. Тока не в VB а в VBA Excel. Что бы она не открывала выбранный в ней лист. А давала названия или номера листов. И выбранный лист, подгружался.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442661
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли в Excel это как-то реализовать, так как я, это выложил в файле, в сообщении выше?
Я так понял filelistBox и DirListBox не поддерживается VBA. и это плохо.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442674
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже давал ссылки на API выбора директории и файла http://vbnet.mvps.org/code/comdlg/filedlgsoverview.htm
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442773
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneя уже давал ссылки на API выбора директории и файла http://vbnet.mvps.org/code/comdlg/filedlgsoverview.htm

Да, все нашел, буду пробовать разбираться...
Плохо что я английский в школе не учил :(
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442841
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если имена файлов известны и не меняются, может пригодится:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub tt()
Application.ScreenUpdating =  0 
openxlsa = "C:\Book2.xls"
Set xlsa = Workbooks.Open(Filename:=openxlsa, ReadOnly:=True)
MsgBox xlsa.Sheets( 1 ).Cells( 1 ,  1 ).Value
xlsa.Close
Application.ScreenUpdating =  1 
End Sub
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36442874
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или так, вообще незаметно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub ttt()
   Set objExcel = New Excel.Application
   Set wbhidden = objExcel.Workbooks.Open("c:\Macros\Primeri\Excel\check.xls")
   
     Cells( 1 ,  10 ).Value = wbhidden.Sheets( 1 ).Cells( 1 ,  1 )
     
     wbhidden.Close ' обязательно при выходе из кода
   Set objExcel = Nothing  ' обязательно при выходе из кода
End Sub
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36443715
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

я так понял топикстартеру ещё и поиск открытие файла надо
т.е.
Код: plaintext
Application.FileDialog(msoFileDialogOpen)
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36443761
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автордля того кому пишу программу. Такую процедуру будет проделать довольно сложно. Так ка с экселем не на вы.
- и как он будет искать и выбирать, если просто открыть нужный файл не может...
Ну конечно это дело автора, если имена файлов непостоянны, то придётся
Код: plaintext
1.
2.
openxlsb = Application _
                .GetOpenFilename("Файл-источник (*.xls), *.xls")
Set xlsb = Workbooks.Open(Filename:=openxlsb, ReadOnly:=True)
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36443944
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, Application.FileDialog(msoFileDialogOpen) у меня на 2000 Экселе не заработало (Run-time error '438': Object doesn't support this property or method
), говорят надо подключить ещё это:
Library Office
...\Program Files\Common Files\Microsoft Shared\OFFICE11\MSO.DLL
Microsoft Office 11.0 Object Library
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36443960
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

угу надо
зато избавляет от труда самописных диалоговых окон (я как то раз пытался победить), очень легко настраивается фильтры.
Да и тип окна в формат системы. У меня на win7 это очень симпотишненько.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36444009
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если кому надо пример кода

Код: 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.
Private Sub CommandButton4_Click()

Dim fd As FileDialog
Dim vrtSelectedItem As Variant

'Filters.Add(, "MBD",1)
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
.Filters.Clear
.Filters.Add "Только Базы данных", "*.MDB"
.FilterIndex =  0 
.AllowMultiSelect = False

.ButtonName = "Выбрать"
'Нажата кнопка "Выбрать"
If .Show = - 1  Then
For Each vrtSelectedItem In .SelectedItems
'запись пути
 paTH = vrtSelectedItem
 Next vrtSelectedItem
'Нажата кнопка Cancel.
Else
 Exit Sub
End If
End With

Set fd = Nothing

TextBox1.Value = paTH

End Sub

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


У в твоем коде на слове paTH выдает ошибку. Мол перменая не определена.
Как ты ее определял?
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36444845
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверить не могу, но имхо раз
Код: plaintext
1.
Dim vrtSelectedItem As Variant
paTH = vrtSelectedItem
то
Код: plaintext
Dim paTH As Variant
А вообще, если без мультивыбора, это всё повыкидывать и написать просто
Код: plaintext
TextBox1.Value = fd.SelectedItem
имхо...
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36444867
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: lopuxi
> У в твоем коде на слове paTH выдает ошибку. Мол перменая не определена.
> Как ты ее определял?

Воспользуйся силой, Люк! (с) Мастер Йода
Object Browser(F2)Property SelectedItems As FileDialogSelectedItems
read-only
Member of Office.FileDialog
Object Browser(F2)Function Item(Index As Long) As String
Default member of Office.FileDialogSelectedItems



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36444935
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри
это моя глобальная переменная из кода, я потом из этих mdb инфу подгружал

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

Private Sub CommandButton4_Click()

Dim fd As FileDialog
Dim vrtSelectedItem, paTH As Variant

'Filters.Add(, "MBD",1)
Set fd = Application.FileDialog(msoFileDialogOpen)
With fd
.Filters.Clear
.Filters.Add "Только Базы данных", "*.MDB"
.FilterIndex = 0
.AllowMultiSelect = False

.ButtonName = "Выбрать"
'Нажата кнопка "Выбрать"
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
'запись пути
paTH = vrtSelectedItem
Next vrtSelectedItem
'Нажата кнопка Cancel.
Else
Exit Sub
End If
End With

Set fd = Nothing

TextBox1.Value = paTH

End Sub



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

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

Function GetFilePath() As String


Dim fd As FileDialog
Dim vrtSelectedItem As Variant


Set fd = Application.FileDialog(msoFileDialogOpen)

With fd
.Filters.Clear
.Filters.Add "Только Базы данных", "*.MDB"
.FilterIndex = 0
.AllowMultiSelect = False
.ButtonName = "Выбрать"
End With

If fd.Show = -1 Then
GetFilePath = fd.SelectedItems.Item(1)
Else
Exit Function
End If

Set fd = Nothing

End Function


' КОД В МОДУЛЕ
Sub doit()
Dim MyPath As String
MyPath = GetFilePath
End Sub
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36445025
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может неоптимально, но я раз делал примерно так:
Arr = Split(paTH, "\")
itog = Arr(Ubound(Arr))
Вот не помню, что там с "\" в конце, было, небыло... нужно/ненужно, но его можно и добавить или отрезать через Len(itog)...
...
Рейтинг: 0 / 0
Из книги 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
Из книги Excel добавить лист из другой книги Excel
    #36447466
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поизучай - я там ещё переменную Y As boolean добавил.
Ещё надо бы при отмене выбора файла корректно выйти, пока коряво.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447531
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

Ну вот твой пример. Все тоже. Только уже ошибки нет.
Есть проблема в повторном открывании окна выбора файла.. Думаю его тож надо убрать...
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447597
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел - ошибка легко убралась.
А повторное открытие я бы не стал убирать - если уже 3 листа скопировали, и на последнем файле лоханулись - что, теперь всё переделывать?
Но если надо убрать, я бы ещё одну Public Boolean ввёл - для первого открытия она False, при отмене на форме переводил в True. Проверять перед открытием файла.
Но наверное есть и другие варианты.
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447603
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Типа так:
...
Рейтинг: 0 / 0
Из книги Excel добавить лист из другой книги Excel
    #36447706
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121Типа так:

Ага оно самое. Я сделал тоже самое, только через Y не добавлял еще один Public. У тебя вариант по короче и смотрится по лучше :))

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


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