雜談軟體商業化失敗的經驗

感謝網友的建議,讓ExcelMail從1.0逐漸發展至3.0。原本ExcelMail只是我工作上針對校內同事發送電子信函的工具,後來增益集工坊陳先生看到ExcelMail個軟體,希望與我合作由他來負責手冊部分,把軟體交給他進行商業化。後來發現使用者的數據並不如預期,主要是其中欠缺一些使用者需要的功能,雖然答應陳先生著手進行修改,但是自從提供給增益集工坊 陳先生後幾乎沒有甚麼大修改。所以原訂的商業化動作也停止(手冊也沒有著落),目前增益集工坊 網站大部份由他的弟弟在維護,因為他自己的工作重心已經轉移至大陸,不過他已經告知我增益集工坊 在明年租約到期,除非有人接手否則應該就會關站!

ExcelMail發展延遲的原因很多,一方面是自從卸下資訊組長的工作,這個軟體連我自己都很少用,缺乏改進的強烈動機,反而是其他增益集我在教學會用到,開發的構想與創意反而源源不絕!

再者回鍋當專任國中理化科老師之後,因為授課時數很多,電腦不是業務上必須的,下班才會有時間靜下來寫個一兩行,接觸電腦的時間比起從前每天十幾個小時少很多,寫程式的手感不是那麼好,常常一個小功能寫寫停停一兩個月就過去了,再來以前寫程式的目的大部分是因為自己業務要用,除非是研習教學,大部分都沒有操作手冊,光要把這些缺的使用手冊補起來,已經佔掉大部分的時間,所以有些網友說為什麼不在部落格寫一些程式學習的主題,除了不敢在這裡班門弄斧,沒有時間也是一個原因。

這個失敗的經驗呈現一個事實,兼差或腳踏兩條船的心態,很難把事情做好。對我來說自己寫的程式只是方便我處理學校業務的工具,商業化與否不是我考慮的,所以我不會考慮其他使用者的想法,陳先生找我的時候,ExcelMail交給他我只是抱持在壓榨這個軟體的剩餘價值,而不是創造新的價值,所以對我來講可有可無,一旦有此種可有可無的兼差心態,就注定它失敗的命運。

陳先生經營增益集工坊 網站的心態也許也是如此。不過這不能怪他,現在台灣的職場薪資低迷,在私人公司不兼差收入可能難以在台北生活。對我來說我只是著作的創作者,這在教育單位並不是特例,不會對我有太大影響,但是陳先生在私人公司兼差做和自己本行相關之事可能又犯了老闆的大忌,只能私下進行無法全力以赴,而當此網站無法有所獲利,更不可能投注金錢心力在其上。不過還是感謝他這麼多年讓我的作品有一個推廣的平台。

一個非科班程式設計者的增益集開發心得(給初學者的建議)

因為本身並沒有受過完整的資訊科學訓練,不敢在這個專業的社群部落格班門弄斧談程式設計的技術,不過因為唸研究所時教授指導的CAI研究主題,要找尋適合教師製作的輔助教學多媒體的工具與平台,讓我有機會接觸到Office增益集的設計。

因為本身是學化學的,並沒有資訊的背景,和指導教授深談過,要從零開始設計一個CAI軟體,在當時僅在學校使用過PE2與慧星一號的我,簡直是天方夜譚。所以教授希望我把研究的方向放在:尋找適合中小學教師製作的輔助教學多媒體的工具與平台,以此平台或工具設計一個範例。

在當時比較常聽到用在製作多媒體CAI的軟體是Macromedia 的 AUTHORWARE(後來被Adobe合併了),但是其學習的門檻與價格較高,中小學受限於經費與教師高授課時數,不利於在中小學推廣。所以教授希望我把目標鎖定在學校老師常用的軟體著手,看是否能利用學校所提供老師手邊常用的軟體做為設計CAI的軟體或平台,一方面避免經費的問題,另一方面希望降低老師學習的門檻,提高老師使用推廣的意願。

後來決定使用office 來做為CAI的製作工具,一方面當時office是學校老師普遍使用的軟體,二方面office 97已經提供相當不錯的多媒體整合功能,可以利用ActiveX控制項在OFFICE文件放入多媒體資料,另外office 97的VBA也提供設計互動性Office文件的可能性。

因為是留職停薪去唸研究所,有時間的壓力所以當決定以Office為平台之後,開始思考如何能快速完成教授交付的任務,經過一段時間的工作分析,先把CAI的腳本訂出來,針對腳本中可以使用Office來完成的文字與影像內容,實在無法完成的部分,再找尋其他工具,例如在CAI內容中我們要放入一個拍攝實驗影片的mpeg檔案,就利用當時還不是很普遍mpeg1影音壓縮卡,來剪輯壓縮V8所拍的影片,互動的部分我們使用VBA程式來完成,在這個過程中我學習到一些寶貴的VBA程式設計經驗。

在此與各位先進分享我的小小心得,首先Office的功能很豐富,有很多功能藏身於細節中,所以首要是把Office可以應用於我的CAI製作的功能找出來進行整合,VBA巨集成為整合這些功能很好的黏膠,透過VBA巨集程式的串聯可以使Office文件有系統的整合成一個連貫的電腦輔助教材。如先前所說:在此之前我從未接觸程式設計的東西,VBA對我來說一樣是具有難度,如何在很短時間完成教授指定的任務?當然找文獻是研究生必備的能力,就到幾個大的書店找看看有無相關的參考書籍,當時VBA程式設計相關的中文書籍並不多,找了許久找到一本洪士吉先生著作的EXCEL 97 VBA巨集程式範例。從中學習到VBA巨集程式的一些基本概念,也看到VBA程式的威力,也從中學到設計增益集的方法。

有網友問到如何才能學會增益集的設計?我有幾點個人的經驗與大家分享:

1.首先增益集是一種附加功能的外掛軟體,Addin是補原來軟體不足或不便之處,所以你必須先熟悉你要設計的增益集的容器軟體,舉例你要設計Excel的Addin(增益集),你一定要熟悉Excel的各項功能,如果你不熟悉Excel的功能與用途,除了你很難利用程式去控制Excel之外,再者你所開發的功能可能已經存在Excel中(虛工一場)。

2.要開發軟體當然至少要熟悉一種程式語言,那一種程式語言比較適合入門者來開發增益集?OFFICE支援COM的格式的增益集,所以很多程式語言都可以開發OFFICE增益集,但是根據我的經驗;初學者應該要從OFFICE本身的VBA開始,一方面是Office已經提供VBA的IDE,再者VBA的語法相對比較簡單,另外微軟附在OFFICE中的VBA文件說明相當完整。

在OFFICE的VBA IDE中,只要將程式碼中相要知道的語法、物件方法或物件屬性選取反白,按一下F1快速鍵,很快就可以查到相關的說明或範例。舉例我想知道Chdir這個陳述式的用法,只要將之反白選取,再按F1鍵即可快速找到參考。

image

image

有這樣的工具,你可以很快速去熟悉OFFICE的物件架構,因為不管用VB或C#開發OFFICE增益集其實都應用到OFFICE的物件,所以熟悉OFFICE的物件架構,才能讓您快速進入狀況。

3.另外建議初學者先不要從POWERPOINT開始,我建議先從WORD或EXCEL先下手,因為OFFICE2007中POWERPOINT沒有巨集錄製的功能。Word或Excel都有錄製巨集的功能,執行錄製巨集的功能,再操作Excel或Word,程式會自動建立相關動作指令的程式碼,可以讓我們比較快速了解程式執行指令與程式碼的關係,另外在VBA的IDE中進行單步除錯,也可以反向了解程式碼的功能。 至於像Powerpoint沒有錄製巨集的功能,只能從Office的說明中,找到Powerpoint相關的物件、方法、屬性去試我們需要的功能指令。

image image

4.善用msdn所提供的範例,利用google輸入msdn office addin development這幾個關鍵字可以找到一堆相關的參考資料,透過微軟提供的範例,可以幫助初學者上手。

在Excel中使用正規表示法(Regular Expression)進行資料篩選(七)

在Excel中使用正規表示法(Regular Expression)進行資料篩選(六) 中我們將資料從報表中擷取出來,必須在進行資料的分類,我們在報表中最後一個教師課表後,再加上一個空的教師課表(如表一),表格上不是老師的課表資料,而是資料格對應的資料名稱,這樣我們可以將擷取出來的每一個資料格對應至某些欄位。

image (表一)

1.擷取所得的資料如下(表二),我們可以依『資料內容』欄位先進行排序,將『資料內容』此欄沒有資料的部分刪除,這個欄位沒有資料的部分就不是我們需要,可以直接刪除。

image (表二)

2.再來進行資料的分類,將報表號最後一號的資料剪下貼至另一工作表如(表三)

image (表三)

3.再利用『工作表資料擷取』,比對『所在欄位』(C欄)『所在列位』(D欄)將(表三)的B欄資料倒入(表二)的E欄中。

image image

4.執行之後得到(表四),新增一欄(對應欄位),再利用此欄進行排序,我們可以將同類資料集中,例如我們可以得到教師的姓名(表五)、職稱(表六)

image (表四)image (表五)

image (表六)

5.另外星期、節數、科目可以從『對應欄位』中『星期一第1節』等類型得到,但是班級必須從『星期一第1節班級』類型得到,所以我們必須先把『星期一第1節班級』類型的資料先分離出來,可以利用『工作表資料篩選』將『對應欄位』中有班級二個字的資料列篩選出來複製至其他工作表,再將利用『資料剖析』將星期節數與班級分離得到(表七),再複製表七A欄資料至G欄成為(表八)。

image image

image (表七)

image (表八)

6.在(表四)中我們複製『報表號』欄位資料至F欄,再利用『工作表資料擷取』以(表八)中F欄、G欄資料做為進行資料篩選比對的依據,將班級倒回(表四)中,再依同樣步驟倒入姓名,可以得到下(表九),只要再將『資料內容』欄位更名為科目,『對應欄位』欄位進行資料剖析,更名為星期與節數,將『所在欄位』、『所在列位』兩欄刪除即可得到(表十),幾乎就等於我們所要的資料表。

image (表九)

image (表十)

在Excel中使用正規表示法(Regular Expression)進行資料篩選(四)

正規表示法運用在Excel資料處理有意想不到的便利,以在Excel中使用正規表示法(Regular Expression)進行資料篩選(一)為例,再示範一個正規表示法篩選,改使用在Excel中使用正規表示法(Regular Expression)進行資料篩選(二) 擷取後進行資料剖析,所得到的資料表(表一)為處理對象

image (表一)範例檔案

假設我們希望在網點編號資料相臨的5個編號成一組,在資料表進行顏色的區分成下表二:

image (表二)

我們怎麼做?只要將網點編號資料選取

image (剖析所得之資料)

點選『正規比對資料過濾』\『工作表資料篩選』叫出『選取符合篩選條件的資料』表單

image image

在『選取符合篩選條件的資料』表單中按下『篩選的資料範圍』參數的『選取』鈕,取得篩選的網點編號資料位址([學校教室分配圖.xlsx]資料表!$B$2:$B$151),在『輸入正規表示法比對樣本』參數中輸入:[12345]$

此樣版乃表示我們要選取網點編號資料中,編號尾碼有1、2、3、4、5等5個數字任何一個的資料。

再將選取的對象指定為『選取資料格所在列』,再執行『篩選』。

image

篩選所得如下

image

再切換工作區至『常用』\『儲存格樣式』,設定選取的範圍為所要的顏色即可得到(表二)。

image

在Excel中使用正規表示法(Regular Expression)進行資料篩選(三)

接續上一篇文章在Excel中使用正規表示法(Regular Expression)進行資料篩選(二)中所說的例子,是事後將網點資料資料建置留底,合理的步驟是在施工前我們應該將這份資料規劃給施工單位,這一份教室的平面圖資料必須重複利用產生不同加註的內容資料,提供給不同施做部分的工作人員,例如在教室施工的人員與網路設定的人員需要的資訊也許不同。

網路設定人員需求:教室編號+網點編號+switch編號

至真501編號A01portA01

教室施工的人員需求:教室編號_網點編號_網點在教室位置

至真501_A01_前右

要達到快速進行資料修改,所以除了要將資料擷取出來,也要可以反向將資料寫回平面圖資料表對應的資料格中。在『正規比對資料過濾』的『工作表資料篩選』中加入一個『寫入篩選結果參考位置』的參選項,勾選此選項當寫入篩選結果時,會在寫入的下一欄寫下篩選資料格所在之Excel工作表的位置,以在Excel中使用正規表示法(Regular Expression)進行資料篩選(二)中所說的例子,我們勾選『寫入篩選結果參考位置』(圖一),執行『篩選』再執行『寫入』所得的結果(如圖二)

image (圖一)

image (圖二)

這個帶有篩選資料位址的結果,可以幫助我們將修改的資料寫回教室位置資料工作表中

舉例我們將擷取的X欄位資料後加入Z欄然後再加入:教室編號_網點編號_網點在教室位置

例如:至真501_A01_前右

image

 

在『正規比對資料過濾』的『工作表資料篩選』的功能表中有一個『依位址寫入資料』的功能,點選此功能叫出『依位址寫入』表單

image image

將Z欄:教室編號_網點編號_網點在教室位置 的資料選取在『資料範圍』參數中。

將Y欄:教室位置資料格的參考位址 資料選取在『位址欄位』

image

執行『寫入』,教室位置表更新如下。

image

在Excel中使用正規表示法(Regular Expression)進行資料篩選(二)

前幾年學校進行全校教室網點佈置,負責網管的曾正德老師,為了方便施工單位從總務處拿到一個利用Excel繪製的教室所在平面圖,直接在平面圖標示網點腳環編號,再另外繪製一個網點對應機房中 48 port switch 的port編號,因為全校佈置的網點為數不下數百點,看到曾老師逐一輸入相關資料實在是大工程,在施工期限緊迫的當下實在無暇去思考其他便捷的方法,事後完工之後曾老師把此平面資料給我,看了資料我想把這個資料轉成資料庫,我設計一個巨集,把圖面中教室網點資料擷取出來成為1個欄位,再將欄位資料剖析成需要的欄位資料,這個巨集程式我把它整合於『正規比對資料過濾』的『工作表資料篩選』,以下圖資料為例,假設此為教室之平面圖已經標示好教室資料與網點編號與及switch port 對應編號,我希望把這些資料擷取出來做成以下資料表。

image (原始資料全圖)

image (放大資料圖)

image (整理後的資料表)

原始的平面圖資料內容為:教室編號+網點編號+Switch port編號

例如:至真501編號A01portA01

如何進行?

1.點選『正規比對資料過濾』的『工作表資料篩選』叫出『選取符合篩選條件資料』表單

image image

2.將平面圖資料部分選取,按下表單中『篩選的資料範圍』『選取』鈕。

image

3.在選取『篩選結果寫入範圍』中,我們選取X欄,將篩選資料寫入此欄位

image

4.在『輸入正規表示比對樣版』中輸入: 至

因為教室編號開頭都有"至”這個關鍵字

5.按下『篩選』鈕,可以發現有"至”這字的資料都被選取

image

image

6.再按下『寫入』即可將資料逐一寫入X欄位選取的資格之後

image

7.再將資料複製之其他工作表,進行資料剖析分成三個欄位。

image

操作步驟影片