前言:為什麼需要這個組件?
Excel 無疑是最普及的電子表格軟體,其強大的計算、圖表、統計功能深受用戶喜愛。隨著互聯網發展,數據共享需求日增,但專業分布式數據庫成本高昂、維護複雜、門檻極高。若能利用普通 HTTP 協議,在 Internet/Intranet 環境下實現客戶端-服務器模式的數據操作與檢索,便能廣泛應用於數據量中等、安全要求不極嚴苛的場合。
IIS 提供的 ASP 是理想的服務端數據平台,而客戶端若能直接用 Excel 處理數據庫數據,則大幅降低了使用門檻。Excel 內建 COM 支持,透過 Automation 技術可輕鬆實現組件與 Excel VBA 的通訊。本組件正是基於此原理開發。
組件架構與處理流程

系統包含五大核心角色:
- 數據源:位於 IIS 服務器,提供原始數據。
- ASP 腳本:同樣在服務器,負責解析傳入的 SQL 語句,並向組件返回查詢/操作結果。與組件通訊採用簡單 HTTP 協議。
- Excel 主程序:運行於客戶端,用於操作返回結果(排序、統計、圖表等),與本地使用無異。透過按鈕調用巨集。
- VBA 巨集程序:負責將用戶需求傳遞給組件,並將組件返回的結果還原至 Excel 界面。與組件通訊採用 COM Automation 技術,直接調用組件內建屬性與方法。
- 核心組件:調度中樞。生成界面接收用戶輸入、構建 SQL 表達式、驗證用戶權限,再將 SQL 傳給 ASP 腳本。接收 HTTP 返回結果後,按內部數據結構處理,最後傳回 VBA。
安裝與運行環境
服務器端
- IIS 4.0 或以上版本
- 將
*.asp 及數據庫文件複製至虛擬根目錄
- 建立
https://station 域名(本機調試用 https://localhost/)
客戶端
- Excel 97 或以上版本
- 1MB 硬盤空間
- 複製
School.exe 及 MFC 動態鏈接庫(需自備),運行 School.exe 一次以註冊組件
- 啟動 Excel 開啟工作表即可直接操作
核心功能:以學生成績管理為例
組件實現本地 Excel 與服務器數據庫的雙向數據交換,支援:
- 多條件查詢:點擊「Select」彈出查詢窗口,每欄位提供最小/最大值篩選與是否返回選項,支援 AND 邏輯運算。留空則返回所有數據。
- 數據插入:從 A5 儲存格起填寫字段名與數據,選中後點擊「插入新數據」,輸入正確用戶名/密碼即可寫入數據庫。
- 數據更新:指定兩欄字段名與對應值,點擊「Update」並驗證身份後,依左側欄位匹配條件更新右側數值。
- 權限控制:用戶名/密碼存於數據庫,操作前需驗證。


優缺點深度分析
優點
- 架構輕量、維護集中:資料庫操作全在服務端由 ASP+SQL 完成,客戶端組件僅傳遞 SQL,對比傳統 ODBC 大幅簡化部署與維護,系統需求極低。架構變更只需修改服務端。
- 用戶體驗無縫:以 Excel 為操作平台,無需專業數據庫知識。數據分析(排序、統計、圖表、格式轉換)直接調用 Excel 原生功能。
- 擴展性強:組件採 COM 技術編寫,不限於 Excel,可與任何支援介面技術的程式通訊。新功能只需在組件增加屬性/方法,極具靈活性。
缺點與不足
- 核心目標是演示 Automation 應用,隨附的學生成績系統並非完善產品:數據庫設計不完整、VBA 代碼冗長、依賴 Windows 導致健壯性不足、缺乏網絡連接檢查、無明確類型檢驗與錯誤回報、大數據量時效率驟降、更新/插入需遵循特定格式等。
- 成因包括:專注技術演示而非產品化、對業務領域理解不足、Excel 處理大量數據能力有限、開發者經驗尚淺(大二學生)、對 VBA/Excel 物件模型掌握不深、COM 文檔匱乏且內部 API 隱藏多(建議用 C# 開發真正 COM 程式)。
儘管如此,本程式完整展示了透過 Automation 實現遠程數據庫訪問與 Excel 完美整合的可行性,只需補強模組即可構建實用的遠程數據庫工具。
測試環境與參考資料
- Windows 2000 Professional SP2 + IIS 5 + Office XP + Pentium 4 + 256MB RDRAM
- Windows 2000 Professional + IIS 5 + Office 2000 + Pentium 3 + 256MB SDRAM
- 參考:《Inside VC++ 5th Edition》、《Quick Basic 教程》、《Excel 5 使用指南》、《ASP 網絡開發技術》、vchelp.net 相關資料
作者:ECNU.CS 熊力 (xiong_li@263.net)
本程式原擬參加校內科技作品比賽,現分享尋求指教。