Здравствуйте уважаемые форумчане!Помогите пожалуйста создать макрос по переносу данных из закрытой книги в текущей папке.Есть файл исходник(книга1) и закрытый файл база(SC33.xlsx)надо сделать так что бы данные из базы копировались в определенные столбцы файла исходника начиная со второй строки базы.Какие столбцы копировать указано в файле книга1.
Копирование данных из закрытой книги
21.03.2012 09:49:50
|
|
|
|
21.03.2012 09:57:38
открываете закрытый файл и копируете, потом закрываете
1000раз было
Живи и дай жить..
|
|
|
|
21.03.2012 10:08:05
хорошо.если это нереально,возможно ли это сделать макросом который открывал бы книгу копировал,данные а потом закрывал бы ее?
|
|
|
|
21.03.2012 10:11:49
Пара цитат:
============================================================ В VBA не существует метода получения значения из закрытого файла рабочей книги. Однако вы можете воспользоваться возможностью управления ссылками на файлы, которая предоставляется в Excel. В настоящем разделе описана функция VBA (GetValue, показанная ниже), которая получает значение из закрытой книги. Эта задача выполняется в результате вызова макроса XLM. Код 1 Private Function GetValue(path, file, sheet, ref) Dim arg As String If Right(path, 1) <> "\" Then path = path & "\" If Dir(path & file) = "" Then GetValue = "Файл не найден" Exit Function End If arg = "'" & path & "[" & file & "]" & sheet & "'!" & _ Range(ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function Функция GetValue имеет четыре аргумента: ¦ path – путь к закрытому файлу (например, "d:\files"); ¦ file – название рабочей книги (например, "budget.xls"); ¦ sheet – название рабочего листа (например, "Лист1"); ¦ ref – ссылка на ячейку (например, "C4"). Следующая процедура демонстрирует, как используется функция GetValue. В этой процедуре отображается значение ячейки А1 листа Лист1 файла 99Budget.xls (папка XLFiles\Budget на диске c:. Код 1 Sub TestGetValue() p = "c:\XLFiles\Budget" f = "99Budget.xls" s = "Лист1" a = "A1" MsgBox GetValue(p, f, s, a) End Sub Ниже приведен еще один пример. Эта процедура считывает 1200 значений (100 строк и 12 столбцов) из закрытого файла и помещает эти значения на активный рабочий лист. Код 1 Sub TestGetValue2() p = "c:\XLFiles\Budget" f = "99Budget.xls" s = "Sheet1" Application.ScreenUpdating = False For r = 1 To 100 For c = 1 To 12 a = Cells(r, c).Address Cells(r, c) = GetValue(p, f, s, a) Next c Next r Application.ScreenUpdating = True End Sub ============================================================ Вот так можно получить значения из закрытой книги: Dim sFilePath As String, sFileName As String, sSh As String Dim sStr As String sFilePath = "C:\Temp\" sFileName = "Книга1.xls" sSh = "Лист1" With Range("A1:A100") .Formula = "='" & sFilePath & "[" & sFileName & "]" & sSh & "'!" & "A1" .Value = .Value End With 'Вот еще один способ: sStr = "'" & sFilePath & "[" & sFileName & "]" & sSh & "'!" & Range("A1").Address(ReferenceStyle:=xlR1C1) Range("A1") = ExecuteExcel4Macro(sStr) _______________________ |
|
|
|
21.03.2012 10:27:38
sAddress = range("a2",cells(rows.count,1).end(xlup))
Живи и дай жить..
|
|
|
|
21.03.2012 10:31:48
ошибка type mismatch
|
|
|
|
21.03.2012 11:04:28
Вариант
|
|||
|
|
21.03.2012 11:10:38
R Dmitry Даже не представляете как выручили!Респектище огромный!!!Прям то что надо!
|
|
|
|
21.03.2012 11:14:38
Сори!еще один вопрос!а где в вашем коде поменять формат что бы я копировал с dbf?
|
|
|
|
21.03.2012 11:17:56
Для DBF нужен другой код. Почему сразу не указали что нужен импорт из DBF ???
Пишите в почту все хотелки , вечером подправлю, желательно и dbf сбросьте.
|
|||
|
|
21.03.2012 11:49:38
R Dmitry dbf у меня большого формата 8м,а в excel не редактируется,по этому решил сбросить в xls,просто я в других кодах менял формат xls на dbf и все получалось.сбросил и на всякий случай код перекодировки из Windows-1251 в DOS-866 для работы в Excel если будут иероглифы.
|
||||
|
|
|||
Читают тему