Приветствую великих знатоков и пользователей Excel !
Есть папка с кучей файлов с расширением .csv, из которых нужно сделать единую правильную таблицу, чтобы потом делать сводники и прочее... Проблема в том, что данные в файлах организованы с двумя заголовками, которые при запросе организуют неправильную таблицу с заголовками в строках (пример во вложениях) Прошу помощи у знатоков, чтобы разъяснили как и что нужно сделать ля получения требуемого результата
Добрый день Максим Зеленский, спасибо за код Вложения выгружает, но если у вложений одинаковое имя, то сохраняется только одно, остальные нет.
Подскажите пожалуйста, как изменить код чтобы в имени выгружаемых вложений перед расширением (".xls" или другие) стояла дата присланного письма:
Код
Sub SaveAttmnts()
Dim myobj As Object
Dim att As Attachment
Dim sPath As String
Dim Ws As Object, Fld As Object
On Error Resume Next
Set Ws = CreateObject("Shell.application")
Set Fld = Ws.BrowseForFolder(0, "Select path to save attachments:", 0, "ssfDRIVES")
If Not Err.Number = 91 Then
sPath = Fld.self.Path
Else
Exit Sub
End If
Set Ws = Nothing: Set Fld = Nothing
For Each myobj In Application.ActiveExplorer.Selection
If myobj.Class = olMail Then
For Each att In myobj.Attachments
att.SaveAsFile sPath & "\" & att.FileName
Next
End If
Next
MsgBox "Attachments saved to " & sPath, vbOKOnly + vbInformation + vbSystemModal
End Sub
Еще вариант с созданием папок (3 уровня) по столбцам 1,2,3 и перемещение в них файлов погиперссылкам из 4 столбца (Спасибо Чупееву Максиму))):
КОД Sub Creator()
'определяем корневой каталог, куда будут сыпаться все наши папки.
Set fs = CreateObject("Scripting.FileSystemObject") 'узнать имя и путь открываемого файла fname = Application.GetOpenFilename 'узнать только имя файла s = fs.GetFileName(fname) 'убрать из полного пути файла его название, оставив только путь к папке. ss = Left(fname, Len(fname) - Len(s))
'делаем цикл, который прекращает работать при первой же пустой ячейке в первом столбце Dim i As Long i = 1 Do While Worksheets("Лист1").Cells(i, 1) <> Empty
'на ошибке продолжаем макрос On Error Resume Next
'создаем папку из первого столбца fokinway1 = ss & "\" & Worksheets("Лист1").Cells(i, 1).Value & "\" MkDir fokinway1
'создаем папку из второго столбца в первой папке fokinway2 = ss & "\" & Worksheets("Лист1").Cells(i, 1).Value & "\" & Worksheets("Лист1").Cells(i, 2).Value & "\" MkDir fokinway2 'создаем папку из третьего столбца во второй папке fokinway3 = ss & "\" & Worksheets("Лист1").Cells(i, 1).Value & "\" & Worksheets("Лист1").Cells(i, 2).Value & "\" & Worksheets("Лист1").Cells(i, 3).Value & "\" MkDir fokinway3 'при желании можно продолжить кол-во папок...
'узнаем имя файла из четвертого столбца (без пути) fokinfile = Worksheets("Лист1").Cells(i, 4) fokinfilename = fs.GetFileName(fokinfile)
Dim sFileName As String, sNewFileName As String 'старое название файла и путь - в столбце 4 sFileName = Worksheets("Лист1").Cells(i, 4)
'новое название файла и путь - путь последней созданной папки+название файла sNewFileName = fokinway3 & fokinfilename Name sFileName As sNewFileName
'следующая строка i = i + 1 'вернуться к началу цикла Loop
Есть 2 таблицы из которых нужно выбрать максимальную дату по двум критериям отбора, причем если в старой таблице вместо цифровых данных стоят текстовые, то нужно вставить данные цифровые из новой таблицы, а если в новой текстовые а старой цифровые, то нужно вставить текстовые.
Помогите если хватит знания и навыков) Пример таблицы во вложенном файле.