Чтобы изменить содержимое внедренного документа Word, сначала необходимо получить доступ к встроенному приложению, а затем сам документ. Как только код получит доступ к OLEObject
, ему потребуется фактический Object
, с помощью которого можно обратиться к приложению и документу.
Обратите внимание, что было бы целесообразно присвоить объекту OLE имя, а не полагаться на объект, созданный в Excel. Такие имена имеют неприятную тенденцию к изменению, если добавляются дополнительные объекты или удаляются другие. Любое имя, назначенное явно, останется нетронутым. Это необходимо выполнить только один раз на рабочем листе (основываясь на полном примере кода):
ws.OLEObjects("Object 4").Name = "WordDoc" 'for example, can be any string you prefer
Тогда, если вы решите сделать это, в полном коде это будет ws.OLEObjects("WordDoc")
[ 118]
В конце процедуры строка ws.Cells(1, 1).Select
деактивирует внедренный объект, выбирая ячейку на листе. Если вы хотите оставить документ Word активным, чтобы пользователь мог работать с ним, просто удалите эту строку.
Sub ok()
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet
Dim doc As Object 'Word.Document
Dim wdObj As Object, wdTable As Object 'Word.Table
Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet1")
Set wdObj = ws.OLEObjects("Object 4")
wdObj.Activate
Set doc = wdObj.Object.Application.ActiveDocument
Set wdTable = doc.Tables(1)
wdTable.PreferredWidthType = 2 ' Word.WdPreferredWidthType.wdPreferredWidthPercent
wdTable.PreferredWidth = 95
ws.Cells(1, 1).Select
End Sub
Существует исследование в области этого, оно назвало Вычислительный Юмор. Это - междисциплинарная область, которая берет элементы от компьютерной лингвистики, психолингвистики, искусственного интеллекта, машинное обучение и т.д. Они пытаются узнать то, что это, это делает истории или шутки забавными (например, неожиданное соединение или использование запретной темы удивительным способом и т.д.), и примените его, чтобы написать (или чтобы генерировать забавную историю или измерить 'забавность' текста).
Существуют книги и статьи об этом (например, Graeme Ritchie).
Единственный способ осуществить это состоит в том, чтобы получить несколько тысяч человек (обезьяны не сделают, извините) просмотреть тысячи забавных предложений/историй, оценить их и затем создать своего рода экспертную систему / нейронная сеть из него. Учитывая проблемный объем и субъективность его (вещь, забавная одному человеку, не могла бы быть забавной - даже наступление - другому), я скажу, что это - невозможная задача.
Можно использовать ту же технику в качестве спам-фильтров. Вместо spam/non-spam Вы классифицируете на funny/not-funny. Изучите наивные байесовские классификаторы для получения дополнительной информации.
Кроме того, попробуйте Вычислительный Юмор Google Scholar, если Вы серьезно относитесь к вхождению в поле. Анализ мнений был упомянут также, посмотрите Википедию на этом.
Конечно, это все зависит от того, каковы Ваш объем и цели...
Да, необходимо использовать Тренировочные корпуса для создания прогнозирующей модели, которая в состоянии обнаружить забавные предложения. Иногда это известно как "Анализ мнений" в литературе. Смотрите на эту статью об Анализе мнений с LingPipe.
Если можно использовать Java, можно пользоваться их библиотекой (см. матрицу лицензии). Я нашел это очень полезным, не точно в том же контексте, чем Вы.