---
# System prepended metadata

title: Visual Studio 仕樣書Tool
tags: [visaul studio]

---

#    Visual Studio 仕樣書Tool
###### tags: `visaul studio`

[VS、GitHub使用](https://hackmd.io/@DoubleTianTW/S1KanjwJF)
[Tool進版方式](https://hackmd.io/@DoubleTianTW/rJjfEBGEc)

## 使用到的應用程式
* [主程式](https://github.com/DoubleTian-tw/Fujitec_SpecTool)
    ![](https://i.imgur.com/E4x6BND.jpg)

* [更新程式](https://github.com/DoubleTian-tw/Update_magicTool)
    ![](https://i.imgur.com/2nBKkO2.jpg)

* 使用者操作手冊
    * M:\....\yc_tian\Tool Application\使用者使用說明書
    * 可自行修改成符合需求的內容
    
## 模組、Form簡述
![](https://i.imgur.com/zhxpbEc.png)
1. ChangeLink.vb
    * 設定MagicTool超連結、基本設定等等
2. ChangeLink_BasicString.vb
    * 設定ChangeLink程式碼中常使用的String變數
3. CheckNewVersion.vb(不使用)
    * 檢查更新用(先前版本使用的) 
4. controlStateOnChangeLink.vb
    * ChangeLink中的資料會從SetFile.ini檔案讀取至控制項中
    ![](https://i.imgur.com/WI7C7sl.jpg)
5. About.vb
    * 每次更新Tool時更新的內容會寫在此Form中(有時候會忘記更新)
6. MagicTool.vb
    * 主程式包含
        * 超連結、日曆記事本、創建資料夾、製作仕樣書、版本更新
7. AutoLoad_inJobMaker.vb
    * 舊版的載入SPEC資料進JobMaker中
    * 最新版本請切換分支(branch_AutoLoad)，目前還在開發(差不多完成可參考沿用)
8. DynamicControlName.vb
    * 動態生成控制項的Name
        * 因為動態生成時如果需要抓取內容值的時候，會需要得到控制項的Name
        * 所以定義Name變數在此
    * 舉例:自家發電
    ![](https://i.imgur.com/WzZpYt4.png)
    ![](https://i.imgur.com/WYU8FJ9.png)
9. LoadStored_ProgressBar_Form.vb(可刪除未使用)
10. Output_ToSpec.vb
    * 將JobMaker中的所有資料輸出到Excel
    * [注意]Excel中的名稱管理員變數要與程式碼相同
11. replaceControllerName.vb(不使用) 
12. Spec_Item.vb
    * 替代文字及存panel控制項
13. Spec_NameManager.vb
    * 對照Excel中的名稱管理員 
14. Spec_StoredJobData.vb
    * 讀取、儲存JobMaker中使用者輸入的資料
    * 讀取寫入至SQLite
## 維護JobMaker

追加開發成員方式:
- 在JobMaker.vb-developmentMember後方追加工號
![](https://i.imgur.com/HZpDl3H.png)
- 差別在於會顯示測試按鈕
![](https://i.imgur.com/qE03Q33.jpg)

(開發中)導入GPAS資料
- 圖片中的自動讀取為Master分支版本，開發中的要切換到Branch_AutoLoad分支
- 如果之後有要繼續開發請切換至該分支
![](https://i.imgur.com/04Oxc3D.png)

輸出Excel時發生錯誤解決方式

![](https://i.imgur.com/PPAUr6K.png)

* 舉例

![](https://i.imgur.com/MRiDSQ5.png)

- 當使用者按下輸出鈕時發生異常狀況
[Try Catch 陳述式](https://docs.microsoft.com/zh-tw/dotnet/visual-basic/language-reference/statements/try-catch-finally-statement)
```VB    
Try
    '執行動作
Catch ex as Exception
    '當程序錯誤異常時執行此段
Finally
    '不管程序是否錯誤或正確，最終都會執行此段
End Try
```

- 請使用者擷取"錯誤訊息"的errorInfo.txt最新內容
    1. ====最新日期
    2. (模組).(函式)====
    3. 系統+非系統錯誤訊息 
![](https://i.imgur.com/opvQeLZ.jpg)

* 善用Ctrl+F搜尋錯誤的(模組)及(函式)
![](https://i.imgur.com/qQjC14x.jpg)
* 並使用F9或偵錯>切換中斷點下中斷點
![](https://i.imgur.com/zuXh2DY.png)
* 啟動應用程式並執行動作，讓程序跑到中斷點後使用F10(不進入函式)或F11(進入函式)逐一debug，查看是哪個地方出錯
![](https://i.imgur.com/ZOSImJ4.png)
* 其他函式亦同方式debug

## 更新Tool方式


## 參考資料

### Visual Studio
* [讀取寫入ini檔案1](https://dotblogs.com.tw/xavioroutpsot/2012/06/12/72744)
* [讀取寫入ini檔案2](http://limdanm19.blogspot.com/2016/02/vbini.html)
* [讀取寫入ini檔案3](http://n222147.blogspot.com/2012/01/vbnet-ini.html)
* [應用程式開機時自動執行1](http://www.blueshop.com.tw/board/FUM200501271723350KG/BRD20110108190807L73.html)
* [應用程式開機時自動執行2](http://savagevb.blogspot.com/2008/09/vbnet_905.html)
* [各種工具箱元件介紹](https://dotblogs.com.tw/programmerfighting/2018/01/25/100514)
* [偵錯時顯示自訂文字](https://dotblogs.com.tw/JesperLai/2018/04/11/004409)
* [自動生成注釋](https://kknews.cc/zh-tw/code/8kmy2jq.html)
* [程式碼快速縮合](https://dotblogs.com.tw/adb/2017/04/27/115610)
* [小技巧](https://blog.csdn.net/Qsir/article/details/78749486)
* [確認程序是否被開啟](https://social.msdn.microsoft.com/Forums/vstudio/en-US/77153d31-a23f-48d0-a4c4-2a3867370af6/vbnet-check-to-see-if-a-process-is-running?forum=vbgeneral)
* [應用程式版本管控方式](https://dotblogs.com.tw/franma/2011/07/18/31736)

### 資料庫
* [SQL基本語法](https://www.1keydata.com/tw/sql/sql-syntax.html)
* [SQLite使用1](http://blog.e-happy.com.tw/%E4%BB%A5-db-browser-for-sqlite-%E7%AE%A1%E7%90%86-sqlite-%E8%B3%87%E6%96%99%E5%BA%AB/)
* [SQLite使用2](https://blog.darkthread.net/blog/dapper-sqlite/)
    * [VS內應該要用NuGet安裝SQLite，載入函式庫後才可以寫Code](https://coolmandiary.blogspot.com/2018/02/sqlitevbnetdbserverless.html)
* [SQLite使用3](https://blog.poychang.net/note-sqlite/)
* [SQLite使用4](https://www.guru99.com/c-sharp-access-database.html)
* [SQLite讀取寫入](https://coolmandiary.blogspot.com/2018/02/sqlitevbnetdbserverless.html)
* [SQLite菜鳥教學](https://www.runoob.com/sqlite/sqlite-intro.html)
* [SQLite微軟官方文件](https://docs.microsoft.com/zh-tw/dotnet/api/system.data.sqlclient?view=dotnet-plat-ext-5.0)
* [SQLite如何讀橫列](https://stackoverflow.com/questions/17284967/is-it-possible-to-get-column-name-header-in-sqlite-using-c)

### Excel
* [計算橫列數量](https://stackoverflow.com/questions/22185267/count-rows-for-merged-cells)
* [Use Range or Cell?](https://blog.xuite.net/crdotlin/excel/9092240-%E7%94%A8Range%EF%BC%9F%E7%94%A8Cells%EF%BC%9F)
* [資料型態](https://edisonx.pixnet.net/blog/post/42114074-vba-%E8%87%AA%E5%AE%9A%E7%BE%A9%E8%B3%87%E6%96%99%E5%9E%8B%E6%85%8B)
* [常用語法](https://alyoou.pixnet.net/blog/post/42784108-excel-vba-%E7%9B%B8%E9%97%9C%E8%AA%9E%E6%B3%95)
* [關閉警告訊息](https://edisonx.pixnet.net/blog/post/42267366-vba-%E6%B4%BB%E9%A0%81%E7%B0%BF(workbooks)%E7%AE%A1%E7%90%86)
* [MVC架構](https://www.kenming.idv.tw/talking_about_excel_vba_mvc_framework/)
* [模組化概念](http://www.chwa.com.tw/TResource/VS/book2/ch3/3-6.htm)
* [二維陣列](http://forum.twbts.com/thread-8012-1-1.html)
* [Dictionary](https://excelmacromastery.com/vba-dictionary/)
* [File Dialog](https://www.mrexcel.com/board/threads/get-file-name-from-file-dialog-object.875117/)
### GitHub
* [如何共同協作開發](https://medium.com/%E9%96%8B%E7%99%BC%E9%9A%A8%E7%AD%86/git-%E5%85%B1%E5%90%8C%E5%8D%94%E4%BD%9C%E9%96%8B%E7%99%BC-adac8ed2e949)
* [共同開發筆記](https://ithelp.ithome.com.tw/articles/10187678)
* [甚麼是Git](https://www.cnblogs.com/chillsrc/p/14628485.html)
* [Git&VS介面](https://blog.darkthread.net/blog/vs-git-branch-switch/)
