powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Из другой книги найти и скопировать данные.
14 сообщений из 14, страница 1 из 1
Из другой книги найти и скопировать данные.
    #38996213
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый вечер.
Мне нужно понять как это написать, так как я ни когда ранее не сталкивался с написанием макроса, который бы брал данные из других книг.

Предположим есть моя основная книга, где я запускаю макрос, который должен будет найти и взять из другой книги значения и вставить их в табличку моей основной книги.
Я прикрепляю основную книгу. Я на странице 2 в основной книге поставил число которое хочу найти и забрать - оно в ячейке "B2".

Мне нужно понять, как осуществить доступ к другой книге, как скопировать данные?
При том хотелось бы сделать так, что книга из которой я беру данные, можно было бы не открывать. Но если она открыта, это не влияло бы на работу макроса.

Я тут начал писать и завис.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit
Dim FilesToOpen

Private Sub CommandButton1_Click()

' Application.GetOpenFilename - открывает окно выбора пути к файлу
FilesToOpen = Application.GetOpenFilename _
 (FileFilter:="Книга Excel (*.xlsx), *.xlsx", _
 MultiSelect:=True, Title:="Text Files to Open")
  
If TypeName(FilesToOpen) = "Boolean" Then

    MsgBox "No Files were selected", 64: Exit Sub

End If

End Sub
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996225
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
Dim wb As Workbook
Set wb = Workbooks.Open(....)
a = wb.Worksheets(....).Cells(....)
wb.Close



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

Тогда вопрос остался, как получить имя выбранной мной книги(из которой хочу брать данные), в коде?
Я выбрал через GetOpenFilename книгу, она запустилась

Что бы использовать его:
Код: vbnet
1.
Set wb = Workbooks.Open( название книге )
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996254
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiжаль что с закрытой книги нельзя брать данные.Как ты хочешь взять данные из файла, не открыв сам файл???
Если же ты хочешь сказать "не открыв в экселе", то есть еще пара способов, но они специфичны, не уверен, что тебе стоит с ними возиться при твоем уровне.
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996255
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiТогда вопрос остался, как получить имя выбранной мной книгитак GetOpenFilename, ты же сам написал пример
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996267
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Написать то я написал, порывшись в интернете, а разобраться, не выходит.

lopuxiТогда вопрос остался, как получить имя выбранной мной книгитак GetOpenFilename, ты же сам написал пример

GetOpenFilename - это не имя файла, которое я выбрал) и с ним соответственно у меня ничего не работает.
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996282
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiGetOpenFilename - это не имя файла, которое я выбрал)да? а что, по твоему, делает эта строка в твоем коде?
Код: vbnet
1.
2.
3.
FilesToOpen = Application.GetOpenFilename _
 (FileFilter:="Книга Excel (*.xlsx), *.xlsx", _
 MultiSelect:=True, Title:="Text Files to Open")
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996294
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

GetOpenFilename открывает окно с файлами.
Далее навшиваю разные фильтры по открытию и отображению файлов.

А вот дальше что делать я правда не знаю ) я уже перекопал много сайтов, с примерами, но я так и не смог понять, где и как все эти люди получают имя файла, которое открыли через GetOpenFilename.
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996301
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты издеваешься?
вбил в яндекс Application.GetOpenFilename
открыл верхнюю ссылку https://support.microsoft.com/en-us/kb/161930
вот тебе примеры
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996364
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiА вот дальше что делать я правда не знаюЕще ссылка: Диалоговое окно выбора файлов/папки
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996366
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот пример про выбор данных из "закрытой" книги: Как получить данные из закрытой книги?
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996701
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Я не издеваюсь. У меня серьезно заданная переменная FilesToOpen, не содержит в себе имени файла...
За ссылки спасибо! Я делал все как там написано, но результат тот же, что был вчера.

Выдает ошибку run-time error 13 type mismatch - "отсутствие входных данных".
Я по разному пробовал, все по примеру представленному тут: http://www.excel-vba.ru/chto-umeet-excel/dialogovoe-okno-vybora-fajlovpapki/

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Option Explicit
Dim FilesToOpen

Private Sub CommandButton1_Click()

' Application.GetOpenFilename - открывает окно выбора пути к файлу
FilesToOpen = Application.GetOpenFilename _
        (FileFilter:="Книга Excel (*.xlsx), *.xlsx", MultiSelect:=True, Title:="Выбрать текстовые или Excel файлы")
 
    If VarType(FilesToOpen) = vbBoolean Then
        'была нажата кнопка отмены - выход из процедуры
        Exit Sub
    End If
        'Workbooks.Open FilesToOpen
        'MsgBox "Выбран файл: '" & FilesToOpen & "'", vbInformation, "www.excel-vba.ru"
        MsgBox FilesToOpen
        'MsgBox "No Files were selected", 64: Exit Sub
End Sub
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996715
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi,

Я не знаю как, не знаю что за магия произошла.
Но я поменял разрешения файлов в FileFilter с *xlsx на *xls* - открывать все типы расширений эксель и все заработало!
Книга открывается.
Код: vbnet
1.
2.
3.
4.
 
' Application.GetOpenFilename - открывает окно выбора пути к файлу
FilesToOpen = Application.GetOpenFilename _
        (FileFilter:="Книга Excel (*.xls*), *.xls*", MultiSelect:=False, Title:="Выбрать текстовые или Excel файлы") 
...
Рейтинг: 0 / 0
Из другой книги найти и скопировать данные.
    #38996719
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiЯ не знаю как, не знаю что за магия произошла.зато я знаю
сравни
lopuxi
Код: vbnet
1.
MultiSelect:=True

lopuxi
Код: vbnet
1.
MultiSelect:=False

и найди десять отличий


lopuxi
Код: vbnet
1.
 MsgBox FilesToOpen

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


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