Addins-Hỗ trợ Excel tổng hợp đây bản quyền Free và mã nguồn mở!

Liên hệ QC
Code cũ là:

Sửa lại, thêm Application.hWnd vào đối số đầu tiên của hàm MessageBoxW

Mã:
Public Function MsgBoxW(strText As String, Optional iButtons As VbMsgBoxStyle = vbOKOnly, Optional strTitle As String, _
                        Optional hWnd As Long = &H0) As VbMsgBoxResult
       Dim sTam1 As String, sTam2 As String

       sTam1 = UNC(strText)
       sTam2 = UNC(strTitle)

       hDlgHook = SetWindowsHookEx(WH_CBT, AddressOf HookProc, Application.Hinstance, GetCurrentThreadId())
       MsgBoxW = MessageBoxW([COLOR=#FF0000]Application.hWnd[/COLOR], StrPtr(sTam1), StrPtr(sTam2), iButtons Or MB_TASKMODAL)
End Function


Xin lỗi, lại phiền Anh Tuân thêm lần nữa là khi ta dùng Application.hWnd để thay cho số 0, khi sử dụng Form có dùng cái Msgbox này, nếu click chuột vào Form thì cái msgbox này ẩn sau cái Form, nếu Form lớn hơn cái msgbox thì không thấy luôn, giống như ta dùng Form với thuộc tính ShowModal=False vậy!

Cho em hỏi có cách nào khắc phục chỉ cho phép chọn lựa trên msgbox khi nó hiện ra (giống như các msgbox khác) và chỉ khi nó thoát mới thao tác được trên form/sheet?
 
Tôi đang dùng Office Excel 2010, đã tải add-in chuyển font về máy nhưng khi trỏ tới add-in thì Excel tự động tắt, không hiểu nguyên nhân gì. Xin các bạn chỉ giúp.
 
Chào các anh chị trên diễn đàn trong vài tháng trước em có tự viết cho mình một Addins Hỗ trợ tốt trong Excel em muốn tự mình viết thêm nữa (đam mê và yêu thích bảng tính diệu kỳ) nhưng thời gian này em rất bận không thể viết thêm được nay muốn gửi File này lên diễn đàn để mọi người tiếp tục phát triển
Hiện mình đã thay đổi lại link:

Chúc các bạn có thể thao tác dễ dàng hơn với Microsoft Office Excel (Bảng tính diệu kỳ ) mong các bạn hãy phát triển nó thêm để ngày càng hoàn thiện Thank!
Một tệp là bộ cài còn một tệp là file "xla"

Nhờ bác giúp em cách chạy trên phiên bản Office 2010 được không ah, em cài nhưng nó không chạy được bác ah (trong phiên bản 2003 chạy rất tốt)
 
Đây là một bộ tiện ích rất đầy đủ, sắp xếp khoa học. Giúp ích cho mọi người rất nhiều.
Tuy nhiên, em thấy có 3 tính năng nổi bật của Add_Ins mà mọi người hay dùng là:

1) Chuyển Font chữ : (cái này của bác rất tốt), đảm bảo vẫn giữ nguyên định dạng, công thức; chuyển cho nhiều Sheet, nhiều file một lúc

2) Về đọc số thành chữ: Theo cá nhân em thì có lẽ nên sửa lại một chút:
Em xin ví dụ một trường hợp cụ thể: Đọc số thành chữ của số tiền 100.000 đồng thì tiện ích sẽ đọc là Bằng chữ : Một trăm ngàn không trăm (đồng chẵn).

Theo em có lẽ nên sửa 3 điểm sau:
i) (đồng chẵn) không nên để trong dấu ngoặc vì ít có văn bản nào thể hiện dưới dạng này có lẽ nên sửa thành đồng thôi.

ii) Em làm việc với nhiều nơi, nhiều đối tác bảo tiếng Việt không có chữ ngàn mà chỉ có chữ nghìn thôi.

iii) Trong ví dụ này thì có vẻ như không trăm rườm rà, ta nên bỏ đi.

Tức dòng trên sẽ được sửa như sau:
Bằng chữ : Một trăm nghìn đồng chẵn.

3) Sắp xếp họ và tên theo Tiếng Việt: Cái này rất cần thiết, hiện tiện ích chưa có chức năng này nếu bổ sung được cái này thì tốt quá.

Ngoài ra, cá nhân em thấy cái nữa cũng rất hay đó là lệnh khi lựa chọn bảng, lập tức lệnh đó nó sẽ xóa bỏ những ô trắng rác được mọi người đề cập trong bài http://www.giaiphapexcel.com/forum/showthread.php?23625-Code-xoá-rác-trắng-trong-bảng-tính& thì quá hay.

Xin cảm ơn bác rất nhiều
 
Lần chỉnh sửa cuối:
Xin lỗi, lại phiền Anh Tuân thêm lần nữa là khi ta dùng Application.hWnd để thay cho số 0, khi sử dụng Form có dùng cái Msgbox này, nếu click chuột vào Form thì cái msgbox này ẩn sau cái Form, nếu Form lớn hơn cái msgbox thì không thấy luôn, giống như ta dùng Form với thuộc tính ShowModal=False vậy!

Cho em hỏi có cách nào khắc phục chỉ cho phép chọn lựa trên msgbox khi nó hiện ra (giống như các msgbox khác) và chỉ khi nó thoát mới thao tác được trên form/sheet?

Đầu module khai báo hàm API
Mã:
Declare Function GetActiveWindow Lib "user32" () As Long

Hàm này sẽ nhận Handle của Window hiền thời/đang hoạt động. Và ta có thể dùng trong các tham số hWnd của các hàm.
Mã:
MsgBoxW = MessageBoxW(GetActiveWindow,  ...)
 
2) Về đọc số thành chữ: Theo cá nhân em thì có lẽ nên sửa lại một chút:....
3) Sắp xếp họ và tên theo Tiếng Việt: Cái này rất cần thiết, hiện tiện ích chưa có chức năng này nếu bổ sung được cái này thì tốt quá.
Ngoài ra, cá nhân em thấy cái nữa cũng rất hay đó là lệnh khi lựa chọn bảng, lập tức lệnh đó nó sẽ xóa bỏ những ô trắng rác được mọi người đề cập trong bài http://www.giaiphapexcel.com/forum/showthread.php?23625-Code-xoá-rác-trắng-trong-bảng-tính& thì quá hay.

Cảm ơn bạn đã quan tâm và góp ý
về việc đọc số thành chữ thì ở mỗi miền có một cách đọc khác nhau mình cũng không dám bàn!
Ngay từ đầu topic mình đã nói: "nay muốn gửi File này lên diễn đàn để mọi người tiếp tục phát triển "
Các hàm mà sử dụng trong Addins mình để trong Module: "MyFunctions" bạn có thể sửa trong đó cho phù hợp với công việc của bạn!
hiện nay mình cũng hơi bận nên thêm phần: Sắp xếp họ và tên theo Tiếng Việt mình sẽ cố gắng tích hợp vào sớm!
P/S:
Cảm ơn mọi người đã đóng góp ý kiến!
Ngay đầu topic mình đã nói muốn mọi người cùng phát triển Addin này phục vụ tốt cho công việc khi sử dụng Excel mà sao từ đầu tới giờ chẳng thấy ai chung tay nâng cấp nó nên nhỉ?(Mình muốn mọi thứ đều mã mở cho mọi người cùng phát triển- có gì mình nói sai mong mọi người bỏ qua)
 
Em chưa hiểu tác dụng của Folder Add-Ins Excel, nếu không có nó sẽ lỗi

Em chỉ nạp Add-Ins bình thường (em cứ tưởng Folder Addin-Excel đi kèm là thừa) nên em xoá đi, nhưng khi thao tác lập tức nó báo lỗi đường dẫn, em xin được bác chỉ giúp cho các file đi kèm trong Folder đó có tác dụng gì?

Bởi em thấy các ứng dụng trên diễn đàn chỉ cần Copy Add_Ins là đủ (không cần phải có 1 Folder nữa đi theo)./.
 
Em chỉ nạp Add-Ins bình thường (em cứ tưởng Folder Addin-Excel đi kèm là thừa) nên em xoá đi, nhưng khi thao tác lập tức nó báo lỗi đường dẫn, em xin được bác chỉ giúp cho các file đi kèm trong Folder đó có tác dụng gì?

Bởi em thấy các ứng dụng trên diễn đàn chỉ cần Copy Add_Ins là đủ (không cần phải có 1 Folder nữa đi theo)./.

Cơ chế của tiện ích Hỗ trợ Excel là bạn chỉ cài một file Add-ins.xla vào máy nhưng khi sử dụng thì tùy thao các marco mình thiết đặt có thể gọi các marco của các file trong thư mục đi kèm của mình
 
Mình không tải được File Ho tro Excel setup.rar. Các anh, chị tải được không ạ?
Vẫn cho lưu bình thường nhưng down về hết rồi thì báo như thế này ạ.
 

File đính kèm

  • loi khi down.rar
    75.3 KB · Đọc: 49
Chào các anh chị trên diễn đàn trong vài tháng trước em có tự viết cho mình một Addins Hỗ trợ tốt trong Excel em muốn tự mình viết thêm nữa (đam mê và yêu thích bảng tính diệu kỳ) nhưng thời gian này em rất bận không thể viết thêm được nay muốn gửi File này lên diễn đàn để mọi người tiếp tục phát triển
Hiện mình đã thay đổi lại link:

Chúc các bạn có thể thao tác dễ dàng hơn với Microsoft Office Excel (Bảng tính diệu kỳ ) mong các bạn hãy phát triển nó thêm để ngày càng hoàn thiện Thank!
Một tệp là bộ cài còn một tệp là file "xla"

Chị phan
cho em hỏi khi em cài thêm addin của chị vào thì khi mở file Excel lên nó hiện ra bản thông báo " Đây là lần đầu tiên bạn cài tiện ích ..., sau đó em bấm Đồng ý, sau đo hiện ra bảng hướng dẫn sử dụng, kế tiếp là About và lieck tiếp đóng. Thì nó chỉ có hiện bảng hướng dẫn sử dụng không. Chứ không có vào nội dung của File.
Nhờ chị hướng dẫn giúp em. Mặc dù em là không phải cài thêm tiện ích lần đầu tiên, nhưng vẫn có thông báo " Lần đầu tiên cài tiện ích". Nếu em muốn vào xem nội dung file thì phải vào Open - > file mới được
Thân!

view
[/URL] [/IMG]
 
nhờ các anh sữa dùm em lỗi
Add-In Hỗ trợ Excel1544854893948.png
 
@congchivo
Đọc cách sau hiểu và tự sửa nhé
Mã:
#If VBA7 Then
' Copy 1 lần nữa các Api màu đỏ vào đây , Thay đổi bằng cách thêm PtrSafe
       'Public Declare PtrSafe Function
#Else
      ' Để Api bị tô đỏ trước đó vào đây
#End If
 
Cảm ơn anh, em làm theo nhưng báo lỗi nhiều quá. nhờ anh sữa giúp file này cho em nhé
 

File đính kèm

  • Ho Tro Excel.rar
    3.4 MB · Đọc: 20
@congchivo
Có những API 32bit dù có dùng tính tương thích ngược từ 64bit về 32 bit chúng cũng không hoạt động
Có trường hợp cần chuyển từ Long sang LongPtr cho WIN64 hoặc WIN32
Bạn cần chạy Debug để kiểm lỗi, lỗi tới đâu thì sửa tới đó. Người viết ứng dụng trên bỏ công sức. Bây giờ muốn lấy của người khác về dùng bạn cũng cần phải bỏ công sức
Không thì bạn cần phải chờ người đã Chuẩn hóa ứng dụng trên về 64bit chia sẽ file. Cái này chắc khó
 
Cảm ơn bạn đã nhắc nhở, vậy phiên bản này anh phan ngọc lân đã chia sẽ cho mọi người. thật sự giờ các bạn cũng dùng offic đời cao cả, win10 64 bit nên viif vậy anh phan ngọc lân ắc có phiên bản 64bit. nếu anh không phiền hãy chia sẽ cho mọi người nhé... Cảm ơn anh trước. sữa một chương trình khủng không phải dễ... trình độ tôi có hạn chế nhiều. chân thành cảm ơn
 
@congchivo
Tôi không thể sửa cho bạn cả một ứng dụng.

Bạn có thể sửa theo cách tôi hướng dẫn:

"Public Declare Function ..." đang tương thích với win32 thêm "PtrSafe" để tương thích win64 "Public Declare PtrSafe Function ..."

Nếu biến gọi một Callback Function nên nó phải là LongLong / LongPtr / Any
Trong code sẽ có một Function được gọi bởi Hàm API (Ví dụ dưới SetTimerhàm API) , Function này gọi là hàm thực thi của Hàm API
Thì biến (Ví dụ dưới lpTimerFunc gọi Function) gọi hàm này trong Hàm API phải có giá trị là 8byte cho Win64 (LongLong / LongPtr / Any)

Ví dụ nhé:
SetTimer hWnd:=<cái gì đó>, nIDEvent:=<cái gì đó>,uElapse:=<cái gì đó>, lpTimerFunc:=<đây chính là biến gọi Callback Function>
Gọi như thế nào? Ta có 1 Function A:

Mã:
Function A()
Msgbox "A"
End Function
Gọi như bên dưới thì Function A sẽ trở thành Hàm thực thi của SetTimer:
SetTimer hWnd:=<cái gì đó>, nIDEvent:=<cái gì đó>,uElapse:=<cái gì đó>, lpTimerFunc:=AddressOf A

Nếu trong code của bạn có các hàm tương tự như vậy thì sửa các biến gọi chúng thành As LongLong hoặc LongPtr hoặc Any với win64
Ví dụ bên dưới tôi đã sửa ByVal lpTimerFunc As LongLong cho win64 thay cho ByVal lpTimerFunc As Long cho win32
thường thì sửa thành LongPtr (gồm 4byte và 8byte), LongLong (8byte)
PHP:
'Ví dụ:
#If VBA7 And Win64 Then
'Public / Private
'có  PtrSafe để tương thích ngược với WinAPI 32bit
    Public Declare PtrSafe Function SetTimer Lib "USER32" (ByVal hWnd As LongLong, ByVal nIDEvent As LongLong, _
        ByVal uElapse As LongLong, ByVal lpTimerFunc As LongLong) As LongLong
#Else
    'Chứa các Hàm API bị lỗi ở Win64 để chạy trên Win32 / Office 32' không có  PtrSafe
    Public Declare Function SetTimer Lib "USER32" (ByVal hWnd As Long, ByVal nIDEvent As Long, _
        ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
# End If
 
Web KT
Back
Top Bottom