phuongnam366377
Thành viên hoạt động
- Tham gia
- 25/10/19
- Bài viết
- 149
- Được thích
- 178
1/ ý tưởng viết Addin này có từ chủ đề sau
2/ Tham khảo chỉ dẫn của Ms sử dụng tốt trên VB6
3/ Giới thiệu của Ms cho hàm RTD
4/ tham khảo sử dụng hàm TEXTSPLIT trên Excel 365 cho vận dụng sử dụng Hàm RTD trên Excel 365
5/ Hàm RTD mặc định sử dụng tốt từ Microsoft Excel 2002. tới nay và cài tiến tốt hơn trên Excel 365
Mô tả và cách sử dụng
1/ yêu cầu sử dụng Addin RTD cho Excel là bạn phải có quyền Admin trên PC đó
2/ Nó là COM Automation DLL được viết trên Delphi sử dụng cho Excel 32 hay 64 bít tuỳ ai đó sử dụng Excel cài trên Máy tính
3/ Khi tải về nếu máy tính sử dụng Excel 32 bít thì dê chuột vào file ExcelRTDServer32.dll xong kéo thả vào File Register_ActiveX_OCX_DLL.vbs sau đó chọn Yes và ngược lại áp dụng cho 64 bit cũng như vậy
4/ mặc định hàm RTD do Ms thiết kế là mảng một chiều nhưng Tôi tuỳ chỉnh lại thành mảng hai chiều sử dụng SQL truy xuất dữ liệu File Excel, Access và SQlite khi truyền tham số DBpath,SQL,HDR vào hàm .. Với tuỳ chọn lấy tiêu đề là true hay False khi truyền vào hàm
5/ Mặc định hàm RTD trả về là một chuỗi khi ta gõ hàm tại một ô như sau Với tuỳ chọn lấy tiêu đề là true hay False khi truyền vào hàm
6/ Khi kết hợp với hàm RTD với hàm có sẳn trên Excel 2019 to Excel 365 ta gõ hàm như sau thì kết quả trả về các ô trên Sheet
7/ Nếu sử dụng các bản Office từ 2019 về sau các hàm gõ trên ô có hỗ trợ mặc định ...
còn các bản trước đó phải sử dụng hàm có sử dụng Ctrl +Shift + Enter và hàm do người dùng tự định nghĩa
8/ Tôi chuyển thể vài hàm cơ bản vào VBA cho ai đó cần thì sử dụng nếu không vẫn có thể tuỳ chỉnh dữ vào hàm RTD tự viết lấy theo ý thích
hàm trả về Val từ đó ta viết hàm phụ tuỳ chỉnh theo ý thích ... mã Debug.Print ra như sau
9/ Áp dụng cho truy xuất dữ liệu SQLite như trên chỉ khác Class sử dụng nó là SQLiteRTD
Hình ảnh áp dụng cho SQlite
đính kèm File phía dưới và các ví dụ mẫu + code mẫu cho ai đó yêu thích thì sử dụng...
trong quá trình sử dụng có phát sịnh lỗi hay chưa rõ cứ nêu chi tiết nếu được tôi sẻ hổ trợ xử lý và điều chỉnh code cho phù hợp
Một ý tưởng viết macro VBA tương tác với Google Drive từ Excel
Xin chào mọi người. Sau một thời gian nhận thấy có nhiều người dùng đặt vấn đề về khả năng macro VBA trong Excel tương tác với Google Drive nói chung và các dịch vụ của Google nói riêng và sau khi nghiên cứu cách viết macro VBA cũng như ngâm cứu tài liệu của Google. Mình xin chia sẻ một ý tưởng...
www.giaiphapexcel.com
2/ Tham khảo chỉ dẫn của Ms sử dụng tốt trên VB6
How to create a RealTimeData server for Excel - Office
Describes how to use Visual Basic to create a RealTimeData server for use with Excel's RTD function.
learn.microsoft.com
3/ Giới thiệu của Ms cho hàm RTD
Excel performance - Performance and limit improvements
Find out about performance improvements in Excel 2016 and Excel 2010.
learn.microsoft.com
4/ tham khảo sử dụng hàm TEXTSPLIT trên Excel 365 cho vận dụng sử dụng Hàm RTD trên Excel 365
Hàm TEXTSPLIT - Hỗ trợ của Microsoft
support.microsoft.com
5/ Hàm RTD mặc định sử dụng tốt từ Microsoft Excel 2002. tới nay và cài tiến tốt hơn trên Excel 365
Mô tả và cách sử dụng
1/ yêu cầu sử dụng Addin RTD cho Excel là bạn phải có quyền Admin trên PC đó
2/ Nó là COM Automation DLL được viết trên Delphi sử dụng cho Excel 32 hay 64 bít tuỳ ai đó sử dụng Excel cài trên Máy tính
3/ Khi tải về nếu máy tính sử dụng Excel 32 bít thì dê chuột vào file ExcelRTDServer32.dll xong kéo thả vào File Register_ActiveX_OCX_DLL.vbs sau đó chọn Yes và ngược lại áp dụng cho 64 bit cũng như vậy
4/ mặc định hàm RTD do Ms thiết kế là mảng một chiều nhưng Tôi tuỳ chỉnh lại thành mảng hai chiều sử dụng SQL truy xuất dữ liệu File Excel, Access và SQlite khi truyền tham số DBpath,SQL,HDR vào hàm .. Với tuỳ chọn lấy tiêu đề là true hay False khi truyền vào hàm
5/ Mặc định hàm RTD trả về là một chuỗi khi ta gõ hàm tại một ô như sau Với tuỳ chọn lấy tiêu đề là true hay False khi truyền vào hàm
Mã:
=RTD("excelrtdserver.excelrtd",,C3,C4,C5)
6/ Khi kết hợp với hàm RTD với hàm có sẳn trên Excel 2019 to Excel 365 ta gõ hàm như sau thì kết quả trả về các ô trên Sheet
Mã:
=IFERROR(TEXTSPLIT(RTD("excelrtdserver.excelrtd",,C3,C4,C5), ",", CHAR(10)), "")
7/ Nếu sử dụng các bản Office từ 2019 về sau các hàm gõ trên ô có hỗ trợ mặc định ...
còn các bản trước đó phải sử dụng hàm có sử dụng Ctrl +Shift + Enter và hàm do người dùng tự định nghĩa
8/ Tôi chuyển thể vài hàm cơ bản vào VBA cho ai đó cần thì sử dụng nếu không vẫn có thể tuỳ chỉnh dữ vào hàm RTD tự viết lấy theo ý thích
Mã:
Option Explicit
Rem ##########
Rem ham sau la mau cho nguoi dung tuy chinh ket qua tra ve Val
Private Function RtdWrapper(DBpath As String, SQL As String, _
Optional ByVal GetHeaders As Boolean = False) As Variant
On Error GoTo ErrorHandler ' B?t l?i
Dim Val As Variant
Dim myRTD As Object
' G?i hàm RTD
Val = Application.WorksheetFunction.RTD("ExcelRTDServer.ExcelRTD", "", DBpath, SQL, GetHeaders)
' Ki?m tra n?u giá tr? tr? v? h?p l?
If IsError(Val) Then
RtdWrapper = "Error: " & Err.Description ' Tr? v? thông báo l?i
Else
RtdWrapper = Val ' Tr? v? giá tr? h?p l?
End If
Exit Function
ErrorHandler:
' X? lý l?i có th? cho l?i COM
If Err.Number = -2146827850 Then ' L?i liên quan d?n COM
RtdWrapper = CVErr(xlErrNA) ' Tr? v? #N/A cho l?i COM
Debug.Print "COM Error in RtdWrapper: " & Err.Description
Else
RtdWrapper = CVErr(xlErrValue) ' Tr? v? #VALUE! cho các l?i khác
Debug.Print "General Error in RtdWrapper: " & Err.Description
End If
End Function
Sub Test_RtdWrapper()
Dim Val As Variant ' Thay d?i ki?u d? li?u thành Variant
Dim Excelpath As String
Dim SQL As String
Dim Headers As Boolean
Excelpath = ThisWorkbook.Path & "\DataRTD.xlsx"
SQL = "SELECT * FROM [Data$]"
Headers = True
Val = RtdWrapper(Excelpath, SQL, Headers)
' Ki?m tra n?u Val là m?t l?i và thông báo
If IsError(Val) Then
Debug.Print "An error occurred: " & Val ' In ra thông báo l?i
Else
Debug.Print Val ' In giá tr? tr? v? h?p l? vào c?a s? Immediate
End If
End Sub
Rem ##########
hàm trả về Val từ đó ta viết hàm phụ tuỳ chỉnh theo ý thích ... mã Debug.Print ra như sau
9/ Áp dụng cho truy xuất dữ liệu SQLite như trên chỉ khác Class sử dụng nó là SQLiteRTD
Mã:
=RTD("excelrtdserver.sqlitertd",,C5,C6,C7)
Hình ảnh áp dụng cho SQlite
đính kèm File phía dưới và các ví dụ mẫu + code mẫu cho ai đó yêu thích thì sử dụng...
trong quá trình sử dụng có phát sịnh lỗi hay chưa rõ cứ nêu chi tiết nếu được tôi sẻ hổ trợ xử lý và điều chỉnh code cho phù hợp
File đính kèm
Lần chỉnh sửa cuối: