здравствуйте, прошу помочь создать макрос (т.к. сам в этом не силен). суть в том что требуется макрос который бы копировал данные из файла (путь которого прописан на: лист "отчеты" ячейка AO1), данные эти находятся всегда в диапазоне A2:AM, и вставлял в файл "расчет" лист "отчеты" начиная с ячейки A2. и там есть макрос для обновления путей к файлам, можно ли сделать так чтобы он не спрашивал откуда брать данные, а всегда брал эти данные оттуда где находится сам файл"расчет". дело в том что данные в папку добавляются ежедневно и хотелось бы максимально автоматизировать этот процесс получения. файлы из которых требуется извлечь данные имеют названия чисел (напр: 13.08.2013) и подставляются из выпадающего списка "='текущий контракт'!F1:G1".ели можно лист "пути" где находятся пути файлов сделать скрытым, я пробовал сделать скрытым, но тогда получается что эти данные вставляются в текущий лист. заранее благодарен
здравствуйте, прошу помочь создать макрос (т.к. сам в этом не силен). суть в том что требуется макрос который бы копировал данные из файла (путь которого прописан на: лист "отчеты" ячейка AO1), данные эти находятся всегда в диапазоне A2:AM, и вставлял в файл "расчет" лист "отчеты" начиная с ячейки A2. и там есть макрос для обновления путей к файлам, можно ли сделать так чтобы он не спрашивал откуда брать данные, а всегда брал эти данные оттуда где находится сам файл"расчет". дело в том что данные в папку добавляются ежедневно и хотелось бы максимально автоматизировать этот процесс получения. файлы из которых требуется извлечь данные имеют названия чисел (напр: 13.08.2013) и подставляются из выпадающего списка "='текущий контракт'!F1:G1".ели можно лист "пути" где находятся пути файлов сделать скрытым, я пробовал сделать скрытым, но тогда получается что эти данные вставляются в текущий лист. заранее благодаренserg_by85
Sub обновление_сссылок() Dim V As String Dim BrowseFolder As String BrowseFolder = ThisWorkbook.Path & "\" 'добавляем лист и выводим на него шапку таблицы ' Sheets("пути").Select With Worksheets("пути") .UsedRange.ClearContents With .Range("A1:E1") .Font.Bold = True .Font.Size = 12 End With .Range("A1").Value = "Имя файла" .Range("B1").Value = "Путь" .Range("C1").Value = "Размер" .Range("D1").Value = "Дата создания" .Range("E1").Value = "Дата изменения" End With 'вызываем процедуру вывода списка файлов 'измените True на False, если не нужно выводить файлы из вложенных папок ListFilesInFolder BrowseFolder, True On Error Resume Next ThisWorkbook.Names("paths").Delete V = "=" & Sheets("пути").Range("b2:b" & Sheets("пути").[a65536].End(xlUp).Row).Address(external:=-1) ThisWorkbook.Names.Add Name:="paths", RefersTo:=V On Error GoTo 0 With Sheets("текущий контракт").Range("F1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Names("paths").RefersTo .IgnoreBlank = True .InCellDropdown = True .ShowInput = True .ShowError = True End With End Sub
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim r As Long Set FSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = FSO.getfolder(SourceFolderName) With Worksheets("пути") r = .Range("A65536").End(xlUp).Row + 1 'находим первую пустую строку 'выводим данные по файлу For Each FileItem In SourceFolder.Files .Cells(r, 1).Formula = FileItem.Name .Cells(r, 2).Formula = FileItem.Path .Cells(r, 3).Formula = FileItem.Size .Cells(r, 4).Formula = FileItem.DateCreated .Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 x = SourceFolder.Path Next FileItem 'вызываем процедуру повторно для каждой вложенной папки If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders ListFilesInFolder SubFolder.Path, True Next SubFolder End If .Columns("A:E").AutoFit End With Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing End Sub
Sub обновление_сссылок() Dim V As String Dim BrowseFolder As String BrowseFolder = ThisWorkbook.Path & "\" 'добавляем лист и выводим на него шапку таблицы ' Sheets("пути").Select With Worksheets("пути") .UsedRange.ClearContents With .Range("A1:E1") .Font.Bold = True .Font.Size = 12 End With .Range("A1").Value = "Имя файла" .Range("B1").Value = "Путь" .Range("C1").Value = "Размер" .Range("D1").Value = "Дата создания" .Range("E1").Value = "Дата изменения" End With 'вызываем процедуру вывода списка файлов 'измените True на False, если не нужно выводить файлы из вложенных папок ListFilesInFolder BrowseFolder, True On Error Resume Next ThisWorkbook.Names("paths").Delete V = "=" & Sheets("пути").Range("b2:b" & Sheets("пути").[a65536].End(xlUp).Row).Address(external:=-1) ThisWorkbook.Names.Add Name:="paths", RefersTo:=V On Error GoTo 0 With Sheets("текущий контракт").Range("F1").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=Names("paths").RefersTo .IgnoreBlank = True .InCellDropdown = True .ShowInput = True .ShowError = True End With End Sub
Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim r As Long Set FSO = CreateObject("Scripting.FileSystemObject") Set SourceFolder = FSO.getfolder(SourceFolderName) With Worksheets("пути") r = .Range("A65536").End(xlUp).Row + 1 'находим первую пустую строку 'выводим данные по файлу For Each FileItem In SourceFolder.Files .Cells(r, 1).Formula = FileItem.Name .Cells(r, 2).Formula = FileItem.Path .Cells(r, 3).Formula = FileItem.Size .Cells(r, 4).Formula = FileItem.DateCreated .Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 x = SourceFolder.Path Next FileItem 'вызываем процедуру повторно для каждой вложенной папки If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders ListFilesInFolder SubFolder.Path, True Next SubFolder End If .Columns("A:E").AutoFit End With Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing End Sub
есть файл "расчет" в нем лист "отчеты" на этом листе в ячейке AO1 прописан путь (формулой) который изменяется в зависимости от значения выпадающего списка на листе "текущий контракт" в ячейке (='текущий контракт'!F2:G2), нужно чтобы при изменении данных в ячейке AO1 на листе "отчеты" (соответсвенно изменяется значение выпадающего списка 'текущий контракт'!F2:G2)) изменялись значения в ячейках A:AM на соответствующие из файла к которому прописан путь в AO1 лист "отчеты" в данном примере C:\Users\User\Desktop\расчет\15.08.2013.xlsx при записи рекордером получается что-то непонятное [spoiler]Sub Макрос3() ' ' Макрос3 Макрос '
есть файл "расчет" в нем лист "отчеты" на этом листе в ячейке AO1 прописан путь (формулой) который изменяется в зависимости от значения выпадающего списка на листе "текущий контракт" в ячейке (='текущий контракт'!F2:G2), нужно чтобы при изменении данных в ячейке AO1 на листе "отчеты" (соответсвенно изменяется значение выпадающего списка 'текущий контракт'!F2:G2)) изменялись значения в ячейках A:AM на соответствующие из файла к которому прописан путь в AO1 лист "отчеты" в данном примере C:\Users\User\Desktop\расчет\15.08.2013.xlsx при записи рекордером получается что-то непонятное [spoiler]Sub Макрос3() ' ' Макрос3 Макрос '
Ну раз модеры не реагируют на нарушение правил... AO1 лист "отчеты" не нужна. Все происходит при выборе файла из списка. Ответственность за содержание файлов в папке лежит на Вас, никаких проверок на этот счет нет.
Ну раз модеры не реагируют на нарушение правил... AO1 лист "отчеты" не нужна. Все происходит при выборе файла из списка. Ответственность за содержание файлов в папке лежит на Вас, никаких проверок на этот счет нет.KuklP