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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2010, 13:34   #1
andreton
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 25
По умолчанию копирование из txt файла в ячейки exel

Доброго времени суток!

Помогите, плиз, решить задачу! Может и решение моментальное уже есть?...

Имеется файл excel - file.xls, файл txt - file.txt, и папка с файлами jpg - images (все в приложении).

1) нужно из txt переместить инфу в exel, но строго так, как показано в file.xls. пример показан по двум позициям, таких позиций множество!

2)автоматически сделать записи в ячейках гипперссылками на эти же файлы в папке images

Желательно, чтобы эти две задачи выполнялись по очередности: сначала 1, потом 2.
Вложения
Тип файла: rar primer.rar (555.8 Кб, 17 просмотров)
andreton вне форума Ответить с цитированием
Старый 04.06.2010, 14:36   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Фотографий всегда по 3 штуки?
Или если нет - в конце всегда _n.jpg? И n всегда однозначное?
Хотя не важно.. Важно - после одинакового названия отеля всегда "_"? Надо же к чему-то привязаться...
Но это не значит, что я берусь делать
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 04.06.2010 в 14:40.
Hugo121 вне форума Ответить с цитированием
Старый 04.06.2010, 15:09   #3
andreton
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 25
По умолчанию

Количество может быть разным, но не больше 20 штук. А вот "_" всегда есть.

Help, кто знает, и кто берется...
andreton вне форума Ответить с цитированием
Старый 04.06.2010, 15:30   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

текстовый файл в одной папке с файлом XLS
В текстовике смените кодировку с USC-2 на ANSI ИНАЧЕ КИНА НЕ БУДЕТ
Код:
Sub Part_1()

Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim s, d, rez As String
Dim i As Long, m As Long

Set Txt = oFSO.OpenTextFile(ThisWorkbook.Path & "\file.txt", 1, False)
    i = l
    m = 1
   s = Replace(Txt.readline, Chr(9), "")
   
 d = Split(s, "_", -1)
 rez = d(0)

  Sheets("Лист1").Hyperlinks.Add Anchor:=Cells(i, m), Address:= _
         s, TextToDisplay:=s
Do
On Error GoTo 7
  s = Replace(Txt.readline, Chr(9), "")
  d = Split(s, "_", -1)
 If rez = d(0) Then
  m = m + 1
   Sheets("Лист1").Hyperlinks.Add Anchor:=Cells(i, m), Address:= _
         s, TextToDisplay:=s
 Else
 i = i + 1:m = 1
   Sheets("Лист1").Hyperlinks.Add Anchor:=Cells(i, m), Address:= _
         s, TextToDisplay:=s
 End If
  rez = d(0)
Loop
7
Set oFSO = Nothing
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 04.06.2010, 16:03   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот ещё вариант:

Код:
Sub main()
    txt = ReadTXTfile(Replace(ThisWorkbook.FullName, "xls", "txt"))
    Dim coll As New Collection, stopscan As Boolean: On Error Resume Next
    For Each ro In Split(txt, vbNewLine)
        res = Split(Split(ro, "/")(UBound(Split(ro, "/"))), "_")(0)
        coll.Add CStr(res), CStr(res)
    Next
    CurrentRow = 0    ' номер строки, с которой начинается вставка данных
    For Each res In coll
        Err.Clear: i = 0: stopscan = False: CurrentRow = CurrentRow + 1
        While Not stopscan
            i = i + 1: txt = "images\" & res & "_" & i & ".jpg"
            If Dir(Replace(ThisWorkbook.FullName, ThisWorkbook.Name, txt)) <> "" Then
                Cells(CurrentRow, i).FormulaLocal = "=ГИПЕРССЫЛКА(""" & txt & """)"
            Else
                stopscan = True
            End If
        Wend
    Next
End Sub

Sub ClearAll()
    ActiveSheet.UsedRange.Clear
End Sub

Function ReadTXTfile(ByVal filename As String) As String
    Set fso = CreateObject("scripting.filesystemobject")
    Set ts = fso.OpenTextFile(filename, 1, True): ReadTXTfile = ts.ReadAll: ts.Close
    Set ts = Nothing: Set fso = Nothing
End Function
И пример в виде файла: (сохраните его под именем file.xls)



Внимание: как сказал doober, смените кодировку текстового файла на ANSI, иначе и в моём случае кина не увидите...
EducatedFool вне форума Ответить с цитированием
Старый 04.06.2010, 16:26   #6
andreton
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 25
По умолчанию

Спасибо, EducatedFool!
Ваш вариант сработал сразу же!

И Doober тоже thanks!
Но ваш вариант выдал ошибку
Вот здесь:
Код:
Sheets("Лист1").Hyperlinks.Add Anchor:=Cells(i, m), Address:= _
         s, TextToDisplay:=s
В чем может быть дело?
andreton вне форума Ответить с цитированием
Старый 04.06.2010, 16:34   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я не поставил обработку ошибок,значит в текстовике есть еще другой текс еили пустые строки
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автоматический импорт txt файлов в exel andreton Microsoft Office Excel 5 01.06.2010 01:29
копирование из ячейки таблицы в edit xaero93 БД в Delphi 2 23.10.2009 11:46
Не могу получить адрес найденой ячейки в Exel R_Z Microsoft Office Excel 5 13.09.2009 22:06
Копирование текста ячейки 2 цветов WIC Microsoft Office Excel 3 24.09.2007 13:32