Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
1

Открыть ворд файл - для редактирования

11.01.2021, 19:08. Показов 1670. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте, делал миллион раз, правда давно))
Visual Basic
1
Documents.Open FileName:=f, ReadOnly:=True
в f у меня:
F:\Читальный зал.01.2021\12.rtf
говорит об ошибке 13-подскажите как правильно и как именно для редактирования, подзабыл? спс

Добавлено через 13 минут
проблема в пробеле пути к файлу, или в том, что ртф?

Добавлено через 4 часа 37 минут
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
проблема в пробеле пути к файлу, или в том, что ртф
проверил-нет не в этом проблема, подскажите как нужно? спс
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2021, 19:08
Ответы с готовыми решениями:

Через Ексель Открыть файл ВОРД и сохранить файл под определенным именем
Открываю через ексель файлы ворд и выполняю макрос ворд, но не получается сохранить файл под...

Как можно открыть активную ячейку для редактирования (F2) возможностями VBA в Ecxel?
Как можно открыть активную ячейку для редактирования (F2) возможностями VBA в Ecxel? Заранее...

Как открыть BAS-файл для редактирования?
Собственно говоря я знал два основных способа. 1. Надо запустить QBasic и через меню указать...

Открыть с VB Form БД *.mdb через Access для редактирования
Сразу прошу прощения, если повторяю вопрос и прошу не пинать, но поиск по форуму результатов не...

18
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
11.01.2021, 19:26 2
Ципихович Эндрю,
f как объявлена?
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
11.01.2021, 19:29  [ТС] 3
As Object

Добавлено через 1 минуту
в коде есть-For Each f In fs
значит стрингом нельзя объявить....
0
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
11.01.2021, 19:31 4
Ципихович Эндрю, попробуйте =Str(f)
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
11.01.2021, 19:32  [ТС] 5
на As Variant артачиться-вот новость

Добавлено через 1 минуту
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
в коде есть-For Each f In fs
значит стрингом нельзя объявить...
и значит как?
0
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
11.01.2021, 19:33 6
Ципихович Эндрю, не каждый variant, eсть object

Добавлено через 37 секунд
=Str(f) попробуйте
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
11.01.2021, 19:34  [ТС] 7
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Documents.Open FileName:=f
здесь?
0
Часто онлайн
864 / 579 / 263
Регистрация: 09.01.2017
Сообщений: 1,951
11.01.2021, 19:37 8
Ципихович Эндрю,
Visual Basic
1
Documents.Open FileName:=Str(f), ReadOnly:=True
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
11.01.2021, 19:43  [ТС] 9
убило , выложу, как есть, в чём я ошибаюсь?
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
28
29
30
31
32
33
34
35
36
37
38
Option Explicit
'
Sub Выполнить()
 
'отключаем обновление - дёргание экрана при выполнении кода
    Application.ScreenUpdating = False
 
    'необходимо подключить библиотеку Microsoft Scripting Runtime, в Tools References
    Dim FSO As New Scripting.FileSystemObject
    Dim fr As Object
    Dim fs As Object
    Dim f As Object
    Dim objWrdDoc As Document
    Dim q As Long
    Dim Найдено As Long
    Dim NumberSelectionParagraphs As Long
    'Полное_имя_файла_с_расширением_и_местом_его_нахождения = ActiveDocument.FullName
    Debug.Print ActiveDocument.FullName
    'Место_нахождения_файла = Replace$(ActiveDocument.FullName, ActiveDocument.Name, "")
    Debug.Print Replace$(ActiveDocument.FullName, ActiveDocument.Name, "")
    'Расширение_файла = CreateObject("Scripting.FileSystemObject").GetExtensionName(ActiveDocument)
    Debug.Print CreateObject("Scripting.FileSystemObject").GetExtensionName(ActiveDocument)
    'количество файлов в папке по адресу ..., если ответ получим Empty, значит, такой папки не существует
    'Количество_файлов_в_папке = CreateObject("Scripting.FileSystemObject").GetFolder(Папка).Files.Count
    Debug.Print CreateObject("Scripting.FileSystemObject").GetFolder(Replace$(ActiveDocument.FullName, ActiveDocument.Name, "")).Files.Count
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set fr = FSO.GetFolder(Replace$(ActiveDocument.FullName, ActiveDocument.Name, ""))
    Set fs = fr.Files
    For Each f In fs
        'Имя_файла_с_его_путём_и_расширением = f
        Debug.Print f
        'Расширение_файла = CreateObject("Scripting.FileSystemObject").GetExtensionName(f)
        Debug.Print CreateObject("Scripting.FileSystemObject").GetExtensionName(f)
        If LCase$(CreateObject("Scripting.FileSystemObject").GetExtensionName(f)) = "doc" Then    '"rtf" Then
            'Documents.Open(f, ReadOnly:=True, Visible:=True)
            Documents.Open FileName:=f, ReadOnly:=True
            'objWrdApp.Visible = False\True
            Debug.Print "Обрабатывается файл = " & objWrdDoc.FullName
Добавлено через 5 минут
ну если строки 34-36 заменить на
Visual Basic
1
2
3
 If LCase$(CreateObject("Scripting.FileSystemObject").GetExtensionName(f)) = "rtf" Then
            'Documents.Open(f, ReadOnly:=True, Visible:=True)
            Documents.Open FileName:=Str(f), ReadOnly:=True
то взрыв Ворда происходит....
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
11.01.2021, 20:18 10
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ReadOnly:=True
Открываешь файл только для чтения, и удивляешься почему нельзя редактировать?

Добавлено через 5 минут
Цитата Сообщение от КостяФедореев Посмотреть сообщение
попробуйте =Str(f)
Не вздумайте вставить в код. Потенциальный источник багов для некоторых товарищей.
1
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
11.01.2021, 20:20  [ТС] 11
Цитата Сообщение от I can Посмотреть сообщение
редактировать
редактировать-как? вылетело с головы
Цитата Сообщение от I can Посмотреть сообщение
Открываешь файл
так не открыл ещё не разу-всему беда
Visual Basic
1
Option Explicit
раньше то без него у меня было))
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
11.01.2021, 20:32 12
Цитата Сообщение от КостяФедореев Посмотреть сообщение
Str(f)
Мало того, что используется для приведения числового выражения типа Long в строку(тип String), так еще и пробел добавляет в начало. А если скормить не число, то будет ошибка несоответствия типов.

Добавлено через 9 минут
Ципихович Эндрю,
Visual Basic
1
    Documents.Open FileName:=trim(f)
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
11.01.2021, 20:42  [ТС] 13
вроде заработало, откуда там пробелы?
а как будет для редактирования?
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
11.01.2021, 21:06 14
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
а как будет для редактирования?
Это и есть для редактирования.

Добавлено через 39 секунд
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
ReadOnly:=True
А это - только для чтения.
2
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
12.01.2021, 09:04  [ТС] 15
понял, спс
наваждение какое-то вчера работало
сегодня на строке
Visual Basic
1
Set fld = fso.GetFolder(Replace$(ActiveDocument.FullName, ActiveDocument.Name, ""))
получаю ошибку 91-в чём может быть дело

Добавлено через 12 минут
с этим разобрался скажите на строки
Visual Basic
1
2
Debug.Print Len(Trim(fl))
        Debug.Print Len(fl)
ответ один и тот же
но строка
Visual Basic
1
Documents.Open FileName:=Trim(fl)
открывает файл, а строка
Visual Basic
1
Documents.Open FileName:=fl
не открывает файл? вау....
0
Заблокирован
12.01.2021, 10:13 16
Ципихович Эндрю, с новым годом.
Вы поймите, что
fl - это объект
fl.Path - это строка,
где Path - свойство fl по умолчанию
И если TRIM и LEN глотают это св-во из fl запросто - это не значит, что и Documents.Open это обязан делать...
Напишите
Visual Basic
1
Documents.Open FileName:=fl.Path
1
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
12.01.2021, 12:57  [ТС] 17
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Option Explicit
раньше то без него у меня было))
сейчас с ним, выложу, а то вдруг мне или кому ещё понадобится:
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
28
29
30
31
32
33
34
35
Option Explicit
'
Sub Выполнить()
 
'отключаем обновление - дёргание экрана при выполнении кода
    Application.ScreenUpdating = False
 
    'необходимо подключить библиотеку Microsoft Scripting Runtime, в Tools References
    Dim fso As New Scripting.FileSystemObject
    Dim fld As Scripting.Folder    'Folder-Папка
    Dim fl As Scripting.File    'File-Файл
    Dim q As Long
    Dim w As Long
    Dim Найдено As Long
    Dim Найденоsub As Long
    Dim Найденоsup As Long
    Dim NumberSelectionParagraphs As Long
    'Полное_имя_файла_с_расширением_и_местом_его_нахождения = ActiveDocument.FullName
    'Debug.Print ActiveDocument.FullName
    'Место_нахождения_файла = Replace$(ActiveDocument.FullName, ActiveDocument.Name, "")
    'Debug.Print Replace$(ActiveDocument.FullName, ActiveDocument.Name, "")
    'Расширение_файла = CreateObject("Scripting.FileSystemObject").GetExtensionName(ActiveDocument)
    'Debug.Print CreateObject("Scripting.FileSystemObject").GetExtensionName(ActiveDocument)
    'количество файлов в папке по адресу ...
    'Debug.Print fso.GetFolder(Replace$(ActiveDocument.FullName, ActiveDocument.Name, "")).Files.Count
    Set fld = fso.GetFolder(Replace$(ActiveDocument.FullName, ActiveDocument.Name, ""))
    w = 0
    For Each fl In fld.Files
        w = w + 1
        'Имя_файла_с_его_путём_и_расширением = fl.Path
        'Debug.Print fl.Path
        'Расширение_файла = CreateObject("Scripting.FileSystemObject").GetExtensionName(fl.Path)
        'Debug.Print LCase$(CreateObject("Scripting.FileSystemObject").GetExtensionName(fl.Path))
         Documents.Open FileName:=fl.Path
         Debug.Print "Обрабатывается файл - " & ActiveDocument.FullName
.............................

и да почему то не сработало For Each fl In fld.Files и стало доки по кругу обрабатывать-зациклилось...
пришлось контролировать
Visual Basic
1
2
3
w = 0
    For Each fl In fld.Files
        w = w + 1
0
help
4253 / 3856 / 782
Регистрация: 13.04.2015
Сообщений: 8,531
12.01.2021, 12:57 18
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Option Explicit
Извините, но по-моему Вы так и не усвоили зачем он нужен.
0
1389 / 530 / 67
Регистрация: 10.04.2009
Сообщений: 8,715
12.01.2021, 12:58  [ТС] 19
Цитата Сообщение от I can Посмотреть сообщение
Извините, но по-моему Вы так и не усвоили зачем он нужен
в курсе
0
12.01.2021, 12:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2021, 12:58
Помогаю со студенческими работами здесь

Как открыть базу данных Fox Pro 2.6 в VB для поиска, редактирования и печати ?
Как мне открыть базу данных Fox Pro 2.6 в VB для поиска, редактирования и печати ??? Помогите plz а...

Открыть файл для редактирования
В общем есть игровой сервер, на нем сохраняются файлы с расширение bin и bak Подскажите, чем можно...

Создать массив натуральных трёхзначных чисел. Открыть файл для редактирования. В новый файл сохранить числа кратные трём
Доброе утро. Помогите пожалуйста. Создать массив натуральных трёхзначных чисел. Открыть файл для...

Как открыть xlsm файл для редактирования макроса
помогите. как открыть файл с расширением xlsm для редактирования макроса

Пакетный файл. Как открыть и потом запаковать для редактирования?
Игра highstreet5(пара па) файл с инишками запакован. Как его открыть как диск или как папку? И как...

Можно как либо открыть файл для редактирования в Excel и в Word?
Можно как либо открыть файл для редактирования в Excel и в Word (но не в браузере)?


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

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