View previous topic :: View next topic |
Author |
Message |
dis8848
Joined: 06 Apr 2011 Posts: 10
|
(Separately) Posted: Wed Apr 06, 2011 14:14 Post subject: |
|
|
Господа, может кто-то подскажет как реализовать следующую задачу.
Есть несколько файлов одного типа (например xls). В каждом из них есть ячейка "Абонентский номер" и ячейка с указанием значения, например, 0000000001 или 0000000002.
Требуется переименовать файлы следующим образом:
- если находит в содержимом значение 0000000001 - Пупкин Вася
- если находит в содержимом значение 0000000002 - Пупкина Маня и т.д.
Возможно задача нетривиальная, но пока не знаю как подступиться к ней, и возможно ли вообще?
Файлов много и их имена представляют собой бессмысленный набор символов. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Apr 26, 2011 15:19 Post subject: |
|
|
dis8848
Я не понял.
Если значение берём из второй ячейки, то зачем ячейка "Абонентский номер"?
И откуда брать имена (Пупкин Вася, Пупкина Маня и т.п.)? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
dis8848
Joined: 06 Apr 2011 Posts: 10
|
(Separately) Posted: Mon May 02, 2011 11:26 Post subject: |
|
|
Возможно я корявенько написал, поясню по-иному.
Забудем о ячейках. Есть много файлов (отчеты оператора связи), каждый из которых в тексте содержит уникальный (и только один) номер SIM-карты. Сами файлы могут быть xls xml или html.
Файлы приходят с именами в виде бессмысленного набора символов. Соответствие номера SIM - ФИО заранее известно (пусть это будет таблица).
Нужно, чтобы искался текст в файле (тот самый номер SIM из заранее известного массива) и при нахождении соответствия - имя файла переименовывалось бы с абракадабры в значение, заданное в таблице.
Вот как-то так. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue May 03, 2011 10:03 Post subject: |
|
|
dis8848
Ясно.
Только файлы "xls xml или html" имеют разный формат.
1. В xls-файле номер SIM-карты хранится в какой-то определённой ячейке с заранее известным номером?
2. В xml-файле известен обрамляющий тэг для номера SIM-карты?
3. Как в html-файле определить положение номера SIM-карты? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
dis8848
Joined: 06 Apr 2011 Posts: 10
|
(Separately) Posted: Tue May 03, 2011 10:10 Post subject: |
|
|
В html номер SIM всегда находится в 61 строке
Code: | <br />Номер SIM-карты: 00000000000000000000</td> |
то есть сам номер всегда занимает 20 символов на 61 строке начиная с 24 знака.
По остальным - сейчас перед глазами нету образцов, но да - по xls там всегда тоже строго определенная ячейка.
--------------------------------------------------------
сейчас уточнил, в случае с xls это всегда ячейка с именем R5C3. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Wed May 04, 2011 15:21 Post subject: |
|
|
dis8848
Т.к. для xml ты не ответил, пока так:
Code: | '====================================================
' Колонка Result возвращает "Номер SIM-карты"
'====================================================
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Const ReadingLine = 61
On Error Resume Next
Select Case LCase(FSO.GetExtensionName(filename))
Case "html"
content = FromHtml(filename)
Case "xml"
content = FromXml (filename)
Case "xls"
content = FromXls (filename)
Case Else
content = ""
End Select
If Err.Number <> 0 Then content = ""
On Error GoTo 0
Set FSO = Nothing
Function FromHtml(pFile)
Dim i
FromHtml = ""
With FSO.OpenTextFile(pFile, ForReading)
i = 1
Do While Not .AtEndOfStream
If i < ReadingLine Then
.SkipLine
i = i + 1
Else
FromHtml = Mid(.ReadLine, 24, 20)
Exit Do
End If
Loop
.Close
End With
End Function
Function FromXml(pFile)
FromXml = ""
'Задача пока не формализована
' With FSO.OpenTextFile(pFile, ForReading)
' Do While Not .AtEndOfStream
' .SkipLine
' Loop
' .Close
' End With
End Function
Function FromXls(pFile)
FromXls = ""
With CreateObject("Excel.Application")
.Workbooks.Open pFile, null, True
On Error Resume Next
FromXls = .Cells(5,3).Value
On Error GoTo 0
.Quit
End With
End Function
|
Поскольку ты сам запостил вопрос в этой теме, я надеюсь, что ты знаешь, что с этим делать _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
dis8848
Joined: 06 Apr 2011 Posts: 10
|
(Separately) Posted: Thu May 05, 2011 11:29 Post subject: |
|
|
Batya wrote: | ...я надеюсь, что ты знаешь, что с этим делать | спасибо большое! буду пробовать.
Добавлено спустя 2 часа 17 минут 4 секунды:
Попробовал с html, всё хорошо, немного только поправил значения:
Code: | FromHtml = Mid(.ReadLine, 34, 20) |
Еще раз большое спасибо! |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu May 05, 2011 14:47 Post subject: |
|
|
dis8848 wrote: | немного только поправил значения |
Ну, как ты писал выше, так я и сделал
Так что xml-то? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
dis8848
Joined: 06 Apr 2011 Posts: 10
|
(Separately) Posted: Wed May 18, 2011 07:50 Post subject: |
|
|
Batya wrote: | dis8848 wrote: | немного только поправил значения |
Ну, как ты писал выше, так я и сделал
Так что xml-то? | решили остановиться на html
правда основная задача осталась не решена - подстановка вместо номеров SIM имён пользователей. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Wed May 18, 2011 10:44 Post subject: |
|
|
dis8848 wrote: | правда основная задача осталась не решена - подстановка вместо номеров SIM имён пользователей. |
Ну, так ты ж не сказал точно, откуда брать ФИО? (Расположение файла, формат, номер начальной строки, позиция, номера ячеек, столбцов, строк и т.п.) _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Sun Jul 24, 2011 20:10 Post subject: |
|
|
Подскажите почему не срабатывает код и выдаёт ошибку: "требуется объект"
Code: | Dim FSO, objFolder, objShellApp, objItem
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = CreateObject("Shell.Application").NameSpace(FSO.GetParentFolderName(FileName))
Set objItem = objFolder.ParseName(FSO.GetFileName(FileName))
Content = objFolder.GetDetailsOf(objItem, 25) |
хотя если вставить начало FileName = "c:\TC Image\TOTALCMD.EXE"
то работает... может что-то не хватает |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Mon Jul 25, 2011 09:40 Post subject: |
|
|
Andrey_A
В script.ini должно быть:
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Andrey_A
Joined: 10 Apr 2009 Posts: 394 Location: Сочи
|
(Separately) Posted: Mon Jul 25, 2011 09:55 Post subject: |
|
|
Спасибо, заработало! |
|
Back to top |
|
|
dis8848
Joined: 06 Apr 2011 Posts: 10
|
(Separately) Posted: Wed Sep 21, 2011 14:29 Post subject: |
|
|
Batya wrote: | Ну, так ты ж не сказал точно, откуда брать ФИО? (Расположение файла, формат, номер начальной строки, позиция, номера ячеек, столбцов, строк и т.п.) | Ф.И.О. должно браться из таблички, наподобие вот такой: http://www.mediafire.com/?hy0de9i5fjt505p
расположение файла можно пока условно принять за D:\work\
Если это хоть как-то облегчит задачу:
Номер сим-карты в самом файле не повторяется (написан только 1 раз),
Сам номер из раза в раз может располагаться на разных строках
Сам номер обычно в коде идет после слов "Номер SIM-карты:"
Остановились на html, другие не будем пока рассматривать. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Tue Oct 04, 2011 11:06 Post subject: |
|
|
dis8848
Я опять ничего не понял.
Если ты хочешь остановиться "на html, другие не будем пока рассматривать", то зачем привёл пример xls-файла?
Ты хочешь переименовывать файлы по их содержимому, или информация для переименования должна браться из какого-то стороннего файла? _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|