Lập Trình Excel Server Và Client - Phương Thức TCP/IP

Liên hệ QC

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,421
Được thích
4,033
Giới tính
Nam
I/ Chuẩn bị Control VB6 để tiến hành lập trình VBA :
Server & Client - Phương Thức TCP/IP

1/ Nếu Bạn nào đã cài đặt VB6 trên máy thì bỏ qua Mục I này
2/ Nếu Bạn nào chưa cài VB6 thì tìm trên Google tải về giải nén ra Tìm trong File ISO theo đường dẫn sau:


VB6.ISO\os\system\MSWINSCK.OCX ( Control )

VB6.ISO\os\system\MSWINSCK.OCA ( Control )

3/ Áp dụng cho Windows_x64
Mã:
Copy 2 File (MSWINSCK.OCX & MSWINSCK.oca ) Vào c:\windows\SysWOW64\
4/ Áp dụng cho Windows_x32
Mã:
Copy 2 File (MSWINSCK.OCX & MSWINSCK.oca ) Vào c:\windows\system32\
5/ Xong đăng ký sử dụng thực hiện: Run cmd Run As: ( cmd Run: Administrator )

Áp dụng cho Windows_x64:
Mã:
regsvr32 c:\windows\SysWOW64\MSWINSCK.OCX
Áp dụng cho Windows_x32:
Mã:
regsvr32 c:\windows\System32\MSWINSCK.OCX

II/ Sử dụng Microsoft Winsock Control 6.0 (SP6) Từ Excel (VBA)

1/ Tools/References/Browse.../c:\windows\SysWOW64\MSWINSCK.OCX/OK
2/ Khai báo sử dụng trên VBA
*/ Sự kiện trên Sheet
Mã:
Private WithEvents tcpClient As MSWinsockLib.Winsock
*/ Tạo kết nối
Mã:
Set tcpClient = New MSWinsockLib.Winsock
3/ Xong thử code xem là ok chưa ta chép code sau và chạy nó
***/ Khai báo kết nối muộn

Mã:
Sub Test_VBA_WinSock()
    With CreateObject("MSWinSock.WinSock")
        MsgBox "IP La :" & Space(1) & .LocalIP & vbCrLf _
            & vbCrLf & "ComputerName La: " & Space(1) & .LocalHostName
    End With
End Sub
***/ Khai báo kết nối Sớm và khi viết tcpClient. (Chấm) Nó sổ ra List của Hàm (Gợi ý khi viết code)
Mã:
Sub Test_VBA_WinSock_2()
    Dim tcpClient As MSWinsockLib.Winsock
    Set tcpClient = New MSWinsockLib.Winsock
    MsgBox tcpClient.LocalIP ''Lay IP LAN
    MsgBox tcpClient.LocalHostName''Lay Ten Computer
End Sub
Nếu chạy code trên thấy cái IP Address LANTên Máy tính của Mình nổi lên là OK .... vậy là xong cái khâu chuẩn bị

III/ Tiến hành khai báo sử dụng và Viết Server & Client

1/ Tạo một File tạm keo là: Server.xlsb
2/ Tạo một File tạm keo là: Client.xlsb
3/ Viết code kết nối Server và Client với nhau thông Qua IP .... chát chít qua lại xem ok chưa
3/ Tạo kết nối từ Client To Server ( Từ Server kết nối Tới Database.accdb)
4/ Từ Client truyền 1 tham số Tạm keo Query sang Server ... xong Server lưu vào Database.accdb
5/ lấy dữ liệu từ Server về ...vvv

IV/ Khi các phần trên làm xong ta chuyển toàn bộ các phần đã làm trên Từ Control VB6 Sang Lập trình bằng Hàm Windows API

1/ Làm lại các bước đã làm viết bằng Hàm Windows API
2/ Vì khi ta viết API nó sẻ xài trên các máy khác nhau mà ko phụ thuộc vào cài Control VB6 kia đã về nghỉ hưu rồi (công nghệ bỏ quên trên 10 năm tuổi)

3/ Sử dụng Hàm API là rất khó ... cực khó luôn .... vì vậy ta làm quen cái dễ trước đã hiểu được phương thức kết nối và truyền tham số xong ... ta bước qua nghiên cứu Hàm API viết Server & Client

V/ Trên Tinh thần Mạnh vừa mò vừa viết rất mong các bạn tham gia xây dựng viết 1 cái Server và Client trên Excel để ứng dụng tốt vào công việc

1/ Bước đầu ta kết nối chat chít Qua IP LAN, Internet thành công
2/ Lấy và ghi dữ liệu Qua IP LAN, Internet thành công
3/ Chuyển toàn bộ code trên viết trên API ....
....................
Định hướng nghiên cứu là vậy .... khó khăn và phát sinh tới đâu ta cùng nhau mò tới đó .... sai ta viết lại cho đúng
Nghiên cứu mà có mất cái chi mà sợ sai hay thất bại ....?????????????!!!!!!!!!!!!
Quan trọng là ta có tinh thần, đam mê và dám nhảy xuống Sông Sài Gòn bơi hay ko thui he ===\.-0-0-0-


Vui lòng chưa trích dẫn bài này vì Mạnh đang viết cái kế hoạch nghiên cứu chưa hoàn thiện ...
còn điều chỉnh bổ sung thêm .... xong mới chính thức bước vào nghiên cứu ...

Mục tiêu sơ bộ là vậy .... Bạn nào có ý kiến cứ viết bài xuống dưới he ....

Rất mong có nhiều thành viên tham gia cùng nhau nghiên cứu Lập trình Excel Server & Client - Phương Thức TCP/IP

Chúc Thành công !
 
Lần chỉnh sửa cuối:
Chúc mừng bạn.
Quan trọng là bạn viết ra được cái Class Xnet như bác Tuân chưa? Và tôi nghĩ là đây chỉ là code để Client kết nối thôi, còn phải code phía Server nữa.
Cái Mở kết Nối Class Xnet Từ Client Tới Server đã xong .... Tuyệt nhất cái đó nó mở đường cho ta code rất thân thiện như trên VBA Vậy

Lấy Từ Server về Client là Ok hết rồi đó bạn ... còn lưu từ Client tới Server chưa làm được
 
Lần chỉnh sửa cuối:
Upvote 0
Mạnh có Tìm hiểu + Hỏi nhiều tay đã từng viết Google sheet rồi ... nó keo cà chua lắm
cách củ chuối nhất cái SQL của mạnh cho Link nó tải File Google về xong gán vào SQL là ok nhất .... còn lại rất khoai

Với Mạnh Google Sheet cũng chỉ Vui vẻ là chính và làm quen với nó thôi ... biết đâu một ngày x nào đó thì xài nó
 
Upvote 0
Nhân dịp 20/10 khoe mai mốt bigUpdate Công nghệ DataHubTool /-*+/
XnectDataHubToolGoogleSheet chỉ cho cập nhật cột B C

:clap:. Em ngâm cứu luôn việc chia sẻ file .accdb (.mdb) của Access mà có thể dùng Linked Table được luôn thì Tool này đem bán ra thị trường quốc tế luôn. Cho những ai trung thành với CSDL back end là Access mà vẫn muốn kết nối qua internet.
Anh hỏi chút là đối với file Excel chia sẻ, nếu 2 User nhập liệu cùng lúc thì như thế nào nhỉ? cập nhật thời gian thật?
 
Upvote 0
:clap:. Em ngâm cứu luôn việc chia sẻ file .accdb (.mdb) của Access mà có thể dùng Linked Table được luôn thì Tool này đem bán ra thị trường quốc tế luôn. Cho những ai trung thành với CSDL back end là Access mà vẫn muốn kết nối qua internet.
Anh hỏi chút là đối với file Excel chia sẻ, nếu 2 User nhập liệu cùng lúc thì như thế nào nhỉ? cập nhật thời gian thật?
Hiện tại em chưa bẫy lỗi 2 người nhập cùng lúc anh, em cũng đang đau đầu chưa nghiệm ra phương án thích hợp để cho nhiều người dùng, người nào nhập sau cùng thì nó cập nhật của người đó anh
 
Upvote 0
xin mời ta qua đây Xem phim cho vui 1 chút ... Cái TCPIP của Mạnh chỉ có thế ... khai báo rất đơn giản như xài trên VBA vậy
Biết chút ADO trên VBA là xài quá OK -0-0-0-

 
Upvote 0
I/ Chuẩn bị Control VB6 để tiến hành lập trình VBA :
Server & Client - Phương Thức TCP/IP

1/ Nếu Bạn nào đã cài đặt VB6 trên máy thì bỏ qua Mục I này
2/
Nếu Bạn nào chưa cài VB6 thì tìm trên Google tải về giải nén ra Tìm trong File ISO theo đường dẫn sau:

VB6.ISO\os\system\MSWINSCK.OCX ( Control )

VB6.ISO\os\system\MSWINSCK.OCA ( Control )


3/ Áp dụng cho Windows_x64
Mã:
Copy 2 File (MSWINSCK.OCX & MSWINSCK.oca ) Vào c:\windows\SysWOW64\
4/ Áp dụng cho Windows_x32
Mã:
Copy 2 File (MSWINSCK.OCX & MSWINSCK.oca ) Vào c:\windows\system32\
5/ Xong đăng ký sử dụng thực hiện: Run cmd Run As: ( cmd Run: Administrator )

Áp dụng cho Windows_x64:

Mã:
regsvr32 c:\windows\SysWOW64\MSWINSCK.OCX
Áp dụng cho Windows_x32:
Mã:
regsvr32 c:\windows\System32\MSWINSCK.OCX

II/ Sử dụng Microsoft Winsock Control 6.0 (SP6) Từ Excel (VBA)

1/ Tools/References/Browse.../c:\windows\SysWOW64\MSWINSCK.OCX/OK
2/ Khai báo sử dụng trên VBA
*/ Sự kiện trên Sheet
Mã:
Private WithEvents tcpClient As MSWinsockLib.Winsock
*/ Tạo kết nối
Mã:
Set tcpClient = New MSWinsockLib.Winsock
3/ Xong thử code xem là ok chưa ta chép code sau và chạy nó
***/ Khai báo kết nối muộn

Mã:
Sub Test_VBA_WinSock()
    With CreateObject("MSWinSock.WinSock")
        MsgBox "IP La :" & Space(1) & .LocalIP & vbCrLf _
            & vbCrLf & "ComputerName La: " & Space(1) & .LocalHostName
    End With
End Sub
***/ Khai báo kết nối Sớm và khi viết tcpClient. (Chấm) Nó sổ ra List của Hàm (Gợi ý khi viết code)
Mã:
Sub Test_VBA_WinSock_2()
    Dim tcpClient As MSWinsockLib.Winsock
    Set tcpClient = New MSWinsockLib.Winsock
    MsgBox tcpClient.LocalIP ''Lay IP LAN
    MsgBox tcpClient.LocalHostName''Lay Ten Computer
End Sub
Nếu chạy code trên thấy cái IP Address LANTên Máy tính của Mình nổi lên là OK .... vậy là xong cái khâu chuẩn bị

III/ Tiến hành khai báo sử dụng và Viết Server & Client

1/ Tạo một File tạm keo là: Server.xlsb
2/ Tạo một File tạm keo là: Client.xlsb
3/ Viết code kết nối Server và Client với nhau thông Qua IP .... chát chít qua lại xem ok chưa
3/ Tạo kết nối từ Client To Server ( Từ Server kết nối Tới Database.accdb)
4/ Từ Client truyền 1 tham số Tạm keo Query sang Server ... xong Server lưu vào Database.accdb
5/ lấy dữ liệu từ Server về ...vvv

IV/ Khi các phần trên làm xong ta chuyển toàn bộ các phần đã làm trên Từ Control VB6 Sang Lập trình bằng Hàm Windows API

1/ Làm lại các bước đã làm viết bằng Hàm Windows API
2/ Vì khi ta viết API nó sẻ xài trên các máy khác nhau mà ko phụ thuộc vào cài Control VB6 kia đã về nghỉ hưu rồi (công nghệ bỏ quên trên 10 năm tuổi)

3/ Sử dụng Hàm API là rất khó ... cực khó luôn .... vì vậy ta làm quen cái dễ trước đã hiểu được phương thức kết nối và truyền tham số xong ... ta bước qua nghiên cứu Hàm API viết Server & Client

V/ Trên Tinh thần Mạnh vừa mò vừa viết rất mong các bạn tham gia xây dựng viết 1 cái Server và Client trên Excel để ứng dụng tốt vào công việc


1/ Bước đầu ta kết nối chat chít Qua IP LAN, Internet thành công
2/ Lấy và ghi dữ liệu Qua IP LAN, Internet thành công
3/ Chuyển toàn bộ code trên viết trên API ....
....................
Định hướng nghiên cứu là vậy .... khó khăn và phát sinh tới đâu ta cùng nhau mò tới đó .... sai ta viết lại cho đúng
Nghiên cứu mà có mất cái chi mà sợ sai hay thất bại ....?????????????!!!!!!!!!!!!
Quan trọng là ta có tinh thần, đam mê và dám nhảy xuống Sông Sài Gòn bơi hay ko thui he ===\.-0-0-0-


Vui lòng chưa trích dẫn bài này vì Mạnh đang viết cái kế hoạch nghiên cứu chưa hoàn thiện ...
còn điều chỉnh bổ sung thêm .... xong mới chính thức bước vào nghiên cứu ...

Mục tiêu sơ bộ là vậy .... Bạn nào có ý kiến cứ viết bài xuống dưới he ....

Rất mong có nhiều thành viên tham gia cùng nhau nghiên cứu Lập trình Excel Server & Client - Phương Thức TCP/IP

Chúc Thành công !
Cho mình hỏi bạn có chương trình cho mình xin được không.
mình chạy đoạn chương trình như bạn hướng dẫn cứ báo lỗi "Invalid use of New keyword" tại dòng lệnh "Set tcpClient = New MSWinsockLib.Winsock" dù đã khai báo "Private WithEvents tcpClient As MSWinsockLib.Winsock" và làm đầy đủ các bước trên
Sub Test_VBA_WinSock_2()
Dim tcpClient As MSWinsockLib.Winsock
Set tcpClient = New MSWinsockLib.Winsock
MsgBox tcpClient.LocalIP ''Lay IP LAN
MsgBox tcpClient.LocalHostName''Lay Ten Computer
End Sub
Cảm ơn bạn rất nhiều!
 
Upvote 0
Cho mình hỏi bạn có chương trình cho mình xin được không.
mình chạy đoạn chương trình như bạn hướng dẫn cứ báo lỗi "Invalid use of New keyword" tại dòng lệnh "Set tcpClient = New MSWinsockLib.Winsock" dù đã khai báo "Private WithEvents tcpClient As MSWinsockLib.Winsock" và làm đầy đủ các bước trên
Sub Test_VBA_WinSock_2()
Dim tcpClient As MSWinsockLib.Winsock
Set tcpClient = New MSWinsockLib.Winsock
MsgBox tcpClient.LocalIP ''Lay IP LAN
MsgBox tcpClient.LocalHostName''Lay Ten Computer
End Sub
Cảm ơn bạn rất nhiều!
Bạn qua 2 link sau tham khảo nhé



Nếu bạn biết VB6 thì cả nên tham khảo 1 loạt bài thớt này .... vì nguyên lý chung nó như nhau cả thôi .... thong thả dò đi he

Ngày qua tôi mới được 1 người bạn chia sẽ cho 1 con Virus nổi tiếng thế giới mã hóa hết toàn bộ dữ liệu rồi ....

Sẽ mất nhiều tháng để tôi mày mò nhớ lại và viết lại.... giờ này hơi buồn chút... vài điều vậy thôi
 
Upvote 0
Bạn qua 2 link sau tham khảo nhé



Nếu bạn biết VB6 thì cả nên tham khảo 1 loạt bài thớt này .... vì nguyên lý chung nó như nhau cả thôi .... thong thả dò đi he

Ngày qua tôi mới được 1 người bạn chia sẽ cho 1 con Virus nổi tiếng thế giới mã hóa hết toàn bộ dữ liệu rồi ....

Sẽ mất nhiều tháng để tôi mày mò nhớ lại và viết lại.... giờ này hơi buồn chút... vài điều vậy thôi
Bác không quét vi rút trước khi dùng file à ?
 
Upvote 0
Web KT
Back
Top Bottom