Страницы: 1
RSS
макрос или скрипт на 3 действия?
 
Добрый день!  
Ситуация такая, случилось так что мне нужно скорректировать несколько сотен документов эксель, то бишь CSV. Делать это вручную оказалось не так просто) хотя все файлы однотипные и изменения нужны такие же однотипные...  
по сути нужно столбец E разделить на два разделив дату и время(я это делаю через функцию текст по столбцам), потом в столбце E изменить формат всех ячеек на формат дата "14.03.2001" иначе он неправильно отображает некоторые ячейки, столбец F теперь заменен временем, следовательно его не трогает, и столбец G удаляем....итого три действия...но во множестве файлов, можно ли это автоматизировать ?  
может существуют какие-то надстройки в готовом виде?  
я возможно наглею, но нужен наиболее готовый вариант.код, программа или совет. Потому что вариант надо выучить язык программирования VB не очень возможен в моем случае =((  
 
прикрепил пример файла, в оригинале строк неск сотен тысяч, их убрал в целях уменьшения размера файла.
 
пример файла Ne sushestvuet :)  
 
Возможно, тут можно обойтись языком командной строки...
 
{quote}{login=Ne sushestvuet}{date=11.01.2011 05:43}{thema=макрос или скрипт на 3 действия?}{post}  
прикрепил пример файла, в оригинале строк неск сотен тысяч, их убрал в целях уменьшения размера файла.{/post}{/quote}  
 
упс, фаил не прилип) там почему-то строки сбиваются влево..на самом дееле dat_time именно столбец E все остальное соотвественного его.
 
оказывается csv нельзя прикрепить-))
 
{quote}{login=Казанский}{date=11.01.2011 05:47}{thema=}{post}пример файла Ne sushestvuet :)  
 
Возможно, тут можно обойтись языком командной строки...{/post}{/quote}  
 
вы имеете виду это можно сделать через cmd в windows?
 
Sub Коррект()  
'  
' Коррект Макрос  
'  
' Сочетание клавиш: Ctrl+э  
'  
   Columns("E:E").Select  
   Selection.TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _  
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _  
       Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _  
       :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True  
   Selection.NumberFormat = "m/d/yyyy"  
   Columns("G:G").Select  
   Selection.ClearContents  
End Sub  
попутный вопрос, где в макросе ошибка? почему-то время пишет в формате h.mm.ss am/pm хотя формат ячеек стоит обычный hh.mm.ss ..при этом в примере формата показывает как ни странно тот же h.mm.ss am/pm
 
Изменять CSV надо не открывая в Excel, иначе даты сбиваются. А вообще лучше сделать это в Powershell или Python.
 
> Изменять CSV надо не открывая в Excel, иначе даты сбиваются  
 
Согласен. Можно в любом скриптовом языке, и в VBA тоже, но открывая CSV файлы как текстовые.  
Ne sushestvuet, скопируйте в Блокнот кусок исходного файла и что надо получить. Приложите в виде TXT или ZIP/RAR.
 
{quote}{login=Казанский}{date=11.01.2011 07:49}{thema=}{post}> Изменять CSV надо не открывая в Excel, иначе даты сбиваются  
 
Согласен. Можно в любом скриптовом языке, и в VBA тоже, но открывая CSV файлы как текстовые.  
Ne sushestvuet, скопируйте в Блокнот кусок исходного файла и что надо получить. Приложите в виде TXT или ZIP/RAR.{/post}{  
/quote} получается примерно так, изменений чуть больше но самые критичныея описал выше, тот же порядок столбцов уже  не так важен
 
Много работы на работе :), поэтому код писать некогда, но алгоритм набросал:  
1. Читаем текстовый файл построчно, или как вариант сразу всё в массив, разбив по концам строк.  
2. Каждую строку разбиваем в свой массив по ;  
3. 5-е поле этого массива разбиваем на две части по пробелу.  
4. Первую часть можно разбить по "-" или поиграться с CDate()и/или Format()  
5. Пишем полученные куски в нужном порядке с нужными разделителями в другой (или этот же, если читали сразу всё) файл.  
 
Не понятно, что там с первой строкой. Если нужно заменить - можно массив читать со второй строки, а в выходной файл сперва записать новую сгенерированную строку.
 
Попробуйте - откройте VBA, исправьте константы и запустите.
 
Казанский, код получился короче, чем описание :)  
А я всё больше через fso пишу, там как-то подлиннее получается...
 
{quote}{login=Казанский}{date=12.01.2011 11:37}{thema=Ne sushestvuet}{post}Попробуйте - откройте VBA, исправьте константы и запустите.{/post}{/quote}  
 
Супер работает без ошибок вроде...сверил выборочно неск файлов все данные корректны) Казанский вы волшебник!))) Спасибо вам большое!    
Оказалось что обработать надо не несколько сотен а несколько тысяч файлов.
Страницы: 1
Читают тему
Наверх