Приветствую участников Форума! Вопрос к макросоведам. На одном из Excelевских сайтов (Excel - это не сложно) подсмотрел следующий код: [vba]
Код
Sub Get_Value_From_Close_Book_Formula() Dim sPath As String, sFile As String, sShName As String sPath = "C:\Documents and Settings\" sFile = "Книга1.xls" sShName = "Лист1" With Range("A1:A100") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1:A100" .Value = .Value End With End Sub
[/vba] Копируется диапазон данных из закрытой книги. Путь к закрытому файлу прописан в коде. Все здорово работает, спасибо авторам. В то же время мне необходимо немого переделать под себя: 1. Данный вставляются в тоже самое место, где они и располагались в исходном файле, а мне надо, ну предположим, в C2:С101; 2. Мне нужно, чтобы после запуска кода вылетало окошко с запросом, из какого файла вставить данные. Все файлы "исходники" в одной папке, структура данных везде одинакова. Заранее благодарен.
Приветствую участников Форума! Вопрос к макросоведам. На одном из Excelевских сайтов (Excel - это не сложно) подсмотрел следующий код: [vba]
Код
Sub Get_Value_From_Close_Book_Formula() Dim sPath As String, sFile As String, sShName As String sPath = "C:\Documents and Settings\" sFile = "Книга1.xls" sShName = "Лист1" With Range("A1:A100") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1:A100" .Value = .Value End With End Sub
[/vba] Копируется диапазон данных из закрытой книги. Путь к закрытому файлу прописан в коде. Все здорово работает, спасибо авторам. В то же время мне необходимо немого переделать под себя: 1. Данный вставляются в тоже самое место, где они и располагались в исходном файле, а мне надо, ну предположим, в C2:С101; 2. Мне нужно, чтобы после запуска кода вылетало окошко с запросом, из какого файла вставить данные. Все файлы "исходники" в одной папке, структура данных везде одинакова. Заранее благодарен.Мур
Hugo!, Замечательно работает, Огромное спасибо! Я вооще не понимаю как это работает, просто копирую коды и все. А результат налицо. Еще раз спасибо.
Hugo!, Замечательно работает, Огромное спасибо! Я вооще не понимаю как это работает, просто копирую коды и все. А результат налицо. Еще раз спасибо.Мур
With Range("C2:C101") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1:A100" .Value = .Value End With
[/vba] По-моему, все же так не должно правильно работать, когда диапазоны смещены по строкам. Т.е. значения записываются, но в С2, например, попадает значение из А2, а не из А1. Или это только у меня так?
[/vba] А с этим да, упс. Кстати, посмотрите в атрибутах файла: "авторы John Walkenbach" - так что все вопросы к нему
[vba]
Код
With Range("C2:C101") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1:A100" .Value = .Value End With
[/vba] По-моему, все же так не должно правильно работать, когда диапазоны смещены по строкам. Т.е. значения записываются, но в С2, например, попадает значение из А2, а не из А1. Или это только у меня так?
Не, ну это явная ошибка - раз в параметрах есть sPath, то и использоваться он должен! [vba]
Код
Sub GetValue(sPath As String, sFile As String) With Cells(2, 3) .Formula = "=GetExtData('" & sPath & "[" & sFile & "]Лист1'!A1:A100)" .Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr End With: arr = Empty End Sub
[/vba]
Не, ну это явная ошибка - раз в параметрах есть sPath, то и использоваться он должен! [vba]
Код
Sub GetValue(sPath As String, sFile As String) With Cells(2, 3) .Formula = "=GetExtData('" & sPath & "[" & sFile & "]Лист1'!A1:A100)" .Resize(UBound(arr, 1), UBound(arr, 2)).Value = arr End With: arr = Empty End Sub
Чтобы снять подозрения с Джона... Это давнишний файлик из его примеров. Я там уже сто раз все переписывал, так что от Уокенбаха ничего не осталось Да, sPath пропустил.
Ну а вот это [vba]
Код
With Range("C2:C101") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1:A100" .Value = .Value End With
[/vba] все-таки не должно правильно работать. Ага?
ЦитатаHugo
Не, ну это явная ошибка...
Чтобы снять подозрения с Джона... Это давнишний файлик из его примеров. Я там уже сто раз все переписывал, так что от Уокенбаха ничего не осталось Да, sPath пропустил.
Ну а вот это [vba]
Код
With Range("C2:C101") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1:A100" .Value = .Value End With
[/vba] все-таки не должно правильно работать. Ага?nilem
Доброго времени суток. В продолжении темы...вопрос. Какие изменения необходимо внести в код в сообщении №8, чтобы его можно было запускать с другого листа? У меня он работает корректно только, если его запускать с листа, куда вставляются данные. И еще вопросик, можно сделать так, что бы при выборе файла можно было заглянуть а архив rar? Вопрос адресован к автору Hugo, но если кто другой ответит я не обижусь .
Доброго времени суток. В продолжении темы...вопрос. Какие изменения необходимо внести в код в сообщении №8, чтобы его можно было запускать с другого листа? У меня он работает корректно только, если его запускать с листа, куда вставляются данные. И еще вопросик, можно сделать так, что бы при выборе файла можно было заглянуть а архив rar? Вопрос адресован к автору Hugo, но если кто другой ответит я не обижусь .Мур
Доброго времени суток уважаемые форумчане! Дабы не создавать новую тему - спрошу сдесь - т.к. вопрос совпадает по содержимому. Есть книга Пример с таблицей из которой нужно получить данные в диапазоне А1:AL в другую открытую книгу начиная с ячейки Н6 и втавил все скопированне данные. Но файл с данными получаеться с заранее не известным количеством строк - столбцы таблицы остаються неизменными. Возможно ли как то модифицировать данный макрос для выполнения данной задачи? Заранее спасибо за ответ!
Доброго времени суток уважаемые форумчане! Дабы не создавать новую тему - спрошу сдесь - т.к. вопрос совпадает по содержимому. Есть книга Пример с таблицей из которой нужно получить данные в диапазоне А1:AL в другую открытую книгу начиная с ячейки Н6 и втавил все скопированне данные. Но файл с данными получаеться с заранее не известным количеством строк - столбцы таблицы остаються неизменными. Возможно ли как то модифицировать данный макрос для выполнения данной задачи? Заранее спасибо за ответ!Ed_Vard