IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   обработка Excel (http://www.imho.ws/showthread.php?t=88930)

wolandino 10.07.2005 16:32

обработка Excel
 
Долго думал, куда поместить эту тему...
Понадеялся, быть может найдется какое-то программерское решение...

Есть некоторый файл Excel, заполненный ссылками, типа www.site.ru?id==5, нужно изменить все ссылки на http://www.site.ru?id==5&id2====5

Ссылок много... как это можно реализовать?

papoose 11.07.2005 08:45

Если адреса все одинаковые т.е. все ссылки одинаковые: www.site.ru?id==5, то Правка->Заменить... В поле найти:www.site.ru?id==5, заменить на: http://www.site.ru?id==5&id2====5. Ну ижмём заменить всё.

wolandino 11.07.2005 10:25

видимо, я неправильно задал вопрос - есть куча ссылок, идентификатор в которых различный, поэтомум правка->заменить не подойдет...

как в MFC работать с экселевскими файлами можно?

SergoZD 11.07.2005 10:52

wolandino
Using Regular Expressions
Внизу прилеплен зиповский файл, там файл Excel с примерами regexp.
Поизучай макросы, да попробуй на их основе свой накатать.

EvroStandart 11.07.2005 12:05

Можно просто через соединение строк. В другой колонке прописать функцыю типа такого: "http://" & A1
Или через макрос аналогично соединить строки.

wolandino 11.07.2005 12:26

спасибо, я попробую

SergoZD 11.07.2005 16:50

wolandino
Создай в Excel макрос следующего содержания:
Код:

Sub RegExp_Late_Execute_2()
Dim RegEx As Object, RegMatchCollection As Object
Dim Myrange As Range, C As Range, OutPutStr As String
Dim i          As Long

    Set RegEx = CreateObject("vbscript.regexp")

    With RegEx
        .Global = True
        .IgnoreCase = True
        .Pattern = "(\d)+"
    End With

    Set Myrange = ActiveSheet.Range("A1:A10")

    For Each C In Myrange
        OutPutStr = ""
        Set RegMatchCollection = RegEx.Execute(C.Value)

        If RegMatchCollection.Count > 0 Then
            OutPutStr = ""
            For i = 0 To RegMatchCollection.Count - 1 Step 1
                OutPutStr = OutPutStr & " " & RegMatchCollection(i)
            Next
            C.Offset(0, 1) = "http://www.site.ru?id==" & RegMatchCollection(0) & "&id2====" & RegMatchCollection(0)
        End If
    Next

    Set RegMatchCollection = Nothing
    Set RegEx = Nothing
    Set Myrange = Nothing

End Sub

То что выделено красным, необходимо исправить. Указаны ячейки таблицы, в которых лежат исходные ссылки.
В итоге рядом с исходным столбцом получится желаемый.
Делал из какого-то примера с уровнем знаний в данном вопросе = нулю, так что сильно не пинать. Главное работает как требуется.
Код:

www.site.ru?id==1  http://www.site.ru?id==1&id2====1
www.site.ru?id==2  http://www.site.ru?id==2&id2====2
www.site.ru?id==3  http://www.site.ru?id==3&id2====3
www.site.ru?id==4  http://www.site.ru?id==4&id2====4
www.site.ru?id==5  http://www.site.ru?id==5&id2====5
www.site.ru?id==6  http://www.site.ru?id==6&id2====6
www.site.ru?id==7  http://www.site.ru?id==7&id2====7
www.site.ru?id==8  http://www.site.ru?id==8&id2====8
www.site.ru?id==9  http://www.site.ru?id==9&id2====9
www.site.ru?id==10  http://www.site.ru?id==10&id2====10


wolandino 12.07.2005 00:36

спасибо большое... (никаких приватов, родина должна знать своих героев))

Хотя все оказалось проще... нужно было просто открыть файл в текстовом редакторе и воспользоваться мощной функцией автозамены :cool:


Часовой пояс GMT +4, время: 15:59.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.