Created
September 24, 2024 08:02
-
-
Save bg1bgst333/b8fa4d7cb1b69b29f2ea266d880e3195 to your computer and use it in GitHub Desktop.
Workbook
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ヘッダのインクルード | |
// 既定のヘッダ | |
#include <windows.h> // 標準WindowsAPI | |
#include <tchar.h> // TCHAR対応 | |
// 独自のヘッダ | |
#include "Workbook.h" // Word::CWorkbook | |
// コンストラクタCWorkbook | |
Excel::CWorkbook::CWorkbook() { | |
} | |
// 引数付きコンストラクタ.(IDispatchポインタpDispatchを受け取る.) | |
Excel::CWorkbook::CWorkbook(IDispatch *pDispatch) { | |
// m_pDispatchにセット. | |
m_pDispatch = pDispatch; | |
} | |
// デストラクタ~CCWorkbook | |
Excel::CWorkbook::~CWorkbook() { | |
// m_pDispatchの解放. | |
if (m_pDispatch != NULL) { // m_pDispatchがNULLでなければ. | |
m_pDispatch->Release(); // IDispatch::Releaseで解放. | |
m_pDispatch = NULL; // NULLをセット. | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 二重インクルード防止 | |
#ifndef __EXCEL__WORKBOOK_H__ | |
#define __EXCEL__WORKBOOK_H__ | |
// 名前空間Excelの定義 | |
namespace Excel { | |
// ワークブッククラスCWorkbookの定義 | |
class CWorkbook { | |
// privateメンバ | |
private: | |
// privateメンバ変数 | |
IDispatch *m_pDispatch; // IDispatchポインタm_pDispatch. | |
// privateメンバ関数 | |
// コンストラクタ | |
CWorkbook(); // コンストラクタCWorkbook(newで生成不可.) | |
// publicメンバ | |
public: | |
// publicメンバ関数 | |
// コンストラクタ | |
CWorkbook(IDispatch *pDispatch); // 引数付きコンストラクタ.(IDispatchポインタpDispatchを受け取る.) | |
// デストラクタ | |
virtual ~CWorkbook(); // デストラクタ~CWorkbook | |
}; | |
} | |
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ヘッダファイルのインクルード | |
// 既定のヘッダ | |
#include <windows.h> // 標準WindowsAPI | |
#include <tchar.h> // TCHAR対応 | |
// 独自のヘッダ | |
#include "Excel/Application.h" // Excel::CApplication | |
// _tmain関数の定義 | |
int _tmain(int argc, TCHAR *argv[]) { // main関数のTCHAR版. | |
// COMの初期化. | |
CoInitialize(NULL); // CoInitializeでCOMを初期化. | |
// Excel::CApplicationの生成 | |
Excel::CApplication *pApplication = Excel::CApplication::CreateInstance(); // Excel::CApplication::CreateInstanceで作成. | |
// 取得したpApplicationを出力. | |
_tprintf(_T("pApplication = 0x%08x\n"), (unsigned long)pApplication); // pApplicationを出力. | |
// アプリケーションの表示. | |
pApplication->put_Visible(TRUE); // Excel::CApplication::put_VisibleにTRUE渡して表示. | |
// Workbooksの取得. | |
Excel::CWorkbooks * pWorkbooks = NULL; // CWorkbooksポインタpWorkbooksをNULLで初期化. | |
pWorkbooks = pApplication->get_Workbooks(); // Excel::CApplication::get_WorkbooksでpWorkbooksを取得. | |
// 取得したpWorkbooksを出力. | |
_tprintf(_T("CWorkbooks * pWorkbooks = 0x%08x\n"), (unsigned long)pWorkbooks); // pWorkbooksを出力. | |
// Workbookを追加. | |
Excel::CWorkbook * pWorkbook = NULL; // CWorkbookポインタpWorkbookをNULLで初期化. | |
pWorkbook = pWorkbooks->Add(); // Excel::CWorkbooks::AddでWorkbookを追加し, それを取得. | |
// 追加したpWorkbookを出力. | |
_tprintf(_T("CWorkbook * pWorkbook = 0x%08x\n"), (unsigned long)pWorkbook); // pWorkbookを出力. | |
// pWorkbookの破棄. | |
if (pWorkbook != NULL) { | |
delete pWorkbook; | |
} | |
// pWorkbooksの破棄. | |
if (pWorkbooks != NULL) { | |
delete pWorkbooks; | |
} | |
// pApplicationの破棄. | |
if (pApplication != NULL) { | |
delete pApplication; | |
} | |
// COMの終了処理. | |
CoUninitialize(); // CoUninitializeで終了処理. | |
// プログラムの終了. | |
return 0; // 0を返して終了. | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ヘッダのインクルード | |
// 既定のヘッダ | |
#include <windows.h> // 標準WindowsAPI | |
#include <tchar.h> // TCHAR対応 | |
// 独自のヘッダ | |
#include "Workbooks.h" // Word::CWorkbooks | |
// コンストラクタCWorkbooks | |
Excel::CWorkbooks::CWorkbooks() { | |
} | |
// 引数付きコンストラクタ.(IDispatchポインタpDispatchを受け取る.) | |
Excel::CWorkbooks::CWorkbooks(IDispatch *pDispatch) { | |
// m_pDispatchにセット. | |
m_pDispatch = pDispatch; | |
} | |
// デストラクタ~CWorkbooks | |
Excel::CWorkbooks::~CWorkbooks() { | |
// m_pDispatchの解放. | |
if (m_pDispatch != NULL) { // m_pDispatchがNULLでなければ. | |
m_pDispatch->Release(); // IDispatch::Releaseで解放. | |
m_pDispatch = NULL; // NULLをセット. | |
} | |
} | |
// Workbookの追加. | |
Excel::CWorkbook * Excel::CWorkbooks::Add() { | |
// メソッドやプロパティのDISPIDの取得. | |
LPOLESTR lpwszName = L"Add"; // lpwszNameを"Add"で初期化. | |
DISPID dispid; // DISPID型dispid. | |
HRESULT hr = m_pDispatch->GetIDsOfNames(IID_NULL, &lpwszName, 1, LOCALE_USER_DEFAULT, &dispid); // IDispatch::GetIDsOfNamesでdispid取得. | |
if (FAILED(hr)) { // 失敗. | |
return NULL; | |
} | |
// メソッドやプロパティにアクセス. | |
VARIANT var; // VARIANT構造体var. | |
DISPPARAMS dispparams; // DISPPARAMS構造体dispparams. | |
DISPID dispidname = DISPID_PROPERTYPUT; // dispidnameをDISPID_PROPERTYPUTに初期化. | |
VariantInit(&var); // varをVariantInitで初期化. | |
dispparams.cArgs = 0; // 引数の数は0. | |
dispparams.rgvarg = NULL; // NULLを指定. | |
dispparams.rgdispidNamedArgs = NULL; // NULLを指定. | |
dispparams.cNamedArgs = 0; // cNamedArgsも0. | |
hr = m_pDispatch->Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_METHOD, &dispparams, &var, NULL, NULL); // IDispatch::Invokeでアクセス. | |
if (FAILED(hr)) { // 失敗. | |
return NULL; | |
} | |
// 成功. | |
CWorkbook *pWorkbook = new CWorkbook(var.pdispVal); // CWorkbookのコンストラクタにvar.pdispValをセット. | |
return pWorkbook; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 二重インクルード防止 | |
#ifndef __EXCEL__WORKBOOKS_H__ | |
#define __EXCEL__WORKBOOKS_H__ | |
// ヘッダのインクルード | |
// 独自のヘッダ | |
#include "Workbook.h" // Excel::CWorkbook | |
// 名前空間Excelの定義 | |
namespace Excel { | |
// ワークブックスクラスCWorkbooksの定義 | |
class CWorkbooks { | |
// privateメンバ | |
private: | |
// privateメンバ変数 | |
IDispatch *m_pDispatch; // IDispatchポインタm_pDispatch. | |
// privateメンバ関数 | |
// コンストラクタ | |
CWorkbooks(); // コンストラクタCWorkbooks(newで生成不可.) | |
// publicメンバ | |
public: | |
// publicメンバ関数 | |
// コンストラクタ | |
CWorkbooks(IDispatch *pDispatch); // 引数付きコンストラクタ.(IDispatchポインタpDispatchを受け取る.) | |
// デストラクタ | |
virtual ~CWorkbooks(); // デストラクタ~CWorkbooks | |
CWorkbook * Add(); // Workbookの追加. | |
}; | |
} | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment