Nói là bảo mật Excel có thể sử dụng VB6. Nhưng nếu VB6 không thạo, thì cứ định làm gì chúng ta sẽ ngại. Do đó tôi lập topic này, bản thân thực hành và cố gắng viết lại thật dễ hiểu để các bạn có thể thực hành theo. Nếu ai chưa cài VB6 thì tham khảo
Nếu là VBA Excel, cả google hay tự code đều rất đơn giản.
Vấn đề thực hành 1: Ở bài viết này tôi đặt ra yêu cầu là : Chúng ta ấn vào nút Open thì sẽ có hộp thoại Dialog hiện lên cho ta chọn file txt, người dùng ấn chọn file thì ô Text1 sẽ hiển thị đường dẫn fullpath của file text.
Tưởng như đơn giản nhưng tôi khá mất thời gian.
Nào chúng ta bắt đầu:
Mở VB6 lên, chọn Standard EXE. Mục đích chúng ta tạo ra một chương trình là file exe.
Ngay lập tức đã có sẵn một cái Form (tương tự Userform trong VBA).
Tôi muốn lấy ô Textbox để làm nơi lưu đường link của file.
Biểu tượng khá giống trên Excel. Sau khi click vào biểu tượng ô Textbox thì bạn dùng chuột và kéo thả vào Form.
Ở bước này, tôi không hiểu sao tôi di chuyển khá khó khăn. Thực sự không thể kéo thả cho đẹp như trên Excel. Các bạn kéo thả có tiện lợi không thì nêu ý kiến trong topic này nhé.
Tuy nhiên không sao cả, tôi cứ kéo thả nó vào trong Form.
Sau đó sẽ chỉnh vị trí và kích thước bằng "đại số".
Thông qua các thông số Top, Left, Width, Height, tôi đã có thể tinh chỉnh lại vị trí cũng như kích thước của ô Textbox (chú ý tên của nó là Text1).
Vậy là xong.
Bây giờ lôi cái nút bấm.
Tôi cũng chỉ có thể kéo thả nó ra Form. Rồi lại dùng phương pháp "đại số" để điều chỉnh kích thước cũng như vị trí của nó. Quá khổ sở.
Về thuộc tính của các đối tượng, tôi chưa thấy có điểm khác biệt nào với Excel. Ít nhất là những thứ tôi sử dụng.
Nào , giờ viết code cho nút Open thì cứ click đúp vào nút bấm để ra nơi viết code. Y chang như Excel phải không nào.
Đây là bước tôi mất thời gian. Cần phải code cho nút Open này để select được file txt.
Google thì sẵn đấy, giờ nếu bạn tự tin thì đóng topic này lại và tự google để tìm code đi.
Nào, đây là code của tôi:
Nguồn:
API là phần khó, tôi không chắc tôi việt hóa comment đã tốt. Nếu các bạn muốn bổ sung thì cứ comment trong topic này.
OK. Code trên là chạy được rồi. Nói thật, tôi google ra được khá nhiều code nhưng trên máy tôi đều không chạy, chỉ có code này là ổn.
Máy tính của tôi là Win 10, 64bit.
Ấn nút Play để chạy thử nhé.
Form đã hiện ra rồi.
Giờ muốn build ra exe để chia sẻ cho máy tính khác thì ta làm như sau:
Vào File:
Make exe thôi.
Tôi chọn nơi lưu là destop.
Ấn OK.
Bạn cần đăng nhập để thấy link
.Nếu là VBA Excel, cả google hay tự code đều rất đơn giản.
Vấn đề thực hành 1: Ở bài viết này tôi đặt ra yêu cầu là : Chúng ta ấn vào nút Open thì sẽ có hộp thoại Dialog hiện lên cho ta chọn file txt, người dùng ấn chọn file thì ô Text1 sẽ hiển thị đường dẫn fullpath của file text.
Bạn cần đăng nhập để thấy đính kèm
Tưởng như đơn giản nhưng tôi khá mất thời gian.
Nào chúng ta bắt đầu:
Bạn cần đăng nhập để thấy đính kèm
Mở VB6 lên, chọn Standard EXE. Mục đích chúng ta tạo ra một chương trình là file exe.
Ngay lập tức đã có sẵn một cái Form (tương tự Userform trong VBA).
Tôi muốn lấy ô Textbox để làm nơi lưu đường link của file.
Bạn cần đăng nhập để thấy đính kèm
Biểu tượng khá giống trên Excel. Sau khi click vào biểu tượng ô Textbox thì bạn dùng chuột và kéo thả vào Form.
Ở bước này, tôi không hiểu sao tôi di chuyển khá khó khăn. Thực sự không thể kéo thả cho đẹp như trên Excel. Các bạn kéo thả có tiện lợi không thì nêu ý kiến trong topic này nhé.
Tuy nhiên không sao cả, tôi cứ kéo thả nó vào trong Form.
Sau đó sẽ chỉnh vị trí và kích thước bằng "đại số".
Bạn cần đăng nhập để thấy đính kèm
Thông qua các thông số Top, Left, Width, Height, tôi đã có thể tinh chỉnh lại vị trí cũng như kích thước của ô Textbox (chú ý tên của nó là Text1).
Vậy là xong.
Bây giờ lôi cái nút bấm.
Bạn cần đăng nhập để thấy đính kèm
Tôi cũng chỉ có thể kéo thả nó ra Form. Rồi lại dùng phương pháp "đại số" để điều chỉnh kích thước cũng như vị trí của nó. Quá khổ sở.
Bạn cần đăng nhập để thấy đính kèm
Về thuộc tính của các đối tượng, tôi chưa thấy có điểm khác biệt nào với Excel. Ít nhất là những thứ tôi sử dụng.
Nào , giờ viết code cho nút Open thì cứ click đúp vào nút bấm để ra nơi viết code. Y chang như Excel phải không nào.
Đây là bước tôi mất thời gian. Cần phải code cho nút Open này để select được file txt.
Google thì sẵn đấy, giờ nếu bạn tự tin thì đóng topic này lại và tự google để tìm code đi.
Nào, đây là code của tôi:
Mã:
'Ham API select file
Private Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
'Cau truc setting
Private Type OPENFILENAME
lStructSize As Long 'Kich thuoc cau truc
hwndOwner As Long 'Handle window cha
hInstance As Long 'Handle instance
lpstrFilter As String 'filter
lpstrCustomFilter As String 'Bo loc filter
nMaxCustFilter As Long 'Kic thuoc filter
nFilterIndex As Long 'Index cua filter
lpstrFile As String 'bufer cua ten file
nMaxFile As Long 'Kich thuoc cua bufer cua ten file
lpstrFileTitle As String 'bufer cua duong dan fullpath
nMaxFileTitle As Long 'Kich thuoc cua fullpath bufer
lpstrInitialDir As String 'Danh muc khoi tao
lpstrTitle As String 'Title cua hop thoai
Flags As Long 'Chi dinh Option
nFileOffset As Integer 'Offset cho toi ten file trong fullpath
nFileExtension As Integer 'Offset toi phan mo rong cua file
lpstrDefExt As String 'Phan mo rong mac dinh
lCustData As Long 'Du lieu trao cho ham
lpfnHook As Long 'Con tro toi ham フック
lpTemplateName As String 'Ten temp
End Type
'Hang so
Private Const OFN_HIDEREADONLY = &H4 'Khong hien thi checkbox Read Only
Private Const OFN_PATHMUSTEXIST = &H800 'Khong tiep nhan duong dan vo hieu
Private Const OFN_FILEMUSTEXIST = &H1000 'Khong tiep nhan ten file vo hieu
Private Const OFN_EXPLORER = &H80000 'Hien thi Explorer
'Bien so
Private strFileName As String 'Lay ten file
'Khi click vao nut bam se lay duong dan file
Private Sub Command1_Click()
Dim OFN As OPENFILENAME
Dim Ret As Long
With OFN
'Thiet dinh kich thuoc cau truc
.lStructSize = Len(OFN)
'Thiet dinh handle window cha
.hwndOwner = Me.hWnd
'Thiet dinh handle instance
.hInstance = App.hInstance
'Thiet dinh bo loc
.lpstrFilter = "File Tex(*.txt)" & vbNullChar & "*.txt" & vbNullChar & _
"All File(*.*)" & vbNullChar & "*.*"
'Thiet dinh gia tri khoi tao cho bo loc
.nFilterIndex = 1
'Thiet dinh cung kich thuoc va dam bao bufer cho ten file
.lpstrFile = String$(256, Chr$(0))
.nMaxFile = 256
'Thiet dinh cung kich thuoc va dam bao bufer cho fullpath
.lpstrFileTitle = String$(256, Chr$(0))
.nMaxFileTitle = 256
'Thiet dinh folder mac dinh
.lpstrInitialDir = "C:\"
'Thiet dinh Title cho hop thoai
.lpstrTitle = "Open File"
'Thiet dinh Flags
.Flags = OFN_EXPLORER Or _
OFN_PATHMUSTEXIST Or _
OFN_FILEMUSTEXIST Or _
OFN_HIDEREADONLY
End With
'Hien thi Dialog
Ret = GetOpenFileName(OFN)
'Truong hop nguoi dung an Cancel
If Ret = 0 Then
strFileName = ""
'Truong hop nguoi dung an Open
Else
strFileName = Left$(OFN.lpstrFile, InStr(OFN.lpstrFile, vbNullChar) - 1)
End If
'Gan ten file cho Text
Text1.Text = strFileName
End Sub
Mã:
http://www.openreference.org/articles/view/426
OK. Code trên là chạy được rồi. Nói thật, tôi google ra được khá nhiều code nhưng trên máy tôi đều không chạy, chỉ có code này là ổn.
Máy tính của tôi là Win 10, 64bit.
Ấn nút Play để chạy thử nhé.
Bạn cần đăng nhập để thấy đính kèm
Bạn cần đăng nhập để thấy đính kèm
Form đã hiện ra rồi.
Giờ muốn build ra exe để chia sẻ cho máy tính khác thì ta làm như sau:
Vào File:
Bạn cần đăng nhập để thấy đính kèm
Make exe thôi.
Tôi chọn nơi lưu là destop.
Bạn cần đăng nhập để thấy đính kèm
Ấn OK.