Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с файлами в Эксель / 25 сообщений из 25, страница 1 из 1
02.07.2011, 11:04
    #37333503
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Нужна помощь!!!
Есть 3 книги одинаковой структуры которые расположены по адресам ("C:\Информация\***\книга_***.xls"), где *** идентификатор для книги, например название филиала (DNI, DON, KIE). Информация в этих книгах расположена на перовм листе. 1-я строка - "шапка" таблицы. Данные содержатся со 2 до n строки ( где n+1 строка - пустая)
Необходимо автоматически "затянуть" информацию из этих книг в консолидированный файл такой же структуры. Информацию из книг необходимо разместить последовательно одна за другой.
Спасибки.
...
Рейтинг: 0 / 0
02.07.2011, 11:05
    #37333506
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVikНужна помощь!!!
Есть 3 книги одинаковой структуры которые расположены по адресам ("C:\Информация\***\книга_***.xls"), где *** идентификатор для книги, например название филиала (DNI, DON, KIE). Информация в этих книгах расположена на перовм листе. 1-я строка - "шапка" таблицы. Данные содержатся со 2 до n строки ( где n+1 строка - пустая)
Необходимо автоматически "затянуть" информацию из этих книг в консолидированный файл такой же структуры. Информацию из книг необходимо разместить последовательно одна за другой.
Спасибки.

Нужно чтоли делать запросы?
...
Рейтинг: 0 / 0
02.07.2011, 11:14
    #37333518
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Может у кого есть похожые исходники?
Так что бы в один файл стягивалось с трех.Причем инфа вставлялась по порядку.
Спасибо
...
Рейтинг: 0 / 0
02.07.2011, 12:22
    #37333587
Bakhodir Radjabov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Visual Basic for Application
...
Рейтинг: 0 / 0
02.07.2011, 12:37
    #37333602
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Bakhodir Radjabov,

Это понятно :)
...
Рейтинг: 0 / 0
02.07.2011, 13:12
    #37333628
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVik,

Здесь и здесь .
...
Рейтинг: 0 / 0
04.07.2011, 17:24
    #37335837
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
The_Prist,

Помогите написать цикл вайл или что-то другое, для того что бы вся инфа заполнялась по очереди: сначала с первого файла в столбик, потом со второго, потом с третего.
While i=1 to n


End While
для первого, но не все работает так как открывается только мои документы, какой бы я путь не ставила

Sub Get_Value_From_Close_Book_Formula()
Dim sPath As String, sFile As String, sShName As String
sPath = "C:\My Documents\2"
sFile = "Книга2.xls"
sShName = "Лист1"
With Range("A2:A7")
.Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A2:A7"
.Value = .Value
End With
End Sub


Как это все добро слепить, подскажите.
...
Рейтинг: 0 / 0
04.07.2011, 18:19
    #37335955
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
The_Prist,

Может кто подскажет...
...
Рейтинг: 0 / 0
04.07.2011, 18:58
    #37336004
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVikМожет кто подскажет... Может, если вопрос будет внятно сформулирован
...
Рейтинг: 0 / 0
04.07.2011, 20:00
    #37336097
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Вы, наверное, опять скажете, что у вас в Excel 2007 не работает, но всё же посмотрите.
Извините, что не посмотрел ваш пример - лень было.
...
Рейтинг: 0 / 0
05.07.2011, 10:55
    #37336771
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Cursky, спасибо большое.
да только действительно соеденеие не работает. ((((
nnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & strFile$ & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
Это для одного файла, для первого, а как для остальных писать? то есть это оно открывает и копирует с одного файла. Потом оно должно открывать и копирывать со второго файла внизу, под тем что скопировалось в первом. и аналогично с третим.
может подскажите, что менять надо?
осталось еще две книги. Как с ними вы справлялись? там в коде ничего нету поповоду копирования с остальных...

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
Option Explicit

Sub ImportData()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim strSQL$, strCnnString$, strFile$, Sheet$, strMask$, strPath As String
    Dim intRngRw%, intRngRw2%, i%

'литс тоже указала свой
    Sheet$ = "Лист1"
    i = Application.WorksheetFunction.CountA(Sheets(Sheet$).Columns( 1 )) +  1 

'здесь путь поменяла
    strPath = "D:\Documents and Settings\Administrator\My Documents\2"
    strMask$ = "Книга2*.xls" ' название первое из книг которое надо скопировать
    strFile$ = Dir(strPath & strMask$)
    Do While strFile$ <> ""
    Debug.Print strFile$
        intRngRw =  1 
        intRngRw2 =  2 
        Do
            Set cnn = New ADODB.Connection
            Set rst = New ADODB.Recordset
            
            strSQL = "SELECT * FROM" & "[" & Sheet & "$A" & intRngRw & ":" & "A" & intRngRw2 & "]" ' у меня только первый столбец, поэтому заменила на А

            strCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & strFile$ & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""   ' не меняла ничего
            'strCnnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & strFile$ &  ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""

            cnn.Open strCnnString
            rst.Open strSQL, cnn, adOpenStatic, adLockReadOnly
         

            If rst.Fields( 0 ) = "" Then Exit Do
            Cells(i,  1 ).CopyFromRecordset rst
            intRngRw = intRngRw +  1 
            intRngRw2 = intRngRw2 +  1 
            i = i +  1 
            rst.Close
            cnn.Close
            Set cnn = Nothing
            Set rst = Nothing
        Loop
        strFile$ = Dir
    Loop
End Sub

...
Рейтинг: 0 / 0
05.07.2011, 11:01
    #37336781
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
...
Рейтинг: 0 / 0
05.07.2011, 12:19
    #37336987
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Cursky,
Помогите пожалуйста, а то что то никак...(((
...
Рейтинг: 0 / 0
05.07.2011, 18:17
    #37337772
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVik,
Как это нет? А Loop?
...
Рейтинг: 0 / 0
05.07.2011, 18:21
    #37337779
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
У меня на 2000 пример Cursky отработал отлично, только в коде путь поменял (на C:\temp\Cursky\)
...
Рейтинг: 0 / 0
05.07.2011, 18:23
    #37337782
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
И вот причина - Вы путь без последнего слэша прописали.
...
Рейтинг: 0 / 0
05.07.2011, 22:53
    #37338093
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Hugo121,

Dim cnn As ADODB.Connection
пишет ошибку: User-defined type not defined
...
Рейтинг: 0 / 0
05.07.2011, 23:29
    #37338166
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Hugo121,

слеш тоже пробывала ставить не помогло
...
Рейтинг: 0 / 0
06.07.2011, 09:33
    #37338518
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVik, эта библиотека есть?
...
Рейтинг: 0 / 0
06.07.2011, 19:23
    #37340062
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Hugo121,

Где поключать? У меня 2003 офис.
Не могу найти на панели.
...
Рейтинг: 0 / 0
06.07.2011, 19:33
    #37340079
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Hugo121,

Подскажите, где это окно подключается?
...
Рейтинг: 0 / 0
06.07.2011, 19:50
    #37340100
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Hugo121,

Спасибо все нашла и библиотеку. Подскажите, что здесь не правильно пишу.

Sub Zapusk()

ImportData_1.Run
ImportData_2.Run
ImportData_3.Run

End Sub
где
ImportData_1 -это мои функции
...
Рейтинг: 0 / 0
06.07.2011, 19:52
    #37340104
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVikHugo121,

Подскажите, где это окно подключается?
Я вам уже показывал, как подключается. Запустите один раз процедуру для подключения.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub AddReferences()
'---------------------------------------------------------------------------------------
' Procedure : AddReferences
' Purpose   : Подключаем ссылку на ADO (Та, что в меню Tools->References)
'---------------------------------------------------------------------------------------
    On Error Resume Next
    'Name:   ADODB
    'Description:   Microsoft ActiveX Data Objects 2.8 Library
    ThisWorkbook.VBProject.References.AddFromFile ("C:\Program Files\Common Files\System\ado\msado15.dll")
    ThisWorkbook.VBProject.References.AddFromGuid GUID:="{2A75196C-D9EB-4129-B803-931327F72D5C}", Major:= 2 , Minor:= 8 
End Sub
...
Рейтинг: 0 / 0
06.07.2011, 20:45
    #37340141
VikVikVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
Cursky,

Cursky,


Все получилось. Простите не буду больше задавать глупых вопросов.
Подскажите как написать макрос, который вызывал по очереди все 3 функции. К примеру одну показываю


Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Sub ImportData_1()
    Dim cnn As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim strSQL$, strCnnString$, strFile$, Sheet$, strMask$, strPath As String
    Dim intRngRw%, intRngRw2%, i%

    Sheet$ = "Ëèñò1"
    i = Application.WorksheetFunction.CountA(Sheets(Sheet$).Columns( 1 )) +  1 

'çäåñü óêàçàí ïóòü
    strPath = "D:\Documents and Settings\Administrator\My Documents\2\"
    strMask$ = "Êíèãà2*.xls" 
    strFile$ = Dir(strPath & strMask$)
    Do While strFile$ <> ""
    Debug.Print strFile$
        intRngRw =  1 
        intRngRw2 =  2 
        Do
            Set cnn = New ADODB.Connection
            Set rst = New ADODB.Recordset
            
            strSQL = "SELECT * FROM" & "[" & Sheet & "$A" & intRngRw & ":" & "A" & intRngRw2 & "]" 
            strCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strPath & strFile$ & ";" & "Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
            'strCnnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & strFile$ &  ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"""

            cnn.Open strCnnString
            rst.Open strSQL, cnn, adOpenStatic, adLockReadOnly
         

            If rst.Fields( 0 ) = "" Then Exit Do
            Cells(i,  1 ).CopyFromRecordset rst
            intRngRw = intRngRw +  1 
            intRngRw2 = intRngRw2 +  1 
            i = i +  1 
            rst.Close
            cnn.Close
            Set cnn = Nothing
            Set rst = Nothing
        Loop
        strFile$ = Dir
    Loop
End Sub




Вот так не работает: (

Sub Fun_1()
ImportData_1.run
ImportData_2.run
ImportData_3.run
End sub
...
Рейтинг: 0 / 0
06.07.2011, 22:58
    #37340276
Cursky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Работа с файлами в Эксель
VikVikVik,
Охохох... вы совсем чайница
Откуда у вас в процедуре ImportData_1 взялся метод run ?
Если вам надо вызвать процедуру, то просто пишете её название без всяких run .
Или то же самое, только более наглядно: Call ImportData_1 .
Код: plaintext
1.
2.
3.
4.
5.
Sub Fun_1()
    ImportData_1
    'или так
    Call ImportData_2
    Call ImportData_3
End Sub
Теперь ещё вопрос: зачем вам 3 одинаковые процедуры? Скорее всего(с вашего позволения я потренирую телепатию) они отличаются только именами файлов, из которых они импортируют данные.
Если так, то оставьте одну процедуру, которая принимает имя файла, как аргумент(он в скобках):
Код: plaintext
Sub ImportData(strFile$)
И в своём макросе вызывайте эту процедуру 3 раза, только с разными аргументами - именами файлов.
Код: plaintext
1.
2.
3.
4.
Sub Fun_1()
    Call ImportData("C:\File1.xls")
    Call ImportData("D:\Мои документы\File2.xls")
    Call ImportData("D:\Работа\File138.xls")
End Sub
Да... и не забывайте переключать раскладку на клавиатуре, перед копированием программного кода, чтобы не было вот таких
крюказябриков 'çäåñü óêàçàí ïóòü
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Работа с файлами в Эксель / 25 сообщений из 25, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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