在VC中呼叫WORD(顯示,修改,存檔,執行宏) (轉)
(1)使用AppWizard建立一個新的MFC AppWizard(EXE)工程,命名為""
(2)選擇單文件檢視(SDI)結構,在第3步中需要選中Container,以提供容器支援,並且選中active document container 其它都為預設
(3)在View選單中,選ClassWizard,選Automation選項卡,選Add Class,選擇From a TypeLibrary, 在Office目錄中選中 97/2000 型別庫Word8.olb或Word9.olb,選中application,document,_document。單擊ok
(4)給COfficeCntrItem新增一方法。GetIDispatch()
其原始碼如下:
ASSERT_VALID(this);
ASSERT(m_lp != NULL);
LPUNKNOWN lpUnk = m_lpObject;
Run();
LPOLELINK lpOleLink = NULL;
if (m_lpObject->QueryInterface(IID_IOleLink, (LPVOID FAR*)&lpOleLink) == NOERROR)
{
ASSERT(lpOleLink != NULL);
lpUnk = NULL;
if (lpOleLink->GetBound(&lpUnk) != NOERROR)
{
TRACE0("Warning: Link is not connected!n");
lpOleLink->Release();
return NULL;
}
ASSERT(lpUnk != NULL);
}
LPDISPATCH lpDispatch = NULL;
if (lpUnk->QueryInterface(IID_IDispatch, (LPVOID FAR*)&lpDispatch)!=NOERROR)
{
TRACE0("Warning: does not support IDispatch!n");
return NULL;
}
ASSERT(lpDispatch != NULL);
return lpDispatch;
(5)。在officeView.h新增#include "msword8.h"
(6)。修改void COfficeView::OnInsertObject(),原始碼如下:
BeginWaitCursor();
COfficeCntrItem* pItem = NULL;
TRY
{
// Create new item connected to this document.
COfficeDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new COfficeCntrItem(pDoc);
ASSERT_VALID(pItem);
// Initialize the item from the dialog data.
/* if (!dlg.CreateItem(pItem))
AfxThrowMemoryException(); // any exception will do
ASSERT_VALID(pItem);*/
CLSID clsid; //
if(FAILED(::CLSIDFromProgID(L"Word.document",&clsid)))
AfxThrowMemoryException();
if(!pItem->CreateNewItem(clsid))
/*(!pItem->CreateFromFile (filename,clsid)) */
AfxThrowMemoryException();
ASSERT_VALID(pItem);
pItem->Activate (OLEIVERB_SHOW,this);
ASSERT_VALID(pItem);
m_pion = pItem; // set selection to last inserted item
pDoc->UpdateAllViews(NULL);
// As an arbitrary user interface design, this sets the selection
// to the last item inserted.
// TODO: reimplement selection as appropriate for your application
m_pSelection = pItem; // set selection to last inserted item
pDoc->UpdateAllViews(NULL);
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCH
EndWaitCursor();
(7)過載ID—FILE—SAVE,
void COfficeView::OnFileSave()
{
// TODO: Add your command handler code here
TRY{
LPDISPATCH lpDisp;
lpDisp = m_pSelection->GetIDispatch();
Documents docs;
_Application app;
_Document mydoc;
Documents my;
mydoc.AttachDispatch (lpDisp,TRUE);
app=mydoc.GetApplication ();
/* ("Macro3");*/
mydoc.Activate ();
BOOL password=mydoc.GetHassword ();
mydoc.SetPassword ("love");
password=mydoc.GetHasPassword ();
COleVariant vFalse((short)FALSE);
mydoc.SaveAs (COleVariant("c:love.doc"),vFalse,vFalse, COleVariant(""),vFalse,
COleVariant(""),vFalse,vFalse,vFalse,vFalse,vFalse);
}
CATCH(CException, e)
{
}
END_CATCH
}
bulid,click insert object,and edit ,and save.maybe run macro.
自己辛苦了很久加上別人的總算做出來。:)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990867/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在VC中呼叫WORD(顯示,修改,存檔,執行宏)之二去掉word的常用,格式工具欄 (轉)
- 在VC中呼叫WORD(顯示,修改,存檔,執行宏)之三。呼叫word的各種對話方塊翻頁等。 (轉)
- 在VC++6.0開發中實現全屏顯示 (轉)C++
- 怎樣在VC++中訪問和修改登錄檔 (轉)C++
- 在VC++中訪問和修改系統登錄檔 (轉)
- Word圖示未顯示在.doc和.docx文件檔案
- vc6.0呼叫excel xp,word 2k (轉)Excel
- Word表格在WPS中顯示不全的解決
- VC++中實現程式互斥執行 (轉)C++
- 再談在VB中呼叫VC++開發的DLL (轉)C++
- Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示Android
- 在ASP檔案中呼叫DLL (轉)
- JBOSS執行JSP檔案,頁面顯示如下資訊JBOSS執行JSP檔案,頁面顯示如下JS
- VC++ 執行緒同步(轉)C++執行緒
- 可以在applet中執行MS Word嗎?APP
- .net頁面載入顯示word檔案
- 在執行時顯示或隱藏窗體的標題欄 (轉)
- 在VC6.0中呼叫瀏覽器訪問WEB頁面 (轉)瀏覽器Web
- performSelector:withObject:afterDelay: 在子執行緒中呼叫不執行performSelectorObject執行緒
- Linux 中顯示可執行檔案的路徑 | 哪個命令Linux
- Word在Normal.dot模板檔案中儲存預設資訊ORM
- 在工作列上顯示圖示 (轉)
- 在Android中呼叫攝像頭拍照並顯示出來Android
- Vs Code中執行vue命令顯示"系統禁止執行指令碼"無法在終端使用Vue指令碼
- qt 使用qmake pro檔案新增 ico圖示,程式執行時顯示圖示,exe也顯示圖示QT
- word2013設定顯示修改痕跡的方法
- 從word檔案拷貝的怪事-不顯示的控制字元,神奇的程式碼,執行會報錯字元
- 顯示oracle執行時間Oracle
- 在VC中自建操作BMP點陣圖檔案的類 (轉)
- 在VC中呼叫預設的電子郵件程式傳送郵件 (轉)
- git status顯示了未修改的檔案Git
- 在 SQL Server 的儲存過程中呼叫 Com 元件 (轉)SQLServer儲存過程元件
- VC實現對話方塊上資訊的顯示 (轉)
- win下clion打包的.exe檔案在無執行環境的電腦執行顯示缺失各種.dll
- VC++ 程 序 中 用 對 話 框 的 形 式 顯 示HTML 文 件 (轉)C++HTML
- TListView元件顯示資料夾中的檔案 (轉)View元件
- Java讀取本地檔案,並顯示在JSP檔案中JavaJS
- 在DOS視窗執行java命令中文顯示正常,執行javac命令中文亂碼Java