Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2012, 11:11   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Перенос данных из закрытой книги по условию

Добрый день, уважаемые формучане!
Дело в принципе простое, даже макрорекодером записывал макрос, но с открытием книги. Начал переделывать и запутался. А задача такая. Есть книга Акции и книга Откуда (во вложении). Собственно надо из, желательно закрытой (но не догма), книги Откуда, проверив столбец В, найти в ячейке слово Акции, вытащить значение из столбца I этой же строки и вставить в следующую свободную ячейку столбца В книги Акции.
Понимаю, что мешает какая-то мелочь, но что именно - не вижу:

For j = 12 To 55
If Cells(j, 2) = "Акции" Then Cells(iLastRow + 1, 2) = Cells(i, 9)

P.S. Заранее спасибо! И, похоже, пора в отпуск.
Вложения
Тип файла: rar акции.rar (12.9 Кб, 16 просмотров)
Тип файла: rar откуда.rar (8.0 Кб, 13 просмотров)
strannick вне форума Ответить с цитированием
Старый 18.07.2012, 12:09   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
Public Function ADO_R_Dmitry(ByVal strSql$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean)
'==============================================================================
'*Описание функции : Возвращает набор записей Recordset с первой ячейки адреса,
'* указанного диапазона.
'*strSql - Конструкция SQL  запроса.
'* FilePath - Полный путь к файлу включая имя и расширение.
'* OutputRange - адрес ячеки с которой начинается вывод данных.
'* FieldsName - используются или нет заголовки столбцов (True - False)
'* OutputFieldsName - вывод данных с заголовками или без (True - False), _
'* если FieldsName=False, заголовки не выводятся.
'==============================================================================
'* Автор R Dmitry (Дмитрий Русак dg_rusak@mail.ru skype: RDG_Dmitry)          |
'* WM:_R269866874234 U144446690328                                            |
'==============================================================================
Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
If FieldsName Then FieldName = "Yes" Else FieldName = "No"
Select Case CLng(Split(Application.Version, ".")(0))
    Case Is < 12
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is >= 12
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select

cn.Open sCon
If Not cn.State = 1 Then Exit Function
Set rs = cn.Execute(strSql)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i = 0 To rs.Fields.Count - 1
    OutputRange.Offset(0, i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset(1, 0)
 End If
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function



Sub Go_Акция()
 M_name$ = "TDSheet$A1:I100"

 Sql_S = "SELECT F9 FROM [" & M_name$ & "]  WHERE F2 Like 'Акции'"

ADO_R_Dmitry Sql_S, "C:\Documents and Settings\Сергей\Рабочий стол\ППП\откуда.xlsx", Лист1.Cells(1, 1), False, False

End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 18.07.2012, 12:23   #3
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Ого!!!!!! Ну, это вааще........ Для извлечения данных из закрытой книги пользовался вот этим кодом:

Sub Get_Value_From_Close_Book_Excel4Mac ro()
Dim sPath As String, sFile As String, sShName As String
Dim sAddress As String, vData
sPath = "C:\Documents and Settings\"
sFile = "Книга1.xls"
sShName = "Лист1"

sAddress = "'" & sPath & "[" & sFile & "]" & sShName & "'!" & Range("A1").Address(ReferenceStyle: =xlR1C1)
vData = ExecuteExcel4Macro(sAddress)
End Sub

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

Последний раз редактировалось strannick; 18.07.2012 в 12:28.
strannick вне форума Ответить с цитированием
Старый 18.07.2012, 14:31   #4
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

смотрите пример:
взят:
http://programmersforum.ru/showthread.php?t=89472
Вложения
Тип файла: rar Поиск значение и копирование во 2 книгу.rar (26.7 Кб, 63 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 18.07.2012, 16:07   #5
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Все нормально, работает. Спасибо огромное!

Последний раз редактировалось strannick; 18.07.2012 в 16:46. Причина: Проблема снята
strannick вне форума Ответить с цитированием
Старый 18.07.2012, 17:31   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Думаю, можно было макросом записать в ячейку ВПР()/VLOOKUP(), затем заменить на полученное значение (файлы не смотрел, сужу по описанию задачи).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 18.07.2012, 17:51   #7
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Думаю, можно было макросом записать в ячейку ВПР()/VLOOKUP(), затем заменить на полученное значение (файлы не смотрел, сужу по описанию задачи).
А как быть если есть повторяющиеся значени? Можно как-то ВПР заставить следующее одинаковое значение найти?
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 18.07.2012, 18:16   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Про повторяющиеся речь не шла
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 19.07.2012, 08:49   #9
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
Радость

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Про повторяющиеся речь не шла
Вы правы
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 19.07.2012, 12:14   #10
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Можно было бы и ВПР, а при повторяющемся ВПР2, но его там нет, только одно. Так что спасибо, использовал макрос, предложенный doober. Столкнулся с такой небольшой проблемкой. Этот макрос запускается в общем пакете с другими после проверки текущего дня недели. Так вот, почему-то, в общем пакете на 2007-м срабатывает, а на 2010-м не срабатывает. А при самостоятельном запуске и на 20010-м срабатывает. Что это может быть?
strannick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт данных с закрытой книги в Excel Mint86 Microsoft Office Excel 6 12.06.2012 10:56
копирование данных из закрытой книги в открытую mars56 Microsoft Office Excel 5 17.02.2010 11:29
СУММЕСЛИ из закрытой книги Sha Microsoft Office Excel 1 16.12.2009 17:09
Экспорт данных из закрытой книги как это организовать? Дмитрий Фукс Microsoft Office Excel 11 06.04.2009 23:42
Получение пользовательской функцией данных с закрытой книги KozakMamaj Microsoft Office Excel 18 22.10.2008 06:55