Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Несколько txt в Excel (http://forum.oszone.net/showthread.php?t=270667)

bazik83 25-10-2013 17:29 2241007

Несколько txt в Excel
 
Добрый день.
Подскажите как реализовать на vbs скрипт копирующий из txt файлов с разделителем ";" в файл excel на разные листы (название листа соответствует верхней строке файла ). Файлов около 90.
текстовый файл вида:
Код:

Computer1
Thu Apr 11 16:05:10 MSK 2013;Last shutdown is OK
Wed Jul 10 13:55:13 MSK 2013;Last shutdown is OK
Wed Jul 10 13:57:37 MSK 2013;Last shutdown is OK
Wed Jul 10 14:02:36 MSK 2013;Last shutdown is OK
Wed Jul 10 14:07:02 MSK 2013;Last shutdown is OK
Wed Jul 10 14:47:17 MSK 2013;Last shutdown is OK
10.07.2013 15:08:20;Last shutdown is OK in ->  10.07.2013 15:07:37
10.07.2013 17:18:16;INCORRECT SHUTDOWN !!!
10.07.2013 17:38:40;Last shutdown is OK in ->  10.07.2013 17:37:56
11.07.2013 08:20:47;INCORRECT SHUTDOWN !!!
12.07.2013 08:41:16;INCORRECT SHUTDOWN !!!
13.07.2013 08:48:59;INCORRECT SHUTDOWN !!!
14.07.2013 08:53:38;Last shutdown is OK in ->  13.07.2013 22:01:15
15.07.2013 08:43:48;Last shutdown is OK in ->  14.07.2013 22:17:39
16.07.2013 08:33:36;Last shutdown is OK in ->  15.07.2013 22:13:40
17.07.2013 08:50:44;Last shutdown is OK in ->  16.07.2013 21:54:25
18.07.2013 08:40:36;Last shutdown is OK in ->  17.07.2013 21:58:18
19.07.2013 09:09:04;Last shutdown is OK in ->  18.07.2013 21:55:55
20.07.2013 08:56:03;Last shutdown is OK in ->  19.07.2013 22:09:23

Есть код для excel, но он импортирует в разные файлы..
Код:

Sub ImportTextFiles()
  Dim fsSearch As FileSearch
  Dim strFileName As String
  Dim strPath As String
  Dim i As Integer
  ' Задание пути и возможного имени файла
  strFileName = ThisWorkbook.path & "\"
  strPath = "*.txt"
  ' Создание объекта FileSearch
  Set fsSearch = Application.FileSearch
  ' Настройка объекта для поиска
  With fsSearch
      ' Маска для поиска
      .LookIn = strFileName
      ' Путь для поиска
      .FileName = strPath
      ' Поиск всех файлов, удовлетворяющих маске
      .Execute
      ' Выход, если файлы не существуют
      If .FoundFiles.Count = 0 Then
        MsgBox "Файлы не обнаружены"
        Exit Sub
      End If
  End With
  ' Обработка найденных файлов
  For i = 1 To fsSearch.FoundFiles.Count
      Call ImportTextFile(fsSearch.FoundFiles(i))
  Next i
End Sub

Sub ImportTextFile(FileName As String)
  ' Импорт файла
  Workbooks.OpenText FileName:=FileName, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, Semicolon:=True)
End Sub


Iska 26-10-2013 07:50 2241279

читать дальше »
Код:

Option Explicit

Const xlDelimited = 1

Dim objFSO
Dim strFile
Dim objTS


If WScript.Arguments.Count > 0 Then
        Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
       
        With WScript.CreateObject("Excel.Application")
                With .Workbooks.Add
                        For Each strFile In WScript.Arguments
                                If objFSO.FileExists(strFile) Then
                                        Set objTS = objFSO.OpenTextFile(strFile)
                                       
                                        With .Worksheets.Add()
                                                .Name = Trim(objTS.ReadLine())
                                                .Cells(1, 1).Value = Trim(objTS.ReadLine())
                                               
                                                Do Until objTS.AtEndOfStream
                                                        .Cells(.UsedRange.Rows.Count + 1, 1).Value = Trim(objTS.ReadLine())
                                                Loop
                                               
                                                objTS.Close
                                               
                                                With .UsedRange
                                                        .TextToColumns , xlDelimited, , , , True
                                                        .EntireColumn.AutoFit
                                                End With
                                        End With
                                       
                                        Set objTS = Nothing
                                Else
                                        WScript.Echo "Can't find source file [" & strFile & "]."
                                End If
                        Next
                End With
               
                .Visible = True
        End With
       
        Set objFSO  = Nothing
Else
        WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source file1> <Source file2> ... <Source fileN>"
End If

WScript.Quit 0


Просто перетащите на скрипт все потребные файлы. Если не хватит длины командной строки — например, длинные пути — будем получать перечень исходных файлов иначе.

bazik83 28-10-2013 09:59 2242341

Iska,
Спасибо, а можно ли добавить условие, чтобы добавлялись только файлы содержащие INCORRECT SHUTDOWN !!!

Iska 28-10-2013 14:09 2242505

bazik83, файлы или строки?

bazik83 28-10-2013 16:24 2242626

Iska, Файлы

Iska 28-10-2013 21:22 2242829

При условии, что файлы не гигабайтного размера:
читать дальше »
Код:

Option Explicit

Const xlDelimited = 1

Dim objFSO
Dim strFile
Dim objTS
Dim strLine
Dim strContent
Dim arrContent
Dim i


If WScript.Arguments.Count > 0 Then
        Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
       
        With WScript.CreateObject("Excel.Application")
                With .Workbooks.Add
                        For Each strFile In WScript.Arguments
                                If objFSO.FileExists(strFile) Then
                                        With objFSO.OpenTextFile(strFile)
                                                strLine    = Trim(.ReadLine())
                                                strContent = .ReadAll()
                                                .Close
                                        End With
                                       
                                        If InStr(1, strContent, "INCORRECT SHUTDOWN !!!", vbTextCompare) > 0 Then
                                                arrContent = Split(strContent, vbCrLf)
                                               
                                                With .Worksheets.Add()
                                                        .Name = strLine
                                                       
                                                        For i = LBound(arrContent) To UBound(arrContent)
                                                                .Cells(i + 1, 1).Value = Trim(arrContent(i))
                                                        Next
                                                       
                                                        With .UsedRange
                                                                .TextToColumns , xlDelimited, , , , True
                                                                .EntireColumn.AutoFit
                                                        End With
                                                End With
                                        End If
                                Else
                                        WScript.Echo "Can't find source file [" & strFile & "]."
                                End If
                        Next
                End With
               
                .Visible = True
        End With
       
        Set objFSO = Nothing
Else
        WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source file1> <Source file2> ... <Source fileN>"
End If

WScript.Quit 0



Время: 10:45.

Время: 10:45.
© OSzone.net 2001-