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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 16:04   #11
Niktoto
 
Регистрация: 10.04.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение

Код:
Sub ОткрытьДокументWord2()
    On Error Resume Next

    Set wa = CreateObject("Word.Application")    ' создаём приложение Word (без подключения библиотеки Word)

    wa.Visible = True    ' делаем Word видимым
    
    Set wd = wa.Documents.Open(ПутьКФайлу)
 
    wd.Paragraphs(18).Range.InsertAfter Текст    ' вставляем текст в нужное место (после 18-го параграфа)
    wd.Save    ' сохраняем документ
End Sub
Добрый день.
Для решения своей задачи я частично использовал этот код, но мне теперь надо в ворде найти определенный такст, например "1111", и заменить его на "2222".
И еще один вопросик, как потом вордовский файл сохранить под именем "2222" и закрыть его??

Заранее благодарен!
Niktoto вне форума Ответить с цитированием
Старый 10.04.2009, 16:16   #12
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Замените строку wd.Paragraphs(18).Range.InsertAfter Текст

на код:
Код:
    With wd.Range.Find
        .Text = "старый текст"
        .Replacement.Text = "новый текст"  ' текст для замены не должен превышать 255 символов
        .Forward = True
        .Execute Replace:=wdReplaceAll
    End With
    
    НовыйПутьКФайлу = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "2222.doc")
    wd.SaveAs НовыйПутьКФайлу ' документ сохранится в той же папке, что и книга Excel
    wd.Close
EducatedFool вне форума Ответить с цитированием
Старый 10.04.2009, 16:30   #13
Niktoto
 
Регистрация: 10.04.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Замените строку wd.Paragraphs(18).Range.InsertAfter Текст

на код:
Код:
    With wd.Range.Find
        .Text = "старый текст"
        .Replacement.Text = "новый текст"  ' текст для замены не должен превышать 255 символов
        .Forward = True
        .Execute Replace:=wdReplaceAll
    End With
    
    НовыйПутьКФайлу = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "2222.doc")
    wd.SaveAs НовыйПутьКФайлу ' документ сохранится в той же папке, что и книга Excel
    wd.Close
Большое спасибо!

С сохранением файля все ОК!

А с заменой не все так гладко. Макрос отрабатывает нормально, но замены не происходит. Не подскажете с чем это связано?
Niktoto вне форума Ответить с цитированием
Старый 10.04.2009, 16:35   #14
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код проверял. Точно работает. Заменяет.
У вас данные для замены случайно не в таблице?

Попробуйте убрать строку On Error Resume Next - тогда, может быть, увидите, в чём ошибка.
EducatedFool вне форума Ответить с цитированием
Старый 10.04.2009, 16:45   #15
Niktoto
 
Регистрация: 10.04.2009
Сообщений: 3
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Код проверял. Точно работает. Заменяет.
У вас данные для замены случайно не в таблице?

Попробуйте убрать строку On Error Resume Next - тогда, может быть, увидите, в чём ошибка.
У меня строки "он ерор" нету (
а данные для замены находятся как в таблице так и вне ее, для каждого варианта нужен свой алгоритм?

Вот вложенные файлы, если не трудно, помогите пожалуйста!

Заранее благодарен!
Вложения
Тип файла: rar Client.rar (22.9 Кб, 20 просмотров)
Niktoto вне форума Ответить с цитированием
Старый 10.04.2009, 18:26   #16
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Из-за SendKeys для Word и Excel 97 это не годится; в 2003-х — работает.
Прямо в архиве кнопка (opWo) не работает, но можно скачать. И по альт-F11 посмотреть и скопировать выШЕприведённый код.
Чуть не забыл! В посте «Эксперименты с ВБА» макрос, открывающий Ворд из Эксселя, запускается по альт-F8, прямо из архива!

Последний раз редактировалось Sasha_Smirnov; 10.04.2009 в 18:34.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 13.04.2009, 04:36   #17
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Цитата:
Сообщение от Sasha_Smirnov Посмотреть сообщение
Код:
strDumn = Dir("*.doc*") 'имя 1-го документа Word в ТЕКУЩЕЙ ПАПКЕ'
Как выяснилось, текущей папкой для Dir являются обычно* Мои документы.
_____________________________
* можно через настройки Windows её изменить, но это уже другая тема
Sasha_Smirnov вне форума Ответить с цитированием
Старый 15.10.2009, 11:43   #18
prima
 
Регистрация: 15.10.2009
Сообщений: 4
По умолчанию

Подскажите, пожалуйста можно ли как-то сделать, чтобы с помощью макроса в документ .exl копировались данные из документа .word, находящиеся в таблице
prima вне форума Ответить с цитированием
Старый 03.03.2015, 15:16   #19
alexanr
Новичок
Джуниор
 
Регистрация: 03.03.2015
Сообщений: 1
Печаль путь к файлу относительно открытого документа

Я первый раз пытаюсь написать макрос, голову сломал ни чего не понимаю,
может тут кто то поможет, есть несколько разных отчетов из SQL в формате *.CVS. Хотелось бы импортировать данные из этих файлов.

В таком виде все работает, но меня не устраивает что нельзя перемещать папку.
PHP код:
With ActiveSheet.QueryTables.Add(Connection:= _
        
"TEXT;C:\Users\Desktop\report\report1.csv"Destination _
        
:=Range("$A$1"))
        
'.CommandType = 0'
        
.Name "report1_14" 
Хотелось бы использовать ту папку в которой лежит сам проект, и иметь возможность ее перемещать.

PHP код:
With ActiveSheet.QueryTables.Add(Connection:= _
        
"TEXT;CurrentProject.Path & \report1.csv"Destination _
        
:=Range("$A$1"))
        
'.CommandType = 0'
        
.Name "report1_14" 
В таком виде говорит что файл не найден .
Как быть ? помогите пожалуйста !
alexanr вне форума Ответить с цитированием
Старый 03.03.2015, 15:22   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не проверял.

попробуйте так:

Код:
With ActiveSheet.QueryTables.Add(Connection:= _ 
        "TEXT;" & Application.ActiveWorkbook.Path & "\report1.csv", _ 
        Destination :=Range("$A$1"))
        '.CommandType = 0' 
        .Name = "report1_14"
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ОТКРЫТИЕ DOC ФАЙЛОВ KurtWagner Компоненты Delphi 3 04.02.2009 11:47
Запрет на открытие редактора VBA valerij Microsoft Office Excel 4 20.11.2008 18:28
Открытие .doc или .docx в MS Word MADDAN Microsoft Office Word 4 16.09.2008 21:55
Открытие файла с помощью моей программы igroman Общие вопросы Delphi 3 09.06.2008 09:12
При открытие в OpenDialog .doc-вский файл должен отображаться в RichEdit. doc to rtf Lemon Компоненты Delphi 9 07.06.2007 19:19