powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как обычно: перетаскивнаие ячеек
25 сообщений из 69, страница 1 из 3
Как обычно: перетаскивнаие ячеек
    #34763004
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброе время суток!

Перед освещением проблему хочу сказать, что перерыл форум и не нашел того что мне надо, хотя был уверен на 100 %, что этот вопрос уже поднимался. Приступим.

Есть один файл (далее База) в который необходимо подтягивать данные с разных ячеек разбросанных по листу и + с разными форматами данных, и все это с разных файлов (далее Файлы). Эти данные надо складывать в Базу в виде простой таблицы. Такс это первое.
Второе то, что эти все Файлы лежат на сети в постоянных определенных каталогах, но в разных.

Так как я понимаю алгоритм должен быть следующим - загрузив Базу, нажимаем на кнопку "Подтянуть". Под этой кнопкой прописаны следующая процедура: База поочередно обращается в каждый указаный на сетевом ресурсе каталог и видя екселевский файл проверяет его на состояние был ли он ранее затянут в Базу или нет. Если нет, то файл затягивается, по указаному скрипту. Если же да, то скрипт первого уровня файла База переходит с проверкой на следующий файл, который находится в каталоге, а если в каталоге больше нет Файлов, то в следующий каталог.
И еще одна ситуация, если скрипт увидел, что Файл не был ранее затянут в файл База, но данные повторяются (т.е. есть и обратная проверка на лету, на повторяемость данных), то необходимо выдать об этом уведомление и продолжить затягивание в файл База. После того как скрипт закончится выделить красным цветом потвторяющиеся данные. Конечно, на сколько хватает моих познаний, это лучше сделать под другой кнопкой, напр., "Проверить". Которая и будет производить проверку Базы на повторяемость.

Итак, если кто-то понял че я написал и может чем-то помочь, то буду очень признателен. Посколкьу я даже не пойму с какого боку подойти - нету творческого настроя после отпуска :(

Всем заранее ПАСИБА!!!!!
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34763137
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХелпяВсем доброе время суток!
Перед освещением проблему хочу сказать, что перерыл форум и не нашел того что мне надо, хотя был уверен на 100 %, что этот вопрос уже поднимался. Приступим.


А ты думал слово в слово найти то что тебе нужно?
Не обижайся, но твы прав всё это уже обсуждалось, только придётся искать по отдельности, например:
- пербор файлов Эксель в каталоге
- проверка повторов

Вопросы наврное тоже разбить на части, например:
- как запоминать, что файл уже был добавлен в базу?
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34763561
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deggasad
Не обижайся, но твы прав всё это уже обсуждалось, только придётся искать по отдельности,
Вопросы наврное тоже разбить на части, например:
- как запоминать, что файл уже был добавлен в базу?

я не обижаюсь...и кстати Deggasad большое Человеческое спс тебе за всю ранее предоставленную мне помощь!!!!

Самое сложное скорее всего будет это как прописать проверку загонялся ли файл в Базу и пербор файлов Эксель в каталоге.
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34763833
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хелпя Deggasad
Не обижайся, но твы прав всё это уже обсуждалось, только придётся искать по отдельности,
Вопросы наврное тоже разбить на части, например:
- как запоминать, что файл уже был добавлен в базу?

я не обижаюсь...и кстати Deggasad большое Человеческое спс тебе за всю ранее предоставленную мне помощь!!!!

Самое сложное скорее всего будет это как прописать проверку загонялся ли файл в Базу и пербор файлов Эксель в каталоге.

Ну беребор файлов в каталоге так (это для файлов с рашширением XLS)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub Выбрать()

Dim MyPath As String, iFileName As String 
 
MyPath = "Здесь путь твой\"
 
iFileName = Dir(MyPath)

 Do While iFileName <> ""
      If UCase(Right(iFileName,  3 )) = "XLS" Then
         msgbox iFileName
      End If
  iFileName = Dir
 Loop


End Sub

А проверку думаю как раз наоборот несложно, варианты
1) добавлять имена файлов, которые добавлены где нибуть в сводную и потом проверять имя на присутствие в этом списке
2) добавлять в исходные книги, где-нибуть в одном и том же месте какое-либо слово, например "Добавлена" и потом каждую книгу проверять на этот признак
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34763882
Pavel55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю тут сразу можно указать расширение файла в

Код: plaintext
iFileName = Dir(MyPath & ".xls")

чтобы не делать потом

Код: plaintext
If UCase(Right(iFileName,  3 )) = "XLS" Then
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34764166
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мда… нашел много разных тем по поводу копирования ячеек с одного файла в другой, но че-то ни как не въеду, как и кто за что отвечает….можете привести пример с коротким описанием что кто делает в скрипте. Именно копирование 5 ячеек с одного файл в другой, с указанного пути….
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34765804
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
люди!!!! наверное покажите скрипт, который копирует определенные ячейки с файла, который выделишь и все это надо делать по нажатию кнопки.............а то я все просмотрел и у мня что-то не получается...пасибо.....
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34765824
Фотография Rampage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хелпялюди!!!! наверное покажите скрипт, который копирует определенные ячейки с файла, который выделишь и все это надо делать по нажатию кнопки.............а то я все просмотрел и у мня что-то не получается...пасибо.....
чет нифига не понял в этой фразе... наверно покажи файлы, и что куда копировать ..
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34765866
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
та файл тут не причем, если честно он просто еще не готов....мне нужно что бы с файла 1.xls, 2.xls и 3.xls (то есть который я укажу) с ячеек А2, В5 и К6 копирывались по порядку данные в файл 4.xls. И все это должно быть по нажатию кнопки.
Так вот понятней?
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34766003
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот фал с которого надо копирывать данные. А именно с ячеек которые обведены линиями. И таких файлов может быть несколько.....а все копирывать надо в один какой то совсем другйо файл
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34766116
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не перечитал все сцылки и что-то у мня не выходит копирование
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34772816
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Deggasad мож у вас есть аська или мыло, что подастовать и там же.... что-то у меня не получается со всем.....
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34772931
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хелпя2 Deggasad мож у вас есть аська или мыло, что подастовать и там же.... что-то у меня не получается со всем.....

Я свой e-mail не скрывал, он в профиле...
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34772988
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хелпявот фал с которого надо копирывать данные. А именно с ячеек которые обведены линиями. И таких файлов может быть несколько.....а все копирывать надо в один какой то совсем другйо файл

Посмотрел я твой файл и что?
Основной то вопрос в том, как будет выглядеть сводная информация, какова будет её структура?
Ну и ещё важно как будут выбираться ячейки из исходных листов: либо будут выбиратся все обведённые как сейчас по-очереди(по формату т.е.); либо будут указаны все ячейки жёстко (что более правильно, если шаблон жёсткий)
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34774098
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ситуация следующая.
Есть несколько файлов одинаковой структуры, данный файл был мною выложен (algorutm.xls). Надо что бы с этих файлов копирывались данные в файл База.xls. Ячейки будут указаны жестоко, т.е. один раз прописать их в скрипте и не менять. Все файлы, которые будут заливаться в Базу будут иметь одинаковую структуру. А потом уже начинается, что бы копирывание проходило из всех екселевских файлов (даже возможно что все они будут иметь какие-то одинаквые символы в начале имени) со всех указаных в скрипте каталогов. Возможно ж такое?? У меня что-то не cовсем получается совместить все прочтенные мною форумы в один скрипт.

Т.е. на сколько я понимаю должен быть вот такой алгоритм:

1. После нажатия на кнопку скрипт побежал по адресу в каталоги
2. В каталогах он смотрит есть ли екселевские файлы
3. Если файлы есть, то происходит копирывание указаных ячеек в Базу.
4. Если же файлов в каталоге нет, то скрипт бежит дальше по каталогам и ищет екселивские файлы.
5. Если нигде нет файлов то выдается типа, сообщения типа "файлов нет".

Вот такая ерундень....
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776254
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты определись тебе в каталогах или в каталогах с подкаталогами
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776379
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шматри, набрасал

Код: 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.
'Выбрать файлы XLS в каталоге и подкаталогах
Sub Запуск()
Dim fso As New FileSystemObject

' Запускаешь процедуру перебора книг в каталоге и подкаталогах с указанием пути
' в примере для 3-х каталогов, можно добавить строк скольеко нужно и изменить путь
 ВыбратьКаталогПодкаталогиFSO fso.GetFolder("Y:\!")
 ВыбратьКаталогПодкаталогиFSO fso.GetFolder("\\Ukdc\Common\СФД\Общая\!sad")
 ВыбратьКаталогПодкаталогиFSO fso.GetFolder("Y:\sad")
End Sub

'FileSystemObject - БИБЛИОТЕКА  Microsoft Scripting Runtime
Sub ВыбратьКаталогПодкаталогиFSO(Папка As Folder)
Dim fso As New FileSystemObject, fold As Folder, iFile As File

 For Each fold In Папка.SubFolders
   ВыбратьКаталогПодкаталогиFSO fold        'лезем в рекурсию
 Next
  
 For Each iFile In Папка.Files
   If UCase(Right(iFile,  3 )) = "XLS" Then
      ОбработчикФайла (iFile.Path)
   End If
 Next
End Sub

Sub ОбработчикФайла(pathFile As String)
Dim openWb  As Workbook
 Workbooks.Open pathFile, False
 Set openWb = ActiveWorkbook
 'Вместо строки MsgBox вставить любую обработку открытой книги openWb
 'Можно не открывать книгу а скопировать данные из закрытой книги, но об этом в следующий раз
  MsgBox "Имя открытой книги - " & openWb.Name
 
 openWb.Close False
End Sub
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776697
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шматри ящё

Код: 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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Dim svod As Workbook
Dim fso As New FileSystemObject

Sub Запуск()
' назначаем сводную книгу
Set svod = Workbooks("База.xls")
'очищаем сводный лист от старья
svod.Sheets("Лист1").Range("A10:BF65536").ClearContents
' Запускаешь процедуру перебора книг в каталоге и подкаталогах с указанием пути
' в примере для 3-х каталогов, можно добавить строк скольеко нужно и изменить путь
 ВыбратьКаталогПодкаталогиFSO fso.GetFolder("Y:\!")
 ВыбратьКаталогПодкаталогиFSO fso.GetFolder("\\Ukdc\Common\СФД\Общая\!sad")
 ВыбратьКаталогПодкаталогиFSO fso.GetFolder("Y:\sad")
End Sub

'Выбрать файлы XLS в каталоге и подкаталогах
'FileSystemObject - БИБЛИОТЕКА  Microsoft Scripting Runtime
Sub ВыбратьКаталогПодкаталогиFSO(Папка As Folder)
Dim fold As Folder, iFile As file

 For Each fold In Папка.SubFolders
   ВыбратьКаталогПодкаталогиFSO fold        'лезем в рекурсию
 Next
  
 For Each iFile In Папка.Files
   If UCase(Right(iFile,  3 )) = "XLS" Then
      ОбработчикФайла (iFile.path)
   End If
 Next
End Sub


Sub ОбработчикФайла(foolpathFile As String)

 Dim fname As String, fpath As String, sh As String
 Dim lastRow As Long
    ' имя исходного файла
    fname = Split(foolpathFile, "\")(UBound(Split(foolpathFile, "\")))
    ' путь к исходному файлу
    fpath = Left(foolpathFile, Len(foolpathFile) - Len(fname))
    ' Лист в исходных файлах
    sh = "Лист1"

    With svod.Sheets("Лист1")
     ' следующая после последней строка на сводном листе
     lastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Offset( 1 ).Row
     ' заполнение этой строки значениями из очередной книги
     ' слева указываешь столбцы из сводного листа
     ' справа указываешь адресс ячейки которую нужно перенести в данный столбец
        .Range("B" & lastRow).Value = GetCel(fpath, fname, sh, "A1")
        .Range("C" & lastRow).Value = GetCel(fpath, fname, sh, "A2")
        .Range("D" & lastRow).Value = GetCel(fpath, fname, sh, "A3")
        ' /// и т.д.
        
    End With
        
End Sub
' Функция получающая одну ячейку из закрытой книги
' Если возвращает #ССЫЛКА!, то скорее всего указанного листа в данной книге не существует
Private Function GetCel(fpath, fname, sh, rngStr)
  Dim formulaStr As String
    formulaStr = "'" & fpath & "[" & fname & "]" & sh & "'!" & Range(rngStr).Address(, , xlR1C1)
    Debug.Print formulaStr
    GetCel = ExecuteExcel4Macro(formulaStr)
End Function
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776710
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выдает вот такую ошибку User-defined type not defined на сколько я понимаю надо подлкючить какой-то модуль, а вот какой?

И еще по поводу копирывания. Я так понял что прописываются все необходимые ячейки вместо вот этого "MsgBox "Имя открытой книги - " & openWb.Name".
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776712
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строку
Код: plaintext
    Debug.Print formulaStr
из функции можно удалить
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776724
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХелпяВыдает вот такую ошибку User-defined type not defined на сколько я понимаю надо подлкючить какой-то модуль, а вот какой?

И еще по поводу копирывания. Я так понял что прописываются все необходимые ячейки вместо вот этого "MsgBox "Имя открытой книги - " & openWb.Name".

1) Меню Tools - References - поставить галку на Microsoft Scripting Runtime

2) Да правильно понял, только я уже выложил пример без открытия книги.
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34776757
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах да кстате совсем забыл
идея с методом ExecuteExcel4Macro принадлежит vkodor (могу ошибаться, но по крайней мере я у него подсмотрел)
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34777669
Хелпя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сразу Огромное СПАСИБО Deggasad за личную помощь!!!!!!! А также СПАСИБО vkodor!!!!!

DeggasadАх да кстате совсем забыл
идея с методом ExecuteExcel4Macro принадлежит vkodor (могу ошибаться, но по крайней мере я у него подсмотрел)

2 Deggasad Все работает, все отлично!!! Может я как-то смогу отблагодорить?????

Ну, и как всегда при работе возникают новые мысли в усовершенствовани скрипта.

1.Я так понял, что строка If UCase(Right(iFile, 3)) = "XLS" Then смотрит именно на то что файл екселевский. А для упрощения я решил пусть поиск будет производится по всем екселевским файлам у тех у кого имя начинается на alg. И пытаюсь пропистаь, оно чео то не хочет молчит и все. Скоорее всего я не правильно прописываю:If UCase(Right(iFile, 3)) = "alg*.xls"

2. А также я хочу сразу сделать что бы файл шол фтп, я эт вычитал на http://www.rondebruin.nl/copy7.htm. Прописываю адрес \\Prosmotr po\Individualnie и не работатет. Пишет что нет такого пути, или этого из-за того что у меня вход на фтп в подкаталоги только под паролем, пофамильно?
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34777706
vkodor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все благодарности автору книги: Джону Уокенбаху "Проффесиональное програмирование на VBA Excel2002".
...
Рейтинг: 0 / 0
Как обычно: перетаскивнаие ячеек
    #34777750
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хелпя

1.Я так понял, что строка If UCase(Right(iFile, 3)) = "XLS" Then смотрит именно на то что файл екселевский. А для упрощения я решил пусть поиск будет производится по всем екселевским файлам у тех у кого имя начинается на alg. И пытаюсь пропистаь, оно чео то не хочет молчит и все. Скоорее всего я не правильно прописываю:If UCase(Right(iFile, 3)) = "alg*.xls"

2. А также я хочу сразу сделать что бы файл шол фтп, я эт вычитал на http://www.rondebruin.nl/copy7.htm. Прописываю адрес \\Prosmotr po\Individualnie и не работатет. Пишет что нет такого пути, или этого из-за того что у меня вход на фтп в подкаталоги только под паролем, пофамильно?
1)
Код: plaintext
1.
2.
 For Each iFile In Папка.Files
   If UCase(iFile.Name) Like "ALG*.XLS" Then ОбработчикФайла (iFile.path)
 Next
2) Так на вскидку не скажу как с паролями папки открывать
...
Рейтинг: 0 / 0
25 сообщений из 69, страница 1 из 3
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как обычно: перетаскивнаие ячеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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