Member 13865647
О'Кей, так что немного поздно, но вот мое решение:
1) Используйте MSWORD.OLB-файл для генерации оберток для:
_Приложение
_Документ
Документы
Диапазон
Слова
2) закомментировать - &ГТ; #импорт "C:\\Program файлы\корпорация Майкрософт Офис\\Office16\\турниров.OLB" no_namespace , в каждом сгенерированном файле wrapper .h
3) где вы хотите использовать его, например:
MyWordReadingClass.h - файл:
#включить "CApplication.h"
#включить "CDocuments.h"
#включить "CDocument0.h"
.. так далее, те выше, которые были сгенерированы
класс MyWordReadingClass : public CDialogEx {
DECLARE_DYNAMIC(MyWordReadingClass)
общественный:
... остальная часть вашего кода ...
частный:
// Интерфейс приложения Word
CApplication m_iAppInterface;
// Интерфейс документов
CDocuments m_iDocuments;
// Активный интерфейс документа
CDocument0 m_iActiveDocument;
// Содержание документа - диапазон
CRange m_iDocumentRange;
// Класс, представляющий слова
Слова m_oWords;
// Общее количество слов в документе Doc
длинные m_lTotalNumberOfWords;
// краткий текст
std::vector<cstring> m_vText;
};
MyWordReadingClass.cpp - файл:
void MyWordReadingClass::OnBnLoadDoc()
{
CFileDialog fdlgFileChooser(true, _T("*.*"), 0, 4 | 2, _T("файлы Microsoft Word|*.*"));
if (fdlgFileChooser.DoModal() == IDCANCEL)
{
вернуть;
}
if (PathFileExists(fdlgFileChooser.GetPathName()))
{
если (!m_iAppInterface.CreateDispatch(_T("Word.Приложение")))
{
AfxMessageBox(_T("не удается открыть слово"));
вернуть;
}
// Установить видимость, Показать / Скрыть (нет необходимости показывать документ)
m_iAppInterface.put_Visible(ложь);
COleVariant ovTrue((коротко)TRUE);
COleVariant ovFalse((short)FALSE);
COleVariant ovOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// Получить Документы
m_iDocuments = m_iAppInterface.get_Documents();
// Открыть документ
m_iActiveDocument = m_iDocuments.Open(COleVariant(fdlgFileChooser.GetPathName()),
ovOptional, ovOptional, ovOptional, ovOptional, ovOptional, ovOptional,
ovOptional, ovOptional, ovOptional, ovOptional, ovOptional, ovOptional,
овоптионал, овоптионал, овоптионал);
m_oWords = m_iActiveDocument.get_Words();
m_lTotalNumberOfWords = m_oWords.get_Count();
Индекс улуна = 1;
а (индекс &ЛТ;= m_lTotalNumberOfWords)
{
CRange oRange = m_oWords.Пункт(индекс);
индекс++;
Однако слово = оранжевый.get_Text();
слово.TrimRight();
m_vText.emplace_back(слово);
}
// m_vText все слова здесь делают какую-то операцию...
COleVariant ovNoPrompt((short)FALSE);
m_iDocuments.Закрыть(ovOptional, ovOptional, ovOptional);
m_iAppInterface.ReleaseDispatch();
}
}
Надеюсь, это поможет :)
Richard MacCutchan
Я ценю ваш ответ, но после 8 лет очень маловероятно, что спрашивающий имеет какой-либо интерес к этому вопросу. Попробуйте поработать над некоторыми новыми и более активными вопросами.