Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2013, 12:27   #1
IgorDn
Новичок
Джуниор
 
Регистрация: 22.04.2013
Сообщений: 2
По умолчанию Автоматизированный перенос данных

Добрый день.
Помогите пожалуйста разрешить следующую проблему с автоматизацией процесса.
Есть текстовая информация в следующем виде: ФИО………. Адрес………..номер тел………email……..
Необходимо данную информацию перенести в таблицу Excel, затем эти же данные вставить в нужные поля шаблона в Word, а затем перенести эти данные в текстовые поля браузера.
Так как данной информации очень много, физически невозможно всё это делать вручную. Заранее спасибо за помощь.
IgorDn вне форума Ответить с цитированием
Старый 22.04.2013, 13:26   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Зачем такой сложный цикл переносов?
(TXT -> EXCEL -> WORD -> браузер)

попроще-то никак? зачем в браузер? дайте ссылку на страницу, куда надо вставлять эти данные, и напишите, что должно получиться.


1) Преобразование TXT -> EXCEL делается вручную, через опцию Excel «текст по столбцам»

2) EXCEL -> WORD (заполнение шаблонов) проще всего сделать этой программой:
http://ExcelVBA.ru/programmes/FillDocuments

3) для подстановки в поля браузера — готового решения нет.


PS: Можно сделать специализированный макрос, который все быстро сделает по нажатию одной кнопки, — но вряд ли кто возьмётся делать всё «от и до» бесплатно.
EducatedFool вне форума Ответить с цитированием
Старый 23.04.2013, 11:40   #3
IgorDn
Новичок
Джуниор
 
Регистрация: 22.04.2013
Сообщений: 2
По умолчанию

Такой цикл переносов нужен, потому что данные используются для разных целей потом. Изначально данные приходят в txt сплошной строкой. Вручную это можно делать когда объём небольшой, но сейчас такие действия приходится делать раз по 100 в день
Может подскажете, как можно разбирать текстовый файл и вставлять нужные слова в уже готовую таблицу excel? Например исходные данные в таком виде у меня:
Вложения
Тип файла: zip Данные.zip (1.9 Кб, 12 просмотров)
IgorDn вне форума Ответить с цитированием
Старый 23.04.2013, 12:14   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Данные не в лучшем виде, имхо вывод писал плохой программист. Как минимум программист-эгоист...

Исходя из содержимого архива код:


Код:
Sub tt()

    Set fso = CreateObject("Scripting.FileSystemObject")
    MyPath = ThisWorkbook.Path

    Set ts = fso.OpenTextFile(MyPath & "\Данные.txt", 1)
    s = ts.ReadAll
    ts.Close

    For Each el In Array("ФИО: ", "адрес: ", "ФИО директора предприятия: ", "Вид деятельности: ")
        s = Replace(s, el, vbTab)
    Next
    
    a = Split(s, vbTab)

    ReDim b(1 To 1, 1 To 4)

    For i = 1 To 4: b(1, i) = a(i): Next

    ThisWorkbook.Sheets(3).Cells(Rows.Count, "A").End(xlUp)(2).Resize(1, 4) = b

End Sub
На практике думаю всё сложнее, но уж что показали

Можно уплотнить
Код:
Sub ttt()

    Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(ThisWorkbook.Path & "\Данные.txt", 1): s = ts.ReadAll: ts.Close
    For Each el In Array("ФИО: ", "адрес: ", "ФИО директора предприятия: ", "Вид деятельности: "): s = Replace(s, el, vbTab): Next
    a = Split(s, vbTab): ReDim b(1 To 1, 1 To 4): For i = 1 To 4: b(1, i) = a(i): Next
    ThisWorkbook.Sheets(3).Cells(Rows.Count, "A").End(xlUp)(2).Resize(1, 4) = b

End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 23.04.2013 в 12:45.
Hugo121 вне форума Ответить с цитированием
Старый 23.04.2013, 19:18   #5
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию

Добрый день.
Помогите ,пожалуйста:все также,но даные в *txt иные.
Спасибо.
Вложения
Тип файла: rar _LA.rar (7.1 Кб, 10 просмотров)

Последний раз редактировалось ABA2; 23.04.2013 в 22:07. Причина: Дополнение
ABA2 вне форума Ответить с цитированием
Старый 23.04.2013, 23:20   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

ABA2, макрорекордер Вам в помощь:
Код:
Option Explicit

Sub Макрос1()
'
' Макрос1 Макрос
'

'
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\Temp\ABA2\__LA_.txt", _
        Destination:=Range("$A$1"))
        .Name = "__LA_"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1251
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 1, 1, 1, 5)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
Можно конечно и мой код выше приспособить:
Код:
Sub ttt()

    Set ts = CreateObject("Scripting.FileSystemObject").OpenTextFile(ThisWorkbook.Path & "\__LA_.txt", 1)
    a = Split(ts.ReadAll, vbNewLine): ts.Close
    ReDim b(1 To UBound(a) + 1, 1 To 5)
    For i = 0 To UBound(a)
        If Len(a(i)) Then
            c = Split(a(i), vbTab): ii = ii + 1
            For x = 0 To UBound(c)
                If x = 3 Then b(ii, x + 1) = --(c(x)) Else b(ii, x + 1) = Trim(c(x))
            Next
        End If
    Next
    ThisWorkbook.Sheets(1).Cells(Rows.Count, "A").End(xlUp)(2).Resize(ii, 5) = b

End Sub
Только с форматом даты не понял - в тексте иначе. Сделал как в тексте. Ну это мелочи, можно подкрутить, если нужно...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.04.2013, 23:57   #7
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию

Уже в течение почти двух лет использоваю написан с макрорекордером-только с _Destination:=ActiveCell_ .Хотел красивее и без отметки,и вниз последовательно.Второй код очень подходит,за что -большое спасибо!
С уважением!
ABA2 вне форума Ответить с цитированием
Старый 24.04.2013, 00:20   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну можно и в том макрорекордерном кодом определить нужную ячейку (ThisWorkbook.Sheets(1).Cells(Rows. Count, "A").End(xlUp)(2))
У меня правда не получилось корректно скопировать кодировку (литовский?), вероятно нужно подкрутить в системе, или текстовый файл не совсем тот... Но мне это и не нужно
Да, и с датой посмотрите, всё ли устраивает - второй код даёт просто текст, вероятно нужно подправить.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2013, 00:36   #9
ABA2
Пользователь
 
Регистрация: 13.07.2010
Сообщений: 20
По умолчанию

С датой все OK.
Просто забыл написать,что row 100 c данными.Толко Column 5 свободныи.

Как обойти?
ABA2 вне форума Ответить с цитированием
Старый 24.04.2013, 00:58   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не понял. Что именно обойти?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MySQL перенос данных между базами данных с MyDAC Nikolay88 БД в Delphi 3 14.05.2011 00:17
Автоматизированный фильтр kzld Microsoft Office Excel 3 06.04.2011 15:57
Изменение данных и перенос данных из одной таб в другую Kot9ra Microsoft Office Access 13 02.07.2010 12:22
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30
Автоматизированный PrintScreen Ratmir_1 Общие вопросы Delphi 4 13.11.2008 06:21