Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
1

Вставка текста в несколько файлов

27.11.2016, 11:44. Показов 2221. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно вставить фрагмент (строку) текста в несколько файлов. Не могу понять, что не получается. Помогите, люди добрые
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Insert()
On Error Resume Next
Dim picker As New FilePicker
Dim wordApp As Application
Dim wordDocument As Word.Document
 
picker.pickFile "Word files", Array("*.doc;*.docx;*.docm")
If UBound(picker.items) < 0 Then: Exit Sub
 
 
Set wordApp = New Application
wordApp.Visible = True
 
Application.DisplayAlerts = wdAlertsNone
wordApp.DisplayAlerts = wdAlertsNone
 
For Each FileName In picker.items
Set wordDocument = wordApp.Documents.Open(FileName)
With wordDocument
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.TypeText Text:="=====+++++======"
 
End With
wordDocument.Close SaveChanges:=True
Next
wordApp.Quit
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2016, 11:44
Ответы с готовыми решениями:

Разбиение текста для записи в несколько файлов
Здравствуйте уважаемые форумчане. Я еще только начинаю изучать С++. Надеюсь на вашу помощь. В...

Вывод текста командой ECHO сразу в несколько файлов
Одно и тоже приходится записывать через echo в разные файлы. Сделал так echo data...

Вставка текста до выделенного текста и после текста
Ребят, помогите решить задачку. Есть RichBox и в нем некий текст. Я выделил часть текста и при...

Вставка в тескт нужных символов с конца текста и сохранить в формате текста
Как вставить с другой ячейки и символы цифры считая с конца в такой формат есть ячейки С ...

25
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.11.2016, 14:24 2
Что за FilePicker?
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
27.11.2016, 17:03  [ТС] 3
Файлы из окна выбирает
Там все нормально, вроде
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Public Sub pickFile(Optional ftype = "Text file", Optional extensions = "", Optional multiselect = True)
    Dim filePick As FileDialog
    Set filePick = Nothing
    Set filePick = Application.FileDialog(msoFileDialogFilePicker)
    filePick.Filters.Clear
    For Each ext In extensions
        filePick.Filters.Add ftype, ext
    Next
    filePick.AllowMultiSelect = multiselect
    filePick.Show
    
    selected = False
    If filePick.SelectedItems.Count = 0 Then: Exit Sub
    selected = True
    ReDim items(filePick.SelectedItems.Count - 1)
    For I = 0 To filePick.SelectedItems.Count - 1
        items(I) = filePick.SelectedItems(I + 1)
    Next
End Sub
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.11.2016, 17:08 4
Что выбирает файлы - это понятно. Но у меня его и его кода нет. Но ладно...
Вот когда пишите
with что-то
end with
то внутри логично это что-то использовать, чего не наблюдаю.
Да и не ясно где вообще работает этот код, а это тоже важно.
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
27.11.2016, 17:11  [ТС] 5
Не работают Selections со вставкой текста, А файлы перебираются
0
6922 / 2832 / 543
Регистрация: 19.10.2012
Сообщений: 8,645
27.11.2016, 17:12 6
Попробуйте перед selection поставить точки.
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
27.11.2016, 17:15  [ТС] 7
Пробовал по всякому. Не могу включить Selections. Find and replace работает внутри этой конструкции. Как вставить несчастную строчку
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
27.11.2016, 19:46 8
qwertt, откуда запускается код? - если из ворда, то не понятно зачем Вы создаете еще один его экземпляр ... причем здесь Find, если изначально говорится о добавлении текста?

Добавлено через 17 минут
Если запуск из ворда
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Insert()
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Filters.Clear
        .Filters.Add "Word files", "*.doc;*.docx;*.docm"
        If Not .Show Then Exit Sub
        Application.DisplayAlerts = wdAlertsNone
        Application.ScreenUpdating = False
        For Each FileName In .SelectedItems
            With Documents.Open(FileName)
                .Range.InsertAfter "=====+++++======"
                .Close True
            End With
        Next
    End With
    Application.ScreenUpdating = True
    Application.DisplayAlerts = wdAlertsAll
End Sub
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
28.11.2016, 00:07  [ТС] 9
Step UA, большое спасибо. Все работает. Если можно, еще вопрос. Строка, которую нужно вставить это несколько пробелов. Я это число передал через форму, как и номер строки. С номером строки понятно через count. Как использовать количество позиций. Еще раз благодарю
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
28.11.2016, 00:29 10
Цитата Сообщение от qwertt Посмотреть сообщение
Как использовать количество позиций.
Если под количеством позиций подразумевается количество пробелов
Visual Basic
1
.Range.InsertAfter Space(КоличествоПробелов)
... или уточните, что подразумевается под количеством позиций
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
05.12.2016, 21:50  [ТС] 11
Step_UA
Объясните идиоту
С 5-той страницей документа нужно изменить межстрочный интервал и удалить надписи

Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=5
With Selection
.ParagraphFormat.LineSpacing = LinesToPoints(33068)
For Each sh In Selection.Shapes

sh.Delete

Next sh
End With

Что не так
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
05.12.2016, 22:30 12
Цитата Сообщение от qwertt Посмотреть сообщение
Selection.GoTo ...
переходит в начало страницы без выделения ее содержимого, соответственно не содержит надписи и абзацы. Необходимы изменения только для 5-й страницы или начиная с 5-й страницы до конца документа?
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
05.12.2016, 22:51  [ТС] 13
Только 5-й, вообще любой, но одной

Добавлено через 42 секунды
Вводится из формы

Добавлено через 16 минут
Надписи удаляются непредсказуемо через одну
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
05.12.2016, 23:20 14
Лучший ответ Сообщение было отмечено qwertt как решение

Решение

Цитата Сообщение от qwertt Посмотреть сообщение
Только 5-й, вообще любой, но одной
Будет обработан диаппазон страницы без учета изменений, выполняемых в коде (перенос строк следующей страницы на обрабатываемую вследствии изменения межстрочного интервала, удаления надписей и т.п.)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  Dim pageRange As Range, i&
    ' определение начала требуемой страницы - 5
    Set pageRange = ActiveDocument.Range.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=5)
    ' позиция первого символа следующей страницы
    i = pageRange.GoToNext(wdGoToPage).End
    ' определение диаппазона страницы
    If pageRange.Start = i Then
        ' последняя страница
        pageRange.End = ActiveDocument.Range.End ' диаппазон до конца документа
    Else
        ' существует страница после
        pageRange.End = i - 1   ' диаппазон до начала следующей страницы
    End If
    
    pageRange.ParagraphFormat.LineSpacing = 14 ' устанавливаем межстрочный интервал
    ' удаляем надписи
    For i = 1 To pageRange.ShapeRange.Count
        pageRange.ShapeRange(1).Delete
    Next
Цитата Сообщение от qwertt Посмотреть сообщение
Надписи удаляются непредсказуемо через одну
Не используйте цикл For Each при удалении ...
1
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
05.12.2016, 23:21  [ТС] 15
'
Visual Basic
1
2
3
4
5
6
7
8
9
10
Выделяем 5-ю строку
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=5
Set sPages = Selection.Range
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=5
sPages.End = Selection.Bookmarks("\Page").Range.End
sPages.Select
 
For Each sh In sPages.ShapeRange
   sh.Delete
Next sh
Удаляютсе не все и не на той странице
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
05.12.2016, 23:29 16
Лучший ответ Сообщение было отмечено qwertt как решение

Решение

Быстрее будет без работы с Selection
Visual Basic
1
2
3
4
5
6
7
 Set spages = ActiveDocument.Range.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=3)
 spages.End = spages.Bookmarks("\Page").Range.End
 ' spages.Select
 
 For i = 1 To spages.ShapeRange.Count
    spages.ShapeRange(1).Delete
 Next
1
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
05.12.2016, 23:58  [ТС] 17
Класс. Все работает. Большое спасибо
0
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
08.12.2016, 21:40  [ТС] 18
Уважаемый Step_UA
Когда в worde вставляешь в надпись текст из файла, он подгоняется под границы. Как это сделать в VBA
Visual Basic
1
2
3
4
5
6
7
8
Set Note = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, X, Y, 280, 18)
 
'Selection.InsertFile FileName:="table.docx"
With Note
.Line.Visible = msoFalse
'.InsertFile FileName:="table.docx"
 
End With
первая закомментированная вставляет текст без подгонки
Вторая вообще не работает

Надеюсь на помощь
0
1589 / 662 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
09.12.2016, 09:25 19
Лучший ответ Сообщение было отмечено qwertt как решение

Решение

Visual Basic
1
2
3
4
    Set Note = ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, X, Y, 280, 18)
    Note.TextFrame.TextRange.InsertFile "E:\тест.docx"
    ' след.стр. для автободбора размера под текст
    Note.TextFrame.AutoSize = True
1
0 / 0 / 0
Регистрация: 31.01.2015
Сообщений: 28
09.12.2016, 21:26  [ТС] 20
Step_UA
Еще раз спасибо.
Если не трудно, дайте ссылку на справочник по синтаксису VBA такому, полному. Ну как вот здесь догадаться
Успехов
0
09.12.2016, 21:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2016, 21:26
Помогаю со студенческими работами здесь

Вставка текста из одной ячейки в другую с добавлением текста макросом
Здравствуйте! Возникли сложности с созданием макроса. Нужно сделать макрос с вставкой текста из...

Вставка текста одновременно в 2 окна ввода текста
Добрый день! Помогите, пожалуйста. Есть код: Private Sub CommandButton4_Click() Dim oDataObject...

Вставка в textarea несколько id
Имеется код: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;content-type&quot;...

Создать типизированный файл, содержащий несколько строк текста, после чего вывести эти строки текста
Создать типизированный файл, содержащий несколько строк текста, после чего вывести эти строки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru