Страница: 1 |
Страница: 1 |
Вопрос: Replace Текст в файле Офиса
Добавлено: 19.11.06 20:04
Автор вопроса: HACKER
Нужно получить текст из файла офиса (Excel and Word), кое-что в нем изменить, и сохранить обратно...
Но НЕНАРУШИВ структуру самого документа, и форматирование текста...
Например в 1.doc в какой-то табличке, в какой-то ячейки, есть "Привет вася", мне нужно вася заменить на петя, при этом чтобы все табличке остались на своем месте, не изменилось форматирование надписи Привет вася итп итд...
Короче чтобы изменилось только то, что мне нужно! :)
В дебрях инета нашел, как прочитать/записать в doc... Но форматирование нарушается, всем табличам торба :)
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
Макросы рулят!
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
А вот и эксель
'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
Ой да ладно.
Наверняка успешно замаскированый, но не менее банальный
Номер ответа: 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
Нее.. там есть какой флаг(точно не помню), который говорит о том, что книга уже сохранена, и тогда при закрытии книги он никаких вопросов не задает..
Номер ответа: 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
Номер ответа: 14
Автор ответа:
night-roll
Вопросов: 36
Ответов: 326
Профиль | | #14
Добавлено: 20.11.06 22:04