powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / работает в VBA, но не работает в VBS
21 сообщений из 21, страница 1 из 1
работает в VBA, но не работает в VBS
    #37810492
DrunkWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу помощи разобраться с методом, который получил из записи макроса. Он работает в VBA, но не работает в VBS
На третьей строке выдает ошибку: object doesn't support this property or method: "doc.comparedocuments"

Set obj = CreateObject("Word.Application")
Set doc = obj.Documents.Open("C:\fob\5.doc", , False, , , , , , , , , True)
doc.CompareDocuments "C:\fob\2.doc", "C:\fob\3.doc", wdCompareDestinationNew , wdGranularityWordLevel, True, True, True, True, True, True, True, true, True, True, "user", False

doc.SaveAs "C:\fob\4.docx"
Set doc = Nothing
obj.Quit
Set obj = Nothing
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810496
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompareDocuments работает в офисе 2010, видимо пытаетесь использовать на машине с более старой версией ворда
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810512
DrunkWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Стоит office2007, но в нем тоже это есть. Я же сперва делал пользовательским методом, записал макрос, где и была эта функция. Теперь пытаюсь использовать ее в vbs
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810520
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня нет 2007 и 2010 не могу посмотреть
Но, судя по msdn - это метод Application, а не документа, применяйте его к obj
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810553
DrunkWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Поменял. Теперь ругается на type mismatch: obj.comparedocuments. Значит где-то с параметрами напутал?
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810559
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DrunkWolfЗначит где-то с параметрами напутал?да
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810567
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DrunkWolfПрошу помощи разобраться с методом, который получил из записи макроса. Он работает в VBA, но не работает в VBS
На третьей строке выдает ошибку: object doesn't support this property or method: "doc.comparedocuments"

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Set obj = CreateObject("Word.Application") 
Set doc = obj.Documents.Open("C:\fob\5.doc", , False, , , , , , , , , True) 
doc.CompareDocuments "C:\fob\2.doc", "C:\fob\3.doc", wdCompareDestinationNew , wdGranularityWordLevel, True, True, True, True, True, True, True, true, True, True, "user", False
   
doc.SaveAs "C:\fob\4.docx"
Set doc = Nothing 
obj.Quit
Set obj = Nothing


именованные константы меняй на их значения

зы
и тегами пользуйся !!
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810570
DrunkWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Оставил только основные:
obj.CompareDocuments "C:\fob\2.doc", "C:\fob\3.doc"
Либо:
set compare= obj.CompareDocuments("C:\fob\2.doc", "C:\fob\3.doc")

Та же ошибка (
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810581
DrunkWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112,

obj.CompareDocuments "C:\fob\2.doc", "C:\fob\3.doc", 2 , 1, True, True, True, True, True, True, True, true, True, True, "user", False

Тоже самое.. type mismatch.. еще что-то упущено.
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810584
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по примерам, которые попались в инете, в 2007-м CompareDocuments принимает в качестве параметров не путь к документам, а объект - документ. Отсюда и ошибка. Их надо предварительно открыть
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810586
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
Set obj = CreateObject("Word.Application") 
Set doc1 = obj.Documents.Open("C:\fob\5.doc", , False, , , , , , , , , True) 
Set doc2 = obj.Documents.Open("C:\fob\6.doc", , False, , , , , , , , , True) 
Set doc3 = obj.CompareDocuments doc1, doc2
doc3.SaveAs ....
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810588
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DrunkWolfqwerty112,

obj.CompareDocuments "C:\fob\2.doc", "C:\fob\3.doc", 2 , 1, True, True, True, True, True, True, True, true, True, True, "user", False

Тоже самое.. type mismatch.. еще что-то упущено.
ты на полном серьёзе думаеш, что это (выделено) имеет тип данных "Document" ?

Application.CompareDocuments Method (Word)

Compares two documents and returns a Document object that represents the document that contains the differences between the two documents, marked using tracked changes.

Syntax
--------------------------------------------------------------------------------

expression.CompareDocuments(OriginalDocument, RevisedDocument, Destination, Granularity, CompareFormatting, CompareCaseChanges, CompareWhitespace, CompareTables, CompareHeaders, CompareFootnotes, CompareTextboxes, CompareFields, CompareComments, RevisedAuthor, IgnoreAllComparisonWarnings)

expression An expression that returns an Application object.

NameRequired/OptionalData TypeDescriptionOriginalDocumentRequiredDocumentSpecifies the path and file name of the original document.RevisedDocumentRequiredDocumentSpecifies the path and file name of the revised document to which to compare the original document.DestinationOptionalWdCompareDestination Specifies whether to create a new file or whether to mark the differences between the two documents in the original document or in the revised document. Default value is wdCompareDestinationNew.GranularityOptionalWdGranularity Specifies whether changes are tracked by character or by word. Default value is wdGranularityWordLevel.CompareFormattingOptionalBooleanSpecifies whether to mark differences in formatting between the two documents. Default value is True.CompareCaseChangesOptionalBooleanSpecifies whether to mark differences in case between the two documents. Default value is True.CompareWhitespaceOptionalBooleanSpecifies whether to mark differences in white space, such as paragraphs or spaces, between the two documents. Default value is True.CompareTablesOptionalBooleanSpecifies whether to compare the differences in data contained in tables between the two documents. Default value is True.CompareHeadersOptionalBooleanSpecifies whether to compare differences in headers and footers between the two documents. Default value is True.CompareFootnotesOptionalBooleanSpecifies whether to compare differences in footnotes and endnotes between the two documents. Default value is True.CompareTextboxesOptionalBooleanSpecifies whether to compare differences in the data contained within text boxes between the two documents. Default value is True.CompareFieldsOptionalBooleanSpecifies whether to compare differences in fields between the two documents. Default value is True.CompareCommentsOptionalBooleanSpecifies whether to compare differences in comments between the two documents. Default value is True.RevisedAuthorOptionalStringSpecifies the name of the person to whom to attribute changes when comparing the two documents.IgnoreAllComparisonWarningsOptionalBooleanSpecifies whether to ignore warnings when comparing the two documents.
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810590
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112ы на полном серьёзе думаеш, что это (выделено) имеет тип данных "Document" ?DrunkWolfОн работает в VBA
У автора работает видишь ли этот пример в VBA на не том объекте и не с теми параметрами
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #37810599
DrunkWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwerty112,

Согласен, нелепая ошибка :-) Раньше не пользовался msdn, по незнанию, полезная штука..Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
работает в VBA, но не работает в VBS
    #39758767
kosmonavtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! У меня ровно такая же проблема. Нужно сравнивать документы в автоматическом режиме и я увидел что при создании макроса при этом пишется функция: Application.CompareDocuments и прекрасно работает, но ошибки при переводе в vbs такие-же как и описаны в данной теме. И как же решилась проблема в данной теме я не понял? Что в итоге сделать то нужно? Или без вариантов, только переустановка на Word 2010?
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #39758768
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosmonavtomно ошибки при переводе в vbs такие-же как и описаны в данной темеНу так и решения тут описаны. Давайте заново - код и тексты ошибок.
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #39758772
kosmonavtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходный код из макросов Word 2007:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Sub Sravnenie()
Sub Sravnenie()
'
' Sravnenie Макрос
'
'
    ChangeFileOpenDirectory "C:\doc\"
    Application.CompareDocuments OriginalDocument:=Documents("doc1.docx"), _
        RevisedDocument:=Documents("doc2.docx"), Destination:= _
        wdCompareDestinationNew, Granularity:=wdGranularityWordLevel, _
        CompareFormatting:=True, CompareCaseChanges:=True, CompareWhitespace:= _
        True, CompareTables:=True, CompareHeaders:=True, CompareFootnotes:=True, _
        CompareTextboxes:=True, CompareFields:=True, CompareComments:=True, _
        CompareMoves:=True, RevisedAuthor:="", IgnoreAllComparisonWarnings:=False
    ActiveWindow.ShowSourceDocuments = wdShowSourceDocumentsBoth
    ActiveDocument.SaveAs FileName:="doc3.docx", FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
    ActiveWindow.Close
    Application.Quit
End Sub



Но оказалось, что он не работает, выдает ошибку:
Код: powershell
1.
2.
Run-time error '4160':
Неверное имя файла



Хотя записывался в том-же ворде и с теми-же файлами и файлы конечно же расположены как надо. Пробовал несколько раз.
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #39758773
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается переноса в VBS - выше уже говорили, что VBS не знает, что такое wdShowSourceDocumentsBoth и другие именованные константы ворда. Поэтому либо их нужно объявить и присвоить им те же значения, что и в ворде, либо просто заменить их на конкретные значения.

kosmonavtomНо оказалось, что он не работает, выдает ошибку:в какой строке?
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #39758835
kosmonavtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, в 7 строке ошибка.

Вот это выделяет желтым цветом:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Application.CompareDocuments OriginalDocument:=Documents("doc1.docx"), _
        RevisedDocument:=Documents("doc2.docx"), Destination:= _
        wdCompareDestinationNew, Granularity:=wdGranularityWordLevel, _
        CompareFormatting:=True, CompareCaseChanges:=True, CompareWhitespace:= _
        True, CompareTables:=True, CompareHeaders:=True, CompareFootnotes:=True, _
        CompareTextboxes:=True, CompareFields:=True, CompareComments:=True, _
        CompareMoves:=True, RevisedAuthor:="", IgnoreAllComparisonWarnings:=False
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #39758839
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит один (или оба) из этих документов еще не открыт или имя неверное
...
Рейтинг: 0 / 0
работает в VBA, но не работает в VBS
    #39758858
kosmonavtom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Спасибо! Да действительно документы не были открыты. Откровенно говоря я и не подумал даже об этом, т.к. думал что запись макроса в Word подразумевает, что все и так сработает, раз адреса записаны! но ошибся :((
Начал переделывать в VBS с учетом своих ошибок и на Ваших примерах описанных Выше и таки все получилось и работает:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
' Сравнение двух документов
' Сравнение двух документов запуск сравнения и сохранение результата в отдельный файл
Set Application = CreateObject("Word.Application") ' Создаём объект с Word-ом
Application.Visible = True ' делаем видимым Word
Set doc1 = Application.Documents.Open("C:\doc\doc1.docx", , False, , , , , , , , , True) 
Set doc2 = Application.Documents.Open("C:\doc\doc2.docx", , False, , , , , , , , , True) 
Set doc3 = Application.CompareDocuments(doc1, doc2, , False, , , , , , , , , True)
doc3.SaveAs("C:\doc\doc3.docx")
Application.Quit ' закрываем Word



Еще раз спасибо! )))
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / работает в VBA, но не работает в VBS
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]