Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / работает в VBA, но не работает в VBS / 21 сообщений из 21, страница 1 из 1
24.05.2012, 19:44
    #37810492
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Прошу помощи разобраться с методом, который получил из записи макроса. Он работает в 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
24.05.2012, 19:50
    #37810496
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
CompareDocuments работает в офисе 2010, видимо пытаетесь использовать на машине с более старой версией ворда
...
Рейтинг: 0 / 0
24.05.2012, 20:11
    #37810512
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Shocker.Pro,

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

Поменял. Теперь ругается на type mismatch: obj.comparedocuments. Значит где-то с параметрами напутал?
...
Рейтинг: 0 / 0
24.05.2012, 21:02
    #37810559
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
DrunkWolfЗначит где-то с параметрами напутал?да
...
Рейтинг: 0 / 0
24.05.2012, 21:12
    #37810567
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
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
24.05.2012, 21:17
    #37810570
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
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
24.05.2012, 21:23
    #37810581
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
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
24.05.2012, 21:27
    #37810584
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Судя по примерам, которые попались в инете, в 2007-м CompareDocuments принимает в качестве параметров не путь к документам, а объект - документ. Отсюда и ошибка. Их надо предварительно открыть
...
Рейтинг: 0 / 0
24.05.2012, 21:29
    #37810586
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Код: 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
24.05.2012, 21:30
    #37810588
qwerty112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
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
24.05.2012, 21:33
    #37810590
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
qwerty112ы на полном серьёзе думаеш, что это (выделено) имеет тип данных "Document" ?DrunkWolfОн работает в VBA
У автора работает видишь ли этот пример в VBA на не том объекте и не с теми параметрами
...
Рейтинг: 0 / 0
24.05.2012, 21:42
    #37810599
DrunkWolf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
qwerty112,

Согласен, нелепая ошибка :-) Раньше не пользовался msdn, по незнанию, полезная штука..Спасибо!
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
12.01.2019, 15:19
    #39758767
kosmonavtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Здравствуйте! У меня ровно такая же проблема. Нужно сравнивать документы в автоматическом режиме и я увидел что при создании макроса при этом пишется функция: Application.CompareDocuments и прекрасно работает, но ошибки при переводе в vbs такие-же как и описаны в данной теме. И как же решилась проблема в данной теме я не понял? Что в итоге сделать то нужно? Или без вариантов, только переустановка на Word 2010?
...
Рейтинг: 0 / 0
12.01.2019, 15:25
    #39758768
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
kosmonavtomно ошибки при переводе в vbs такие-же как и описаны в данной темеНу так и решения тут описаны. Давайте заново - код и тексты ошибок.
...
Рейтинг: 0 / 0
12.01.2019, 16:20
    #39758772
kosmonavtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Исходный код из макросов 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
12.01.2019, 16:26
    #39758773
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Что касается переноса в VBS - выше уже говорили, что VBS не знает, что такое wdShowSourceDocumentsBoth и другие именованные константы ворда. Поэтому либо их нужно объявить и присвоить им те же значения, что и в ворде, либо просто заменить их на конкретные значения.

kosmonavtomНо оказалось, что он не работает, выдает ошибку:в какой строке?
...
Рейтинг: 0 / 0
12.01.2019, 21:41
    #39758835
kosmonavtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
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
12.01.2019, 21:45
    #39758839
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
Значит один (или оба) из этих документов еще не открыт или имя неверное
...
Рейтинг: 0 / 0
12.01.2019, 22:50
    #39758858
kosmonavtom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работает в VBA, но не работает в VBS
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / работает в VBA, но не работает в VBS / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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