共用對話盒模組

取得開啟檔案名稱
取得儲存檔案名稱
印表機列印設定
選擇字型對話盒
取得多重開啟檔案名稱
選擇顏色對話盒
紙張留白設定對話盒
取得印表機不可列印紙張邊緣

取得開啟檔案名稱

很多人常為了利用共通對話盒取得開啟檔案名稱,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用

函數名:myGetOpenFileName,傳回值為共通對話盒所選定之檔案名稱

引數 類型 說明
hTitle 可省略 對話盒抬頭
hFilter 可省略 開啟檔案類型,詳情請參閱 Visual Basic 說明
DefaultDir 可省略 預設目錄,若省略則以最後一次呼叫目錄為預設目錄
DefaultFileName 可省略 預設開啟檔名
wFlags 可省略 旗標,詳情請參閱 Visual Basic 說明
hWnd 可省略 呼叫本函數的視窗代號

範例:

Debug.Print myGetOpenFileName ' 傳回值為共通對話盒所選定之檔案名稱

說明:

本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd,字串工具模組傳回全部取代字串:myReplaceString

註解:

OFN_NOREADONLYRETURN = &H8000& ' 若無先將轉為長整數,則此常數將造成錯誤,在 Windows 2000 / XP 將發生直接終結程式現象

若需先預設某一目錄為預設開啟目錄,且不希望跳出對話框時,可採用:

Private Sub Form_Load()

summy = myGetOpenFileName(, , App.Path, , -1) ' 設定起始目錄

End Sub

取得多重開啟檔案名稱

很多人常為了利用共通對話盒取得開啟檔案名稱,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用

函數名:myGetMutliOpenFileName,傳回值為共通對話盒所選定之檔案名稱

引數 類型 說明
hTitle 可省略 對話盒抬頭
hFilter 可省略 開啟檔案類型,詳情請參閱 Visual Basic 說明
DefaultDir 可省略 預設目錄,若省略則以最後一次呼叫目錄為預設目錄
DefaultFileName 可省略 預設開啟檔名
wFlags 可省略 旗標,詳情請參閱 Visual Basic 說明
hWnd 可省略 呼叫本函數的視窗代號

範例:

tfn=myGetMutliOpenFileName ' 傳回值為共通對話盒所選定之多重檔案名稱陣列
For i=Lbound(tfn) to Ubound(tfn):? tfn(i):Next i

說明:

本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd,字串工具模組傳回全部取代字串:myReplaceString,字串工具模組傳回以特定字串分隔的中間字串:InstrString

附註:

本函數目前檔案名暫存區有 32 KB,約可容納 2,730 檔名

取得儲存檔案名稱

很多人常為了利用共通對話盒取得儲存檔案名稱,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用

函數名:myGetSaveFileName,傳回值為共通對話盒所選定之檔案名稱

引數 類型 說明
hTitle 可省略 對話盒抬頭
hFilter 可省略 開啟檔案類型,詳情請參閱 Visual Basic 說明
DefaultDir 可省略 預設目錄,若省略則以最後一次呼叫目錄為預設目錄
DefaultFileName 可省略 預設開啟檔名
wFlags 可省略 旗標,詳情請參閱 Visual Basic 說明
hWnd 可省略 呼叫本函數的視窗代號

範例:

Debug.Print myGetSaveFileName ' 傳回值為共通對話盒所選定之檔案名稱

說明:

本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd,字串工具模組傳回全部取代字串:myReplaceString

選擇顏色對話盒

很多人常為了利用共通對話盒取得顏色長整數值,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用

函數名:myChooseColor,傳回值為共通對話盒所選定之顏色長整數值

引數 類型 說明
hColor 可省略 預設顏色
hWnd 可省略 呼叫本函數的視窗代號

範例:

Debug.Print myChooseColor ' 傳回值為共通對話盒所選定之顏色長整數值

說明:

若按下取消,則傳回值為 -1 ,本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd

印表機列印設定

很多人常為了利用共通對話盒取得顏色長整數值,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用,本函數可透過引數傳回列印頁數設定,但這個資訊利用需由程式設計師自行運用,另本函數可透過對應的命令鈕設定印表機,因此另增加印表機的對應,但 Visual Basic 中 Printer 物件的屬性有限,所以我只能針對 Printer 中有的屬性設定

函數名:myPrintDlg,傳回值為列印份數

引數 類型 說明
wFlags 可省略 印表機列印設定的旗標
nMinPage 可省略 最小頁碼,參見註 1
nMaxPage 可省略 最大頁碼,參見註 1
nFromPage 可省略 起始頁碼,參見註 1
nToPage 可省略 終了頁碼,參見註 1
hWnd 可省略 呼叫本函數的視窗代號

註 1 :若為非 0 值,則自動加上旗標 PD_PAGENUMS,但 nMinPage 與 nMaxPage 不可省略

範例:

myPrintDlg ,1,10,nf,nt ' 起始頁碼、終了頁碼均為 Empty
Debug.Print nf,nt ' 其值為 2, 5

說明:

本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd

紙張留白設定對話盒

這個對話盒 Visual Basic 並未包裝,所以無對應 Visual Basic 的部分說明,本函數可透過引數傳回紙張邊緣留白,但這個資訊利用需由程式設計師自行運用,本函數中亦自動抓取並加入最小紙張邊緣留白,使用者若設定小於最小紙張邊緣留白,將自動以最小紙張邊緣留白取代,另本函數可透過對應的命令鈕設定印表機,因此另增加印表機的對應,但 Visual Basic 中 Printer 物件的屬性有限,所以我只能針對 Printer 中有的屬性設定

函數名:myPageSetupDlg,傳回值目前未定義

引數 類型 說明
wFlags 可省略 紙張設定的旗標
pLeft 可省略 紙張左緣留白,參見註 1
pTop 可省略 紙張上緣留白,參見註 1
pRight 可省略 紙張右緣留白,參見註 1
pBottom 可省略 紙張下緣留白,參見註 1
hWnd 可省略 呼叫本函數的視窗代號

註 1 :若為非 0 值,則自動加上旗標 PSD_MARGINS,單位為 0.01 毫米

範例:

myPageSetupDlg ,pLeft,pTop,pRight,pBottom ' 邊緣留白均為 Empty
Debug.Print pLeft,pTop,pRight,pBottom ' 其值為 3000, 1500, 1000, 3500

說明:

本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd

選擇字型對話盒

很多人常為了利用共通對話盒設定字型各項參數,必需在 Visual Basic 中引用 comdlg32.ocx (Common Dialog) ,本函數直接呼叫系統內建的 comdlg32.dll ,可省略對 comdlg32.ocx 的引用

函數名:myChooseFont,傳回值為共通對話盒所設定字型參數的標準字型物件

引數 類型 說明
hFont 可省略 來源標準字型物件,stdFont
hColor 可省略 標準字型物件無顏色可供設定,透過本引數設定色彩
wFlags 可省略 字型設定的旗標
MinFontSize 可省略 限制最小字型尺寸,參見註 1
MaxFontSize 可省略 限制最大字型尺寸,參見註 1
hWnd 可省略 呼叫本函數的視窗代號

註 1 :若為非 0 值,則自動加上旗標 CF_LimitSize

範例:

fColor = Me.ForeColor
Set Me.Font = myChooseFont(Me.Font, fColor, , 16, 20)
Me.ForeColor = fColor

說明:

設定 Form 的字型格式,並限制字型大小介於 16 ~ 20 ,因字型顏色設定 .ForeColor 中,而 .ForeColor 為屬性無法透過引數設定,必須透過中間變數,若按下取消,則傳回值為 Nothing,本函數需參照視窗工具模組尋找自己的 hWnd:myHWnd

取得印表機不可列印紙張邊緣

私有函數名:myGetPrinterPaperLimit,無傳回值,採引數傳遞紙張邊緣,單位為 0.01 毫米

引數 類型 說明
MinMargin RECT 使用者自訂型態

範例:

myGetPrinterPaperLimit .rtMinMargin

With tPageSetup
 .rtMargin.Left = pLeft
 .rtMargin.Top = pTop
 .rtMargin.Right = pRight
 .rtMargin.Bottom = pBottom
End With

說明:

本函數為紙張留白設定對話盒之子函數,以避免使用者在紙張留白設定對話盒中設定超出印表機可列印範圍,因此本函數屬本模組之私有 (Private) 函數而非公用 (Public) 函數,建議依所需求加入個人程式中