Kết nói dữ liệu file Excel qua Mang LAN

Liên hệ QC

chidung2009

Thành viên hoạt động
Tham gia
12/9/12
Bài viết
123
Được thích
8
Trong bài Lập trình VBA trong Excel kết nối CSDL trong mạng LAN của anh Nguyen Duy Tuan, Phần kết noi CSDL qua Share Full.
Mình muốn người sử dụng chỉ cần nhập địa chỉ IP và đường dẫn đến file Share Full trong mạng LAN là có thể cập nhật được dữ liệu của file excel. chứ mỗi lần địa chỉ IP thay đổi phải vào VBA để sửa sẽ rất bất tiện. Do kiến thức VBA còn kém nên Mong anh chị giúp đỡ mình

Mã:
Sub GetDataFromADO_Recordset()
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim cFileName As String, X As Long
    
    cFileName = "\\192.168.1.112\Databases\QuanLyAn_2016.xls"
    'Connect to Access database
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName
    
    Set rst = cnn.Execute("SELECT * FROM dmkh", X)
        
    Range("A5:G1000").ClearContents 'Clear values on range
    'Paste all records in recordset to range
    Range("A5").CopyFromRecordset rst
    
    'Close connection and free memory
    rst.Close
    Set rst = Nothing
    cnn.Close
    Set cnn = Nothing
End Sub
 

File đính kèm

  • LAN.jpg
    LAN.jpg
    31.4 KB · Đọc: 43
Trong bài Lập trình VBA trong Excel kết nối CSDL trong mạng LAN của anh Nguyen Duy Tuan, Phần kết noi CSDL qua Share Full.
Mình muốn người sử dụng chỉ cần nhập địa chỉ IP và đường dẫn đến file Share Full trong mạng LAN là có thể cập nhật được dữ liệu của file excel. chứ mỗi lần địa chỉ IP thay đổi phải vào VBA để sửa sẽ rất bất tiện. Do kiến thức VBA còn kém nên Mong anh chị giúp đỡ mình

Mã:
Sub GetDataFromADO_Recordset()
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim cFileName As String, X As Long
    
    cFileName = "\\192.168.1.112\Databases\QuanLyAn_2016.xls"
    'Connect to Access database
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName
    
    Set rst = cnn.Execute("SELECT * FROM dmkh", X)
        
    Range("A5:G1000").ClearContents 'Clear values on range
    'Paste all records in recordset to range
    Range("A5").CopyFromRecordset rst
    
    'Close connection and free memory
    rst.Close
    Set rst = Nothing
    cnn.Close
    Set cnn = Nothing
End Sub

Thì bạn set chết IP lại xem nó có đổi nữa ko là ok thôi mà
 
Upvote 0
Thì bạn set chết IP lại xem nó có đổi nữa ko là ok thôi mà

Nếu mình sài ở 1 mạng lan thì set chết IP cố định được, Nhưng ở đây mình sử dụng nhiều mạng lan khác nhau ( giống với nhiều cơ quan khác). Một người nào đó tải phầm mềm của mình về thì sẽ ko thể dùng địa chỉ IP cố định của mình được mà sẽ phụ thuộc vào địa chỉ IP của máy họ đang dùng.
Vậy nên mình muốn a/c giúp chỉnh sửa code lại khi nhập tại ô D1 là địa chỉ IP, ô D2 là file cần lấy dữ liệu ( file excel).
Mình trần thành cảm ơn.
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub GetDataFromADO_Recordset(ip)
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim cFileName As String, X As Long
    
    cFileName = "\" & ip & "\Databases\QuanLyAn_2016.xls"
    '.....
Còn muốn khái quát hơn thì nó sẽ như thế này
PHP:
Sub GetDataFromADO_Recordset(cFileName As String)
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim X As Long
    '.....
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu mình sài ở 1 mạng lan thì set chết IP cố định được, Nhưng ở đây mình sử dụng nhiều mạng lan khác nhau ( giống với nhiều cơ quan khác). Một người nào đó tải phầm mềm của mình về thì sẽ ko thể dùng địa chỉ IP cố định của mình được mà sẽ phụ thuộc vào địa chỉ IP của máy họ đang dùng.
Vậy nên mình muốn a/c giúp chỉnh sửa code lại khi nhập tại ô D1 là địa chỉ IP, ô D2 là file cần lấy dữ liệu ( file excel).
Mình trần thành cảm ơn.

Thì code bạn viết đó rồi ko lẻ sủa lại không sửa được ta ...

cFileName = "\\192.168.1.112\Databases\QuanLyAn_2016.xls"

Màu đỏ = màu đỏ, Màu xanh = Màu xanh ....ha

Tất nhiên là phải thêm đường dẫn nữa nha ...nếu ko chạy thì kiểm tra lại code của Bạn
 
Upvote 0
Nếu mình sài ở 1 mạng lan thì set chết IP cố định được, Nhưng ở đây mình sử dụng nhiều mạng lan khác nhau ( giống với nhiều cơ quan khác). Một người nào đó tải phầm mềm của mình về thì sẽ ko thể dùng địa chỉ IP cố định của mình được mà sẽ phụ thuộc vào địa chỉ IP của máy họ đang dùng.
Vậy nên mình muốn a/c giúp chỉnh sửa code lại khi nhập tại ô D1 là địa chỉ IP, ô D2 là file cần lấy dữ liệu ( file excel).
Mình trần thành cảm ơn.

- "sử dụng nhiều mạng lan khác nhau". Cơ quan bạn có nhiều mạng LAN (Router) và bạn nhảy đi làm việc ở nhiều nơi?
- "phụ thuộc vào địa chỉ IP của máy họ đang dùng". Phụ thuộc vào IP của máy tính của bạn chứ. Và nếu khác mạng LAN thì họ làm vào chui vào máy tính của bạn để lấy dữ liệu được?
- "nhập tại ô D1 là địa chỉ IP, ô D2 là file cần lấy dữ liệu": Nhập ở sheet nào? Định dạng nhập vào như nào?
D1=?
D2=Databases\QuanLyAn_2016.xls
hay
D2=QuanLyAn_2016.xls
hay
D2=QuanLyAn_2016
 
Upvote 0
Thì code bạn viết đó rồi ko lẻ sủa lại không sửa được ta ...

cFileName = "\\192.168.1.112\Databases\QuanLyAn_2016.xls"

Màu đỏ = màu đỏ, Màu xanh = Màu xanh ....ha

Tất nhiên là phải thêm đường dẫn nữa nha ...nếu ko chạy thì kiểm tra lại code của Bạn

Code trên là của anh Nguyen Duy Tuan chia sẻ, chứ mình còn kém nên không viết được đoạn code đó
 
Upvote 0
- "sử dụng nhiều mạng lan khác nhau". Cơ quan bạn có nhiều mạng LAN (Router) và bạn nhảy đi làm việc ở nhiều nơi?
- "phụ thuộc vào địa chỉ IP của máy họ đang dùng". Phụ thuộc vào IP của máy tính của bạn chứ. Và nếu khác mạng LAN thì họ làm vào chui vào máy tính của bạn để lấy dữ liệu được?
- "nhập tại ô D1 là địa chỉ IP, ô D2 là file cần lấy dữ liệu": Nhập ở sheet nào? Định dạng nhập vào như nào?
D1=?
D2=Databases\QuanLyAn_2016.xls
hay
D2=QuanLyAn_2016.xls
hay
D2=QuanLyAn_2016

Hiện mình đang làm đề tài Quản lý án của tỉnh. Nếu thành khi triên khai pm của mình sẽ sử dụng trong mạng Lan của từng huyện ( khoảng 10 huyện) nên sẽ có khoảng 10 địa chỉ IP khác và ko thể biết trước được. Nên mình muốn ai sử dụng thì người đó tự nhập địa chỉ IP và tên file excel đó.
tại ô D1 = địa chỉ IP
Tại ô D2=QuanLyAn_2016.xls
 
Upvote 0
Hiện mình đang làm đề tài Quản lý án của tỉnh. Nếu thành khi triên khai pm của mình sẽ sử dụng trong mạng Lan của từng huyện ( khoảng 10 huyện) nên sẽ có khoảng 10 địa chỉ IP khác và ko thể biết trước được. Nên mình muốn ai sử dụng thì người đó tự nhập địa chỉ IP và tên file excel đó.
tại ô D1 = địa chỉ IP
Tại ô D2=QuanLyAn_2016.xls

kết nối với 10 huyện khác nhau thì là internet chứ sao lại mạng LAN nhỉ .......?! hay mạng nội bộ giống như Viettel nhỉ
 
Upvote 0
Hiện mình đang làm đề tài Quản lý án của tỉnh. Nếu thành khi triên khai pm của mình sẽ sử dụng trong mạng Lan của từng huyện ( khoảng 10 huyện) nên sẽ có khoảng 10 địa chỉ IP khác và ko thể biết trước được. Nên mình muốn ai sử dụng thì người đó tự nhập địa chỉ IP và tên file excel đó.
tại ô D1 = địa chỉ IP
Tại ô D2=QuanLyAn_2016.xls

Mã:
Sub GetDataFromADO_Recordset()
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim cFileName As String, X As Long
    Dim ip as string, tenDA as string
    ip=sheets("khong biet sheet nao").range("D1").value 'D1=192.168.1.112
    tenDA=sheets("khong biet sheet nao").range("D2").value 'D2="QuanLyAn_2016.xls"

    cFileName = "\\" & ip & "\Databases\" & tenDA
    'Connect to Access database
  '........
End Sub
 
Upvote 0
Mã:
Sub GetDataFromADO_Recordset()
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim cFileName As String, X As Long
    Dim ip as string, tenDA as string
    ip=sheets("khong biet sheet nao").range("D1").value 'D1=192.168.1.112
    tenDA=sheets("khong biet sheet nao").range("D2").value 'D2="QuanLyAn_2016.xls"

    cFileName = "\\" & ip & "\Databases\" & tenDA
    'Connect to Access database
  '........
End Sub

Em rất cảm ơn anh đã trợ giúp. Em muốn hỏi thêm là: Hiện mình kết nối với Access thì rất ok. Nhưng mình kết nối tới file Excel thì lại không được, cứ báo lỗi
anh có thể giúp đỡ để em kết nối đến file excel. Nghe đâu sửa đoạn code bên dưới mà em ko biết chỉnh thế nào
Mong anh giúp em với

Mã:
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName
    
    Set rst = cnn.Execute("SELECT * FROM dmkh", X)
 
Upvote 0
Em rất cảm ơn anh đã trợ giúp. Em muốn hỏi thêm là: Hiện mình kết nối với Access thì rất ok. Nhưng mình kết nối tới file Excel thì lại không được, cứ báo lỗi
anh có thể giúp đỡ để em kết nối đến file excel. Nghe đâu sửa đoạn code bên dưới mà em ko biết chỉnh thế nào
Mong anh giúp em với

Mã:
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName
    
    Set rst = cnn.Execute("SELECT * FROM dmkh", X)

Đến đây thì không biết mà trả lời cho bạn.
 
Upvote 0
kết nối với 10 huyện khác nhau thì là internet chứ sao lại mạng LAN nhỉ .......?! hay mạng nội bộ giống như Viettel nhỉ

Đúng tiếng nghề là Intranet chứ không phải là internet. Intranet tức là một vùng liên lạc nội bộ, có thể qua LAN, hay WAN, hay cả 2.

Muốn làm cái này phải tham khảo người chủ mạng chứ hổi ở đây ai biết mạng thiết lập ra sao mà chỉ được.

Nếu chỉ cần hỏi ở đây mà làm được thì có thể đem ngừoi quản lý mạng (network manager) ra mà kiểm điểm. Mạng intranet đâu mà quản lý lỏng vậy.
 
Upvote 0
Trong bài Lập trình VBA trong Excel kết nối CSDL trong mạng LAN của anh Nguyen Duy Tuan, Phần kết noi CSDL qua Share Full.
Mình muốn người sử dụng chỉ cần nhập địa chỉ IP và đường dẫn đến file Share Full trong mạng LAN là có thể cập nhật được dữ liệu của file excel. chứ mỗi lần địa chỉ IP thay đổi phải vào VBA để sửa sẽ rất bất tiện. Do kiến thức VBA còn kém nên Mong anh chị giúp đỡ mình

Mã:
Sub GetDataFromADO_Recordset()
    Dim cnn As New Connection
    Dim rst As Recordset
    Dim cFileName As String, X As Long
    
    cFileName = "\\192.168.1.112\Databases\QuanLyAn_2016.xls"
    'Connect to Access database
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cFileName
    
    Set rst = cnn.Execute("SELECT * FROM dmkh", X)
        
    Range("A5:G1000").ClearContents 'Clear values on range
    'Paste all records in recordset to range
    Range("A5").CopyFromRecordset rst
    
    'Close connection and free memory
    rst.Close
    Set rst = Nothing
    cnn.Close
    Set cnn = Nothing
End Sub

Như trong hình. Bạn có một sheet, ô D1 lưu địa chỉ IP của máy chủ. Bạn hướng dẫn người chạy chương trình vào đó thay thế IP đúng.
Trong mã nguồn tbạn thay dòng code
cFileName = "\\192.168.1.112\Databases\QuanLyAn_2016.xls"

Thành

cFileName = "\" & ThisWorkbook.Sheet("Tên sheet lưu IP").Range("D2").Value & "\Databases\QuanLyAn_2016.xls"

Neus có chỗ lưu đường dẫn folder share và file thì sửa tương tự.
 
Upvote 0
Web KT
Back
Top Bottom