как сделать бд из вордовых табличек?
Берешь любой инструмент потяжелее и бьешь по голове того, кто придумал автоматическую систему, генерящую отчетную табличку в ВОРДЕ!
Сначала надо в экесль из ворда перевести. В этом основной вопрос.
Хым. Я думал у них эта проблема уже как-то решена. Если нет - то действительно, основная проблема именно в этом будет.
Если в текстовом файле всё будет - его и парсить.
Автосохранялку тоже проблем не должно быть сделать.
Можно конечно и через VBA, и вообще каким-нибудь сторонним автоматизатором, который будет открывать файл, выделать нужное и копировать.
ситуация такая: есть система автоматического измерения крокодилов, которая генерит отчётную табличку в ворде, со временем в заголовке и самой табличке вида номер крокодила - длина - ширина - высота.сейчас для дальнейшей работы эти таблички копируют в эксель и сохраняют. получается, чтобы составить динамику роста одного крокодила за последние 10 дней надо открыть и закрыть 10 разных файлов.есть ли какой-нибудь удобный инструмент по переводу этой всей херни в общую бд, чтобы получать динамику роста одним запросом?да, дотянуться руками или ещё чем до погромиста системы нереально. а местный сисадмин с радостью даёт доступ к mysql на серваке, но напрочь отказывается делать парсер из ворда/экселя.так в чем проблема? бери любой батч конвертер из ворда в текст и оттуда парси парой строк на скриптовом языке
у тебя в игноре?
Сначала надо в экесль из ворда перевести. В этом основной вопрос.http://www.google.ru/webhp?sourceid=chrome-instant&ion=...
Sub read_word_document()
Dim sht As Worksheet
Dim WordDoc As Word.Document
Dim WordApp As Word.Application
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = False
On Error GoTo ErrHandler
Set WordDoc = WordApp.Documents.Open("Z:\mydir\myfile1.DOC", ReadOnly:=True)
j = 0
For i = 1 To WordDoc.Tables.Count
DoEvents
Dim s As String
s = WordDoc.Tables(i).Cell(1, 1).Range.Text
Debug.Print i, s
WordDoc.Tables(i).
Set sht = Sheets("temp")
'sht.Cells.Clear
sht.Cells(1, 1).Select
sht.PasteSpecial (xlPasteAll)
End If
Next i
WordDoc.Close
WordApp.Quit
GoTo done
ErrClose:
On Error Resume Next
ErrHandler:
Debug.Print Err.Description
On Error GoTo 0
done:
End Sub
Я так понял у ТС много файлов, но это вопрос добавления ещё одного цикла.
Исходников системы что ли нету?
Работать будет не очень быстро, к сожалению - тут целиком ворд с екселем запускается(а это порядка секунд на современном компе), но зато просто, никакого парсинга вордовских документов.
У ворда при одном открытом окне второе запускается считай мгновенно - я проверял, конвертирую пакетно ворд в html.
+1 за VBA, или POI
поэтому в коде нужно убрать WordApp.Quit за пределы цикла и не помешает добавить Application.ScreenUpdating = False в начале и Application.ScreenUpdating = True в конце
добавить Application.ScreenUpdating = False в начале и Application.ScreenUpdating = True в концеНафига? Application.Visible = False и всё.
ворд можно скрыть, а эксель, может быть, и не стоит
Эксель вообще в топку. Он не нужен - сразу в базу всё писать. Если нужен эксель, то любая IDE для баз данных умеет экспорт в эксель делать.
мой комментарий относился к конкретному куску кода, приведённому выше, если что
Можно в приват
Оставить комментарий
test100500
ситуация такая: есть система автоматического измерения крокодилов, которая генерит отчётную табличку в ворде, со временем в заголовке и самой табличке виданомер крокодила - длина - ширина - высота.
сейчас для дальнейшей работы эти таблички копируют в эксель и сохраняют. получается, чтобы составить динамику роста одного крокодила за последние 10 дней надо открыть и закрыть 10 разных файлов.
есть ли какой-нибудь удобный инструмент по переводу этой всей херни в общую бд, чтобы получать динамику роста одним запросом?
да, дотянуться руками или ещё чем до погромиста системы нереально. а местный сисадмин с радостью даёт доступ к mysql на серваке, но напрочь отказывается делать парсер из ворда/экселя.