给一个关于word的例子好吗? 我想要这样一个例子,对word文档进行查找的例子,例如我用VC做一个这样的程序,打开某个word文档,根据我给的关键字在这个文档中进行查找,如果找到了就提示“查找成功”,没找到就提示“失败”,能做到吗?如果例子好使,当场给分:) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 恐怕你得用MSOFFICE的SDK了,只有MS才可以完全打开DOC文档。 使用VC把OFFICE目录下的MSWORD9.OLB导入到你的项目中,然后再建立APPLICATION对象m_app,调用m_app.CreateInstance("word.appliction")如果你想要什么样的操作,在WORD中录制相应的宏,然后再看一下宏的代码,使用VC把宏翻译过来就OK啦! 我的信箱是[email protected]请将源码发过来,收到就给分:)谢谢:) //下面是一段将Word文档转换成Txt文档的例子UINT CMSWord2Txt::WordConvert_F2F(SParam_F2F *pSParam, BOOL &bStop){ UINT nRet = CheckPara(pSParam);//参数合法型检测 if(nRet) return nRet; CString strFilename = pSParam->szSrcPathName; USES_CONVERSION; LPDISPATCH lpDispatch = NULL; _Document *pWordDoc = NULL; Documents *pWordDocs = NULL; if(IsHaveWord() == FALSE) { return MS_WORD_NOT_INSTALL; } try { lpDispatch = m_cWordApp.GetDocuments(); if(!lpDispatch) { return USING_OLE_FAILED; } pWordDocs = new Documents(lpDispatch); //////////////转成OLE的变量 //文件名 VARIANT varOpenFileName; V_VT(&varOpenFileName) = VT_BSTR; V_BSTR(&varOpenFileName) = SysAllocString(A2OLE((LPCTSTR)strFilename)); VARIANT varConfirmConversions; V_VT(&varConfirmConversions) = VT_BOOL; V_BOOL(&varConfirmConversions) = FALSE; VARIANT varReadOnly; V_VT(&varReadOnly) = VT_BOOL; V_BOOL(&varReadOnly) = TRUE; VARIANT varAddToRecentFiles; V_VT(&varAddToRecentFiles) = VT_BOOL; V_BOOL(&varAddToRecentFiles) = FALSE; VARIANT varFormat; V_VT(&varFormat) = VT_I2; enum WdOpenFormat openFormat = wdOpenFormatAuto; V_I2(&varFormat) = openFormat; VARIANT varEmpty; V_VT(&varEmpty) = VT_ERROR; V_ERROR(&varEmpty) = DISP_E_PARAMNOTFOUND; lpDispatch = pWordDocs->Open(&varOpenFileName, &varEmpty, &varReadOnly, &varEmpty, &varEmpty, &varEmpty, &varEmpty, &varEmpty, &varEmpty, &varEmpty); //生成文档 pWordDoc = new _Document(lpDispatch); //另存文件 VARIANT varSaveFileName; CString strSavePath = pSParam->szDestPathName ; V_VT(&varSaveFileName) = VT_BSTR; V_BSTR(&varSaveFileName) = SysAllocString(A2OLE((LPCTSTR)strSavePath)); VARIANT varFileFormat; enum WdSaveFormat saveFormat; saveFormat = wdFormatTextLineBreaks; V_VT(&varFileFormat) = VT_I2; V_I2(&varFileFormat) = saveFormat; VARIANT varLockComments; V_VT(&varLockComments) = VT_BOOL; V_BOOL(&varLockComments) = FALSE; VARIANT varReadOnlyRecommended; V_VT(&varReadOnlyRecommended) = VT_BOOL; V_BOOL(&varReadOnlyRecommended) = FALSE; VARIANT varEmbedTrueTypeFonts; V_VT(&varEmbedTrueTypeFonts) = VT_BOOL; V_BOOL(&varEmbedTrueTypeFonts) = FALSE; VARIANT varSaveNativePictureFormat; V_VT(&varSaveNativePictureFormat) = VT_BOOL; V_BOOL(&varSaveNativePictureFormat) = FALSE; VARIANT varSaveFormsData; V_VT(&varSaveFormsData) = VT_BOOL; V_BOOL(&varSaveFormsData) = FALSE; VARIANT varSaveAsAOCELetter; V_VT(&varSaveAsAOCELetter) = VT_BOOL; V_BOOL(&varSaveAsAOCELetter) = FALSE; //另存文档. pWordDoc->SaveAs(&varSaveFileName, &varFileFormat, &varLockComments, &varEmpty,//&varPassword, &varAddToRecentFiles, &varEmpty,//&varWritePassword, &varReadOnlyRecommended, &varEmbedTrueTypeFonts, &varSaveNativePictureFormat, &varSaveFormsData, &varSaveAsAOCELetter ); //关闭 VARIANT varSaveChanges; enum WdSaveOptions saveOptions; saveOptions = wdSaveChanges; V_VT(&varSaveChanges) = VT_I2; V_I2(&varSaveChanges) = saveOptions; VARIANT varOriginalFormat; enum WdOriginalFormat originalFormat; originalFormat = wdOriginalDocumentFormat; V_VT(&varOriginalFormat) = VT_I2; V_I2(&varOriginalFormat) = originalFormat; VARIANT varRouteDocument; V_VT(&varRouteDocument) = VT_BOOL; V_BOOL(&varRouteDocument) = FALSE; delete pWordDocs; pWordDocs = NULL; delete pWordDoc; pWordDoc = NULL; CloseWordApp(); } catch(COleException *pEx) { TCHAR szErr[1024] = _T(""); pEx->GetErrorMessage(szErr , 1024); pEx->Delete();// ::AfxMessageBox(szErr); if(pWordDocs) delete pWordDocs; if(pWordDoc) delete pWordDoc; pWordDocs = NULL; pWordDoc = NULL; CloseWordApp(); return USING_OLE_FAILED; } catch(COleDispatchException * pEx) { pEx->Delete(); if(pWordDocs) delete pWordDocs; if(pWordDoc) delete pWordDoc; pWordDocs = NULL; pWordDoc = NULL; CloseWordApp(); return USING_OLE_FAILED; } return WORD_SUCCESSED;} 我的word里面有图片,再说,转成txt再进行查找这个方法似乎不太好:)不过谢谢你的代码:) #include "stdafx.h"const CLSID CLSID_ApplicationPtr = {0x000209FF,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};const IID IID_IApplicationPtr = {0x00020970,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};VOID WriteMsgToLogFile(PCHAR pbMessage);#import "d:\Program Files\Microsoft Office\Office\MSO9.DLL"#import "d:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"#import "d:\Program Files\Microsoft Office\Office\MSWORD9.OLB" \ rename("ExitWindows","_ExitWindows")int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ // TODO: Place code here. HRESULT hr; CString FileName,LoadFile,SaveFile,SaveFileName,Temp1; CHAR FilePath[255]; VARIANT Temp; COleVariant TEMP2; CTime NowTime; hr=CoInitialize(NULL); VARIANT_BOOL m_ok,m_ok1; long i,j,m,n; Word::_ApplicationPtr MyOffice("Word.Application.9"); ::GetCurrentDirectory(255,FilePath); FileName.Format("%s",FilePath); LoadFile=FileName+"\\1.doc"; TEMP2=(COleVariant)LoadFile; Temp=TEMP2.Detach(); if (MyOffice) { hr=MyOffice->Documents->Open(&Temp); if(FAILED(hr)) { ::AfxMessageBox("文件打开显示错误"); MyOffice->Quit(); } Temp1="星期"; TEMP2.Clear(); TEMP2=(COleVariant)Temp1; Temp=TEMP2.Detach(); i=MyOffice->GetSelection()->GetStart(); j=MyOffice->GetSelection()->GetEnd(); MyOffice->GetSelection()->PutStart(0); MyOffice->GetSelection()->PutEnd(100000); i=MyOffice->GetSelection()->GetStart(); j=MyOffice->GetSelection()->GetEnd(); m_ok=MyOffice->ActiveWindow->GetSelection()->GetFind()->Execute(&Temp); if(m_ok==0) { ::AfxMessageBox("查找文件失败"); } else { ::AfxMessageBox("查找文件成功"); } MyOffice->Quit(); } return 0;} #include "stdafx.h"const CLSID CLSID_ApplicationPtr = {0x000209FF,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};const IID IID_IApplicationPtr = {0x00020970,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};VOID WriteMsgToLogFile(PCHAR pbMessage);#import "d:\Program Files\Microsoft Office\Office\MSO9.DLL"#import "d:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"#import "d:\Program Files\Microsoft Office\Office\MSWORD9.OLB" \ rename("ExitWindows","_ExitWindows")int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ // TODO: Place code here. HRESULT hr; CString FileName,LoadFile,SaveFile,SaveFileName,Temp1; CHAR FilePath[255]; VARIANT Temp; COleVariant TEMP2; CTime NowTime; hr=CoInitialize(NULL); VARIANT_BOOL m_ok,m_ok1; long i,j,m,n; Word::_ApplicationPtr MyOffice("Word.Application.9"); ::GetCurrentDirectory(255,FilePath); FileName.Format("%s",FilePath); LoadFile=FileName+"\\1.doc"; TEMP2=(COleVariant)LoadFile; Temp=TEMP2.Detach(); if (MyOffice) { hr=MyOffice->Documents->Open(&Temp); if(FAILED(hr)) { ::AfxMessageBox("文件打开显示错误"); MyOffice->Quit(); } Temp1="星期"; TEMP2.Clear(); TEMP2=(COleVariant)Temp1; Temp=TEMP2.Detach(); i=MyOffice->GetSelection()->GetStart(); j=MyOffice->GetSelection()->GetEnd(); MyOffice->GetSelection()->PutStart(0); MyOffice->GetSelection()->PutEnd(100000); i=MyOffice->GetSelection()->GetStart(); j=MyOffice->GetSelection()->GetEnd(); m_ok=MyOffice->ActiveWindow->GetSelection()->GetFind()->Execute(&Temp); if(m_ok==0) { ::AfxMessageBox("查找文件失败"); } else { ::AfxMessageBox("查找文件成功"); } MyOffice->Quit(); } return 0;} MFC中的picture控件显示图片 有人会IME编程吗? VC中关于文件路径的详细情况,特别是调用程序路径问题 求助。。。。。。。。。。。。。。 有谁做过MSMQ的负载均衡,MSMQ的负载均衡怎么做? 100分! 我的flash控件不能嵌入屏幕保护程序 在VC中我的结构体链表的文件读写问题! 有关timeSetEvent()回调函数的问题? 请问 如何创建文件夹选择对话框? ActiveX数字签名问题求救! 我的程序做好了,但想打包成一个安装程序而且在安装时要求配置数据源该如何做呢? 何谓“串行化”和“并行化”?
如果你想要什么样的操作,在WORD中录制相应的宏,然后再看一下宏的代码,使用VC把宏翻译过来就OK啦!
请将源码发过来,收到就给分:)
谢谢:)
UINT CMSWord2Txt::WordConvert_F2F(SParam_F2F *pSParam, BOOL &bStop)
{
UINT nRet = CheckPara(pSParam);//参数合法型检测
if(nRet)
return nRet;
CString strFilename = pSParam->szSrcPathName;
USES_CONVERSION;
LPDISPATCH lpDispatch = NULL;
_Document *pWordDoc = NULL;
Documents *pWordDocs = NULL; if(IsHaveWord() == FALSE)
{
return MS_WORD_NOT_INSTALL;
}
try
{
lpDispatch = m_cWordApp.GetDocuments();
if(!lpDispatch)
{
return USING_OLE_FAILED;
}
pWordDocs = new Documents(lpDispatch);
//////////////转成OLE的变量
//文件名
VARIANT varOpenFileName;
V_VT(&varOpenFileName) = VT_BSTR;
V_BSTR(&varOpenFileName) = SysAllocString(A2OLE((LPCTSTR)strFilename));
VARIANT varConfirmConversions;
V_VT(&varConfirmConversions) = VT_BOOL;
V_BOOL(&varConfirmConversions) = FALSE;
VARIANT varReadOnly;
V_VT(&varReadOnly) = VT_BOOL;
V_BOOL(&varReadOnly) = TRUE;
VARIANT varAddToRecentFiles;
V_VT(&varAddToRecentFiles) = VT_BOOL;
V_BOOL(&varAddToRecentFiles) = FALSE;
VARIANT varFormat;
V_VT(&varFormat) = VT_I2;
enum WdOpenFormat openFormat = wdOpenFormatAuto;
V_I2(&varFormat) = openFormat;
VARIANT varEmpty;
V_VT(&varEmpty) = VT_ERROR;
V_ERROR(&varEmpty) = DISP_E_PARAMNOTFOUND;
lpDispatch = pWordDocs->Open(&varOpenFileName,
&varEmpty,
&varReadOnly,
&varEmpty,
&varEmpty,
&varEmpty,
&varEmpty,
&varEmpty,
&varEmpty,
&varEmpty);
//生成文档
pWordDoc = new _Document(lpDispatch); //另存文件
VARIANT varSaveFileName;
CString strSavePath = pSParam->szDestPathName ;
V_VT(&varSaveFileName) = VT_BSTR;
V_BSTR(&varSaveFileName) = SysAllocString(A2OLE((LPCTSTR)strSavePath)); VARIANT varFileFormat;
enum WdSaveFormat saveFormat;
saveFormat = wdFormatTextLineBreaks;
V_VT(&varFileFormat) = VT_I2;
V_I2(&varFileFormat) = saveFormat; VARIANT varLockComments;
V_VT(&varLockComments) = VT_BOOL;
V_BOOL(&varLockComments) = FALSE; VARIANT varReadOnlyRecommended;
V_VT(&varReadOnlyRecommended) = VT_BOOL;
V_BOOL(&varReadOnlyRecommended) = FALSE; VARIANT varEmbedTrueTypeFonts;
V_VT(&varEmbedTrueTypeFonts) = VT_BOOL;
V_BOOL(&varEmbedTrueTypeFonts) = FALSE; VARIANT varSaveNativePictureFormat;
V_VT(&varSaveNativePictureFormat) = VT_BOOL;
V_BOOL(&varSaveNativePictureFormat) = FALSE;
VARIANT varSaveFormsData;
V_VT(&varSaveFormsData) = VT_BOOL;
V_BOOL(&varSaveFormsData) = FALSE;
VARIANT varSaveAsAOCELetter;
V_VT(&varSaveAsAOCELetter) = VT_BOOL;
V_BOOL(&varSaveAsAOCELetter) = FALSE;
//另存文档.
pWordDoc->SaveAs(&varSaveFileName,
&varFileFormat,
&varLockComments,
&varEmpty,//&varPassword,
&varAddToRecentFiles,
&varEmpty,//&varWritePassword,
&varReadOnlyRecommended,
&varEmbedTrueTypeFonts,
&varSaveNativePictureFormat,
&varSaveFormsData,
&varSaveAsAOCELetter
);
//关闭
VARIANT varSaveChanges;
enum WdSaveOptions saveOptions;
saveOptions = wdSaveChanges;
V_VT(&varSaveChanges) = VT_I2;
V_I2(&varSaveChanges) = saveOptions;
VARIANT varOriginalFormat;
enum WdOriginalFormat originalFormat;
originalFormat = wdOriginalDocumentFormat;
V_VT(&varOriginalFormat) = VT_I2;
V_I2(&varOriginalFormat) = originalFormat;
VARIANT varRouteDocument;
V_VT(&varRouteDocument) = VT_BOOL;
V_BOOL(&varRouteDocument) = FALSE;
delete pWordDocs;
pWordDocs = NULL;
delete pWordDoc;
pWordDoc = NULL; CloseWordApp();
}
catch(COleException *pEx)
{
TCHAR szErr[1024] = _T("");
pEx->GetErrorMessage(szErr , 1024);
pEx->Delete();
// ::AfxMessageBox(szErr);
if(pWordDocs)
delete pWordDocs;
if(pWordDoc)
delete pWordDoc;
pWordDocs = NULL;
pWordDoc = NULL;
CloseWordApp();
return USING_OLE_FAILED;
}
catch(COleDispatchException * pEx)
{
pEx->Delete();
if(pWordDocs)
delete pWordDocs;
if(pWordDoc)
delete pWordDoc;
pWordDocs = NULL;
pWordDoc = NULL;
CloseWordApp();
return USING_OLE_FAILED;
} return WORD_SUCCESSED;
}
不过谢谢你的代码:)
#include "stdafx.h"
const CLSID CLSID_ApplicationPtr =
{0x000209FF,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};
const IID IID_IApplicationPtr =
{0x00020970,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};
VOID WriteMsgToLogFile(PCHAR pbMessage);#import "d:\Program Files\Microsoft Office\Office\MSO9.DLL"
#import "d:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "d:\Program Files\Microsoft Office\Office\MSWORD9.OLB" \
rename("ExitWindows","_ExitWindows")
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
HRESULT hr;
CString FileName,LoadFile,SaveFile,SaveFileName,Temp1;
CHAR FilePath[255];
VARIANT Temp;
COleVariant TEMP2;
CTime NowTime;
hr=CoInitialize(NULL);
VARIANT_BOOL m_ok,m_ok1;
long i,j,m,n; Word::_ApplicationPtr MyOffice("Word.Application.9");
::GetCurrentDirectory(255,FilePath);
FileName.Format("%s",FilePath);
LoadFile=FileName+"\\1.doc";
TEMP2=(COleVariant)LoadFile;
Temp=TEMP2.Detach();
if (MyOffice) {
hr=MyOffice->Documents->Open(&Temp);
if(FAILED(hr))
{
::AfxMessageBox("文件打开显示错误");
MyOffice->Quit();
}
Temp1="星期";
TEMP2.Clear();
TEMP2=(COleVariant)Temp1;
Temp=TEMP2.Detach();
i=MyOffice->GetSelection()->GetStart();
j=MyOffice->GetSelection()->GetEnd();
MyOffice->GetSelection()->PutStart(0);
MyOffice->GetSelection()->PutEnd(100000);
i=MyOffice->GetSelection()->GetStart();
j=MyOffice->GetSelection()->GetEnd();
m_ok=MyOffice->ActiveWindow->GetSelection()->GetFind()->Execute(&Temp);
if(m_ok==0)
{
::AfxMessageBox("查找文件失败");
}
else
{
::AfxMessageBox("查找文件成功");
} MyOffice->Quit();
}
return 0;
}
#include "stdafx.h"
const CLSID CLSID_ApplicationPtr =
{0x000209FF,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};
const IID IID_IApplicationPtr =
{0x00020970,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}};
VOID WriteMsgToLogFile(PCHAR pbMessage);#import "d:\Program Files\Microsoft Office\Office\MSO9.DLL"
#import "d:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "d:\Program Files\Microsoft Office\Office\MSWORD9.OLB" \
rename("ExitWindows","_ExitWindows")
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
HRESULT hr;
CString FileName,LoadFile,SaveFile,SaveFileName,Temp1;
CHAR FilePath[255];
VARIANT Temp;
COleVariant TEMP2;
CTime NowTime;
hr=CoInitialize(NULL);
VARIANT_BOOL m_ok,m_ok1;
long i,j,m,n; Word::_ApplicationPtr MyOffice("Word.Application.9");
::GetCurrentDirectory(255,FilePath);
FileName.Format("%s",FilePath);
LoadFile=FileName+"\\1.doc";
TEMP2=(COleVariant)LoadFile;
Temp=TEMP2.Detach();
if (MyOffice) {
hr=MyOffice->Documents->Open(&Temp);
if(FAILED(hr))
{
::AfxMessageBox("文件打开显示错误");
MyOffice->Quit();
}
Temp1="星期";
TEMP2.Clear();
TEMP2=(COleVariant)Temp1;
Temp=TEMP2.Detach();
i=MyOffice->GetSelection()->GetStart();
j=MyOffice->GetSelection()->GetEnd();
MyOffice->GetSelection()->PutStart(0);
MyOffice->GetSelection()->PutEnd(100000);
i=MyOffice->GetSelection()->GetStart();
j=MyOffice->GetSelection()->GetEnd();
m_ok=MyOffice->ActiveWindow->GetSelection()->GetFind()->Execute(&Temp);
if(m_ok==0)
{
::AfxMessageBox("查找文件失败");
}
else
{
::AfxMessageBox("查找文件成功");
} MyOffice->Quit();
}
return 0;
}