Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Получить цифры из word / 25 сообщений из 47, страница 1 из 2
12.05.2010, 12:05
    #36622812
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Подскажите, пожалуйста, как можно из файла во вложении получить следующие данные: № и значения столбцов. Все это скопировать в excel с такими столбцами: №, Тариф, кВтч/кВт и т.д.
...
Рейтинг: 0 / 0
12.05.2010, 12:11
    #36622828
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
А вот и файл
...
Рейтинг: 0 / 0
12.05.2010, 12:52
    #36622952
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Можно и не в excel, а напр. в txt
...
Рейтинг: 0 / 0
13.05.2010, 15:12
    #36625885
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Люди, помогите пожалуйста. Срочно надо... Единственное что получилось - это сконвертировать в pdf, а затем в excel...
...
Рейтинг: 0 / 0
13.05.2010, 16:20
    #36626102
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06,
ну можно закопипастить в Эксель и циклом по столбцу пройтись.
Можно в текст сохранить и его скриптом/макросом в Эксель загружать - уже по одному клиенту целиком в строку.
...
Рейтинг: 0 / 0
13.05.2010, 16:27
    #36626122
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Я бы наверное лучше сохранил текст и его перебирал - по 22 строки на клиента (надеюсь, всё время так?).
22 значения в строку, следующие 22 в следующую и т.д. Можно ненужные пропускать.
...
Рейтинг: 0 / 0
13.05.2010, 16:29
    #36626131
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Hugo121Я бы наверное лучше сохранил текст и его перебирал - по 22 строки на клиента (надеюсь, всё время так?).
22 значения в строку, следующие 22 в следующую и т.д. Можно ненужные пропускать.

Несколько сотен строк, несколько раз в месяц. А если где-то пустые значения, тогда что?
...
Рейтинг: 0 / 0
13.05.2010, 16:38
    #36626164
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06,
нам сотни нипочём. А вот если пустые, тогда цикл от № до №. Но конечно надо смотреть, может так и не получится, если например в оплате будут выпаднения. Но ведть там скорее всего будет 0.00. А названия столбцов не нужны. Можно вообще брать только строку после "№" и четыре после "Оплата".
...
Рейтинг: 0 / 0
13.05.2010, 22:18
    #36626842
Получить цифры из word
beaver06,
примерное решение. На представленых Вами данных отрабатывает без ошибок.
процедуру добавить в модуль обрабатываемого документа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Sub ExpToXL()
Dim xlApp As Object, wkS As Object
Dim i As Long, k As Long

'открыть Excel, создать новую книгу, дать ссылку на первый лист
Set xlApp = CreateObject("Excel.Application")
Set wkS = xlApp.workbooks.Add.worksheets( 1 )

i =  1 
k =  1 
On Error GoTo Err
'цикл по всем _абзацам_ (и кто так строит!?) документа
Do Until i > Paragraphs.Count
If Left$(Paragraphs(i).Range.Text,  1 ) = "№" Then
    'нашли "строку" с номером, проверили, есть ли сам номер
    If i +  1  > Paragraphs.Count Then Exit Do
    'записали значение номера в Excel
    'rem убираем переводы строк
    wkS.Cells(k,  1 ) = Trim$(Replace(Paragraphs(i +  1 ).Range.Text, vbCr, ""))
    i = i +  1 
ElseIf Left$(Paragraphs(i).Range.Text,  6 ) = "Оплата" Then
    'нашли "строку" с цЫфрами, проверили, есть ли все поля
    If i +  5  > Paragraphs.Count Then Exit Do
    With wkS
        'записали значения цЫфр в Excel
        'NB! порядок абзацев в "строке" цЫфр отличается отвизуального
        '     в Excel выгружаем так, чтобы порядок соответствовал визуальному
        '     убираем переводы строк, разделители разрядов и концевые пробелы
        .Cells(k,  2 ) = Trim$(Replace(Replace(Paragraphs(i +  5 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  3 ) = Trim$(Replace(Replace(Paragraphs(i +  4 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  4 ) = Trim$(Replace(Replace(Paragraphs(i +  3 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  5 ) = Trim$(Replace(Replace(Paragraphs(i +  2 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  6 ) = Trim$(Replace(Replace(Paragraphs(i +  1 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
    End With
    i = i +  5 
    k = k +  1 
End If
i = i +  1 
Loop

Err:
If Err.Number <>  0  Then
    MsgBox Err.Number & vbCrLf & Err.Description, vbExclamation, "dung happens"
    Err.Clear
End If
Set wkS = Nothing
xlApp.Visible = True
Set xlApp = Nothing
End Sub
...
Рейтинг: 0 / 0
13.05.2010, 23:12
    #36626905
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Если не поздно,
спасибо, хороший код всегда "не поздно". С Вордом примеров мало хороших, я себе сохранил, не дай Бог пригодится
Вот только из модуля работать не захотел, я из документа запускал.
И как Вы там разобрались - на неполных 3 клиента 59 параграфов
...
Рейтинг: 0 / 0
13.05.2010, 23:23
    #36626917
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Hugo121, я везде 'Paragraphs' заменил на 'ThisDocument.Paragraphs' - так в модуле работает...
...
Рейтинг: 0 / 0
13.05.2010, 23:34
    #36626936
Получить цифры из word
Hugo121, vlth
с "процедуру добавить в модуль обрабатываемого документа" - действительно лажу написал, спасибо что поправили.
...
Рейтинг: 0 / 0
14.05.2010, 08:54
    #36627196
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Если не поздноHugo121, vlth
с "процедуру добавить в модуль обрабатываемого документа" - действительно лажу написал, спасибо что поправили.

Спасибо большое за участие, щас попробую...
...
Рейтинг: 0 / 0
14.05.2010, 09:04
    #36627209
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Если не поздноbeaver06,
примерное решение. На представленых Вами данных отрабатывает без ошибок.
+
процедуру добавить в модуль обрабатываемого документа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Sub ExpToXL()
Dim xlApp As Object, wkS As Object
Dim i As Long, k As Long

'открыть Excel, создать новую книгу, дать ссылку на первый лист
Set xlApp = CreateObject("Excel.Application")
Set wkS = xlApp.workbooks.Add.worksheets( 1 )

i =  1 
k =  1 
On Error GoTo Err
'цикл по всем _абзацам_ (и кто так строит!?) документа
Do Until i > Paragraphs.Count
If Left$(Paragraphs(i).Range.Text,  1 ) = "№" Then
    'нашли "строку" с номером, проверили, есть ли сам номер
    If i +  1  > Paragraphs.Count Then Exit Do
    'записали значение номера в Excel
    'rem убираем переводы строк
    wkS.Cells(k,  1 ) = Trim$(Replace(Paragraphs(i +  1 ).Range.Text, vbCr, ""))
    i = i +  1 
ElseIf Left$(Paragraphs(i).Range.Text,  6 ) = "Оплата" Then
    'нашли "строку" с цЫфрами, проверили, есть ли все поля
    If i +  5  > Paragraphs.Count Then Exit Do
    With wkS
        'записали значения цЫфр в Excel
        'NB! порядок абзацев в "строке" цЫфр отличается отвизуального
        '     в Excel выгружаем так, чтобы порядок соответствовал визуальному
        '     убираем переводы строк, разделители разрядов и концевые пробелы
        .Cells(k,  2 ) = Trim$(Replace(Replace(Paragraphs(i +  5 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  3 ) = Trim$(Replace(Replace(Paragraphs(i +  4 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  4 ) = Trim$(Replace(Replace(Paragraphs(i +  3 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  5 ) = Trim$(Replace(Replace(Paragraphs(i +  2 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
        .Cells(k,  6 ) = Trim$(Replace(Replace(Paragraphs(i +  1 ).Range.Text, vbCr, ""), Chr( 160 ), ""))
    End With
    i = i +  5 
    k = k +  1 
End If
i = i +  1 
Loop

Err:
If Err.Number <>  0  Then
    MsgBox Err.Number & vbCrLf & Err.Description, vbExclamation, "dung happens"
    Err.Clear
End If
Set wkS = Nothing
xlApp.Visible = True
Set xlApp = Nothing
End Sub


Что-то у меня открывает excel и он пустой. В чем может быть дело?
...
Рейтинг: 0 / 0
14.05.2010, 09:09
    #36627217
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06, добавьте в код строку
Msgbox Paragraphs.Count
Если покажет цифры 59 - будем дальше искать, а если пустое окно - вот как раз то, о чём выше гоаорили.
...
Рейтинг: 0 / 0
14.05.2010, 09:10
    #36627218
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Например после строк
i = 1
k = 1
...
Рейтинг: 0 / 0
14.05.2010, 09:13
    #36627225
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Hugo121beaver06, добавьте в код строку
Msgbox Paragraphs.Count
Если покажет цифры 59 - будем дальше искать, а если пустое окно - вот как раз то, о чём выше гоаорили.

Пусто, и куда дальше копать?
...
Рейтинг: 0 / 0
14.05.2010, 09:15
    #36627227
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06Hugo121beaver06, добавьте в код строку
Msgbox Paragraphs.Count
Если покажет цифры 59 - будем дальше искать, а если пустое окно - вот как раз то, о чём выше гоаорили.

Пусто, и куда дальше копать?

если MsgBox Paragraphs.Count то error 424 object required. Если MsgBox Paragraphs то пустой msgbox.
...
Рейтинг: 0 / 0
14.05.2010, 09:29
    #36627250
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06,

выше
...
Рейтинг: 0 / 0
14.05.2010, 09:34
    #36627259
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
vlthbeaver06,

выше

А что выше?
Это - я везде 'Paragraphs' заменил на 'ThisDocument.Paragraphs' . Я так и сделал - все равно пусто...
...
Рейтинг: 0 / 0
14.05.2010, 09:37
    #36627264
vlth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06, ну как же везде?
MsgBox Paragraphs .Count то error 424 object required. Если MsgBox Paragraphs то пустой msgbox
...
Рейтинг: 0 / 0
14.05.2010, 09:46
    #36627280
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
vlthbeaver06, ну как же везде?
MsgBox Paragraphs .Count то error 424 object required. Если MsgBox Paragraphs то пустой msgbox

Понял... Выдает 1
...
Рейтинг: 0 / 0
14.05.2010, 09:48
    #36627282
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06, вообще я обычно гоню код по F8 и смотрю, что делается. Т.к. было видно, что внутрь цикла код не заходил, я проверил, видит ли он вообще параграфы, можно через мессидж, а я через дебуг.принт смотрел. Это так, технология, чтоб сам учился разбираться...
...
Рейтинг: 0 / 0
14.05.2010, 10:00
    #36627302
beaver06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
Hugo121beaver06, вообще я обычно гоню код по F8 и смотрю, что делается. Т.к. было видно, что внутрь цикла код не заходил, я проверил, видит ли он вообще параграфы, можно через мессидж, а я через дебуг.принт смотрел. Это так, технология, чтоб сам учился разбираться...

Это-то я вижу. Так ThisDocument.Paragraphs.Count равен 0, и поэтому чицкл проходит только один раз и сваливает
...
Рейтинг: 0 / 0
14.05.2010, 10:16
    #36627339
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить цифры из word
beaver06, ну вот. А в Вашем файле 59 параграфов.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Получить цифры из word / 25 сообщений из 47, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]