Excelシートの一覧 ( ※ ADO 版 )

  LboxEnumExcelSheetAdo



  
// *********************************************************
// リストボックスにExcelシートの一覧を追加
// 戻り値 : 成功 true, 失敗 false
// ※ ADO 版
// *********************************************************
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
    no_namespace rename("EOF", "EndOfFile")

inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
BOOL LboxEnumExcelSheetAdo( HWND hList, int nIndex, LPCTSTR szFile )
{
	if ( *szFile == 0x00 ) {
		LboxListInsert( hList, nIndex, "*ERROR\tファイル名を指定して下さい" );
		return false;
	}
	if ( !PathFileExists( szFile ) ) {
		LboxListInsert( hList, nIndex, "*ERROR\tファイルが存在しません" );
		return false;
	}
	LPTSTR lpExt;
	lpExt = PathFindExtension( szFile );
	if ( *lpExt != '.' ) {
		LboxListInsert( hList, nIndex, "*ERROR\tExcelではありません" );
		return false;
	}
	if( StrStrI( lpExt, "xls" ) == NULL ) {
		LboxListInsert( hList, nIndex, "*ERROR\tExcelではありません" );
		return false;
	}

	BOOL bRet;
	_ConnectionPtr pCn;
	_RecordsetPtr pRs;
	_variant_t vValue;

	pRs	= NULL;
	pCn	= NULL;
	CoInitialize(NULL);

	_bstr_t ConnectString("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
	_bstr_t StringBuffer("");
	StringBuffer.operator = (szFile);
	ConnectString.operator += (StringBuffer);
	StringBuffer.operator = (";Extended Properties=\"Excel 8.0;\"");
	ConnectString.operator += (StringBuffer);

	try {
		TESTHR(pCn.CreateInstance(__uuidof(Connection)));
		pCn->Open(ConnectString, "", "", adConnectUnspecified);
		TESTHR(pRs.CreateInstance(__uuidof(Recordset)));
		pRs = pCn->OpenSchema( adSchemaTables );

		while( !(pRs->EndOfFile) ) {

			vValue = pRs->Fields->GetItem("TABLE_NAME")->Value;
			StringBuffer.operator = (vValue);
			LboxListInsert( hList, nIndex, (LPTSTR)StringBuffer );
			pRs->MoveNext();
			nIndex++;

		}

		pRs->Close();
		pRs.Release();
		pRs = NULL;

		pCn->Close();
		pCn.Release();
		pCn = NULL;

		bRet = true;
	}
	catch (_com_error &e)
	{
		LboxListInsert( hList, nIndex, e.ErrorMessage() );
		bRet = false;
	}

	CoUninitialize();
	return bRet;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ