Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Replace Текст в файле Офиса Добавлено: 19.11.06 20:04  

Автор вопроса:  HACKER
Нужно получить текст из файла офиса (Excel and Word), кое-что в нем изменить, и сохранить обратно...

Но НЕНАРУШИВ структуру самого документа, и форматирование текста...

Например в 1.doc в какой-то табличке, в какой-то ячейки, есть "Привет вася", мне нужно вася заменить на петя, при этом чтобы все табличке остались на своем месте, не изменилось форматирование надписи Привет вася итп итд...

Короче чтобы изменилось только то, что мне нужно! :)

В дебрях инета нашел, как прочитать/записать в doc... Но форматирование нарушается, всем табличам торба :)

Option Explicit
              
Dim objWord  As Word.Application
             
             
        Private Sub Command1_Click()
        
        On Error Resume Next
        
        Dim strDocPath As String, D
        
        strDocPath = "C:\1.doc"
        
        Set objWord = New Word.Application
        
        objWord.Visible = False
        objWord.Documents.Open strDocPath, False
        
        
        objWord.Selection.WholeStory
        
        D = objWord.Selection.Text
        
        objWord.Selection.Text = Replace(D, "вася", "петя")
        
        objWord.ActiveDocument.Close
        
        objWord.Quit
        
        Set objWord = Nothing
        
        MsgBox D
        
        End Sub

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 19.11.06 21:10
Макросы рулят! :)

        Private Sub Command1_Click()
        
        On Error Resume Next
        
        Dim strDocPath As String, D
        
        strDocPath = "C:\1.doc"
        
        Set objWord = New Word.Application
        
        objWord.Visible = False
        objWord.Documents.Open strDocPath, False
        
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        
        With objWord.Selection.Find
            .Text = "вася"
            .Replacement.Text = "петя"
            .Forward = True
            .Wrap = wdFindContinue
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        
        objWord.ActiveDocument.Close
        objWord.Quit
        Set objWord = Nothing
        End Sub


Отдельный Respect Brand'y and BUG(O)R'у...

Ответить

Номер ответа: 2
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #2 Добавлено: 19.11.06 21:31
А вот и эксель :)

        Private Sub Command1_Click()
         
        'On Error Resume Next
         
        Dim strDocPath As String, D
         
        strDocPath = "C:\Documents and Settings\RUSYA\Рабочий стол\отчеты\отчеты\Копия 2-ндфл цуканов за 2006г.xls"
         
        Set objWord = New Excel.Application
         
        objWord.Visible = False
        objWord.Workbooks.Open strDocPath
         
        Cells.Replace What:="Андрей", Replacement:="Вася", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        objWord.SaveWorkspace
        
        objWord.Workbooks.Close
        
        objWord.Quit
        Set objWord = Nothing
        End
        End Sub


Только вопрос, как сделать чтобы он у меня ничего не спращивал? :) А то он при закрытии спрашивает сохранить ли изминения :)

Ответить

Номер ответа: 3
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #3 Добавлено: 19.11.06 22:28
Люди, почему никто не говорит 20 WMZ????

Ответить

Номер ответа: 4
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #4 Добавлено: 19.11.06 23:04
:))) Ну т.к. пока только я отвечал на свои вопросы, говорить 20 WMZ самому себе как-то стремно :) Т.к. с далека можно будет подумать, что программировать мне хватит :) И вообще мой дом - 6-ая палата :)

Ответить

Номер ответа: 5
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #5 Добавлено: 20.11.06 00:05
Зато если б сам с себя потребовал 20 WMZ, весь vbnet бы неделю лежал...
Я как сам подумла об этом, минут 5 не мог прийти в себя :)

Вопрос в другом - зачем сначала писать вопрос на форуме а потом справшивать людей в аське? :)

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 20.11.06 01:00
зачем сначала писать вопрос на форуме а потом справшивать людей в аське?

Видимо это ... "контрольный в голову".. чтоб уж наверняка! ))

Ответить

Номер ответа: 7
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #7 Добавлено: 20.11.06 06:06
Ой да ладно.
Наверняка успешно замаскированый, но не менее банальный

System.Threading.Interock.Increment(PostsCount)

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 20.11.06 06:07
Вот ты тоже уже скоро меня догонишь :(

А потом и Hacker'а наверняка.

Ответить

Номер ответа: 9
Автор ответа:
 avdey



ICQ: 219571279 

Вопросов: 34
Ответов: 486
 Профиль | | #9 Добавлено: 20.11.06 12:14
Только вопрос, как сделать чтобы он у меня ничего не спращивал? :) А то он при закрытии спрашивает сохранить ли изминения :)

Наверно только SendKeys. Юзверь не успевает увидеть это окно, я пробовал.

Ответить

Номер ответа: 10
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #10 Добавлено: 20.11.06 13:19
Наверно только SendKeys

Нее.. там есть какой флаг(точно не помню), который говорит о том, что книга уже сохранена, и тогда при закрытии книги он никаких вопросов не задает..

Ответить

Номер ответа: 11
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #11 Добавлено: 20.11.06 13:43
Вроде так. Точно не помню.

    Ex.ActiveWorkbook.SaveAs SaveExcelFile
    Ex.ActiveWorkbook.Close False
    Ex.Quit
    Set Ex = Nothing

Ответить

Номер ответа: 12
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 20.11.06 17:06
Ну в аську потому что-то "горит" :)

2 AndreyMp
А если SaveExcelFile уже существует, он спрашивает перезаписать ли :)

Ответить

Номер ответа: 13
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #13 Добавлено: 20.11.06 17:38
 
А если SaveExcelFile уже существует, он спрашивает перезаписать ли :)

Там вроде еще куча флагов. Может что и подойдет.

Ответить

Номер ответа: 14
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #14 Добавлено: 20.11.06 22:04
Application.DisplayAlerts = False ' не спрашивать

:)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам