Hỗ trợ quản lý công văn bang excel

Liên hệ QC

thanhduy@

Thành viên mới
Tham gia
18/4/20
Bài viết
21
Được thích
1
Em tai phai quản lý công văn bằng excel về máy nhưng do máy sử dụng excel 2013 nên mở ra bị báo lỗi. Nhờ các anh chị giúp dùm với ạ, Chân thành cảm ơn.
 

File đính kèm

  • VANTHU.rar
    275.6 KB · Đọc: 47
Em tai phai quản lý công văn bằng excel về máy nhưng do máy sử dụng excel 2013 nên mở ra bị báo lỗi. Nhờ các anh chị giúp dùm với ạ, Chân thành cảm ơn.
máy bạn chạy office 64bit à? nếu vậy thì thử file này xem sao nhé, tôi chạy 32bit nên ko test đc
 

File đính kèm

  • Congvan.xls
    294 KB · Đọc: 25
Em tai phai quản lý công văn bằng excel về máy nhưng do máy sử dụng excel 2013 nên mở ra bị báo lỗi.
Sao không viết cụ thể lỗi là gì, sảy ra khi nào? Tốt nhất là liệt kê ra một loạt thao tác mà cuối cùng bị lỗi. Đừng kiểu bắt người khác đoán mò, mò kim đáy biển.

Thử xóa hết trong Module2 đoạn
Mã:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

và thay bằng
Mã:
#If VBA7 Then
    #If Win64 Then
        Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
        Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    #Else
        Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
        Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    #End If
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If
 
Sao không viết cụ thể lỗi là gì, sảy ra khi nào? Tốt nhất là liệt kê ra một loạt thao tác mà cuối cùng bị lỗi. Đừng kiểu bắt người khác đoán mò, mò kim đáy biển.

Thử xóa hết trong Module2 đoạn
Mã:
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

và thay bằng
Mã:
#If VBA7 Then
    #If Win64 Then
        Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
        Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongPtrA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    #Else
        Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
        Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
    #End If
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

Giờ nó hiện bảng lỗi sau nè bạn, nhờ bạn giúp mình nhé
Private Sub UserForm_Initialize()
Me.Caption = "THEO DOI, XU LY VA QUAN LY VAN BAN"
' CmdXem.Visible = False
Sheets("Data").Select
Range("Data").Select
Me.ListBox1.RowSource = "Data"
Sheets("Main").Select
Range("TrackSoCV") = ""
Range("TrackND") = ""
Range("TrackStatus") = ""
Range("TrackLoai") = ""
Range("TrackCase") = ""
Me.Label30.Visible = False
Me.ComboBox3.Visible = False

Call MinMax(FormMain.Caption)
SendKeys "%{ }X"

'Nha^.n ðo^. ro^.ng và ðo^. cao ban ða^`u cu?a form
OldWidth = Width
OldHeight = Height
'Nha^.n handle/hWnd cu?a form
If Val(Application.Version) < 9 Then
hwnd = FindWindow("ThunderXFrame", Caption) 'XL97
Else
hwnd = FindWindow("ThunderDFrame", Caption) 'XL2000
End If
'hWnd ðýo+.c dùng ðe^? thie^'t la^.p thuo^.c tính co gia~n form, thêm nút Min, Max
PrevStyle = GetWindowLong(hwnd, GWL_STYLE)
SetWindowLong hwnd, GWL_STYLE, PrevStyle _
Or WS_SIZEBOX _
Or WS_MINIMIZEBOX _
Or WS_MAXIMIZEBOX

Sheets("Data").Select
Range("Data").Select
Range("AllData").Select
Me.ListBox1.RowSource = "Data"
Sheets("Main").Select
Range("FilterData").Select



End Sub
 
Giờ nó hiện bảng lỗi sau nè bạn, nhờ bạn giúp mình nhé
Có nghĩa cụ thể là lỗi khi thao tác thế nào, lỗi gì? Khi có lỗi chắc phải có thông báo chứ. Tôi đâu có rỗi hơi, cũng chả có hứng đoán mò. Trích code làm gì khi tôi đã thấy chúng trong tập tin.
 
Lần chỉnh sửa cuối:
Tưởng vụ chia bang, chia phái mới có trong phim tàu, kiểu như 'cái bang'. Giờ ở đây cũng thấy phân bang.

1639100258499.png
 
Có nghĩa cụ thể là lỗi khi thao tác thế nào, lỗi gì? Khi có lỗi chắc phải có thông báo chứ. Tôi đâu có rỗi hơi, cũng chả có hứng đoán mò. Trích code làm gì khi tôi đã thấy chúng trong tập tin.
Giống như đi khám bệnh nhưng bác sĩ hỏi đau ở đâu không nói.
Không nói nhưng bác sĩ biết đau gì thì mới tài, chứ nói ra thì ai chả biết @!>><
 
Có nghĩa cụ thể là lỗi khi thao tác thế nào, lỗi gì? Khi có lỗi chắc phải có thông báo chứ. Tôi đâu có rỗi hơi, cũng chả có hứng đoán mò. Trích code làm gì khi tôi đã thấy chúng trong tập tin.
Xin lỗi vì thực tình tôi không biết về cái này, khi mở file ra nó hiện bảng báo lối như sau
 

File đính kèm

  • LOI KHI MO FILE.PNG
    LOI KHI MO FILE.PNG
    201.1 KB · Đọc: 18
Xin lỗi vì thực tình tôi không biết về cái này, khi mở file ra nó hiện bảng báo lối như sau
Nói chung là code hổ lốn. Trong các UserForm đều gọi sub MinMax từ Module2 để thiết lập style cho cửa sổ (thêm nút Min, Max trên thanh tiêu đề cửa sổ và cho phép kéo các cạnh cửa sổ), nhưng lại khai báo lại trong chúng các hàm API rồi thiết lập lại style. Tôi đã đá đít tất cả các khai báo và gọi hàm API trong các UserForm.

Thực ra chuyện thay đổi style chỉ là son phấn, nhưng tôi để nguyên code trong Module2 và các call MinMax trong các UserForm.

Tôi có cảm giác code không được "đẹp" cho lắm nhưng tôi không có hứng viết lại.
 

File đính kèm

  • Congvan.xls
    322.5 KB · Đọc: 27
Nói chung là code hổ lốn. Trong các UserForm đều gọi sub MinMax từ Module2 để thiết lập style cho cửa sổ (thêm nút Min, Max trên thanh tiêu đề cửa sổ và cho phép kéo các cạnh cửa sổ), nhưng lại khai báo lại trong chúng các hàm API rồi thiết lập lại style. Tôi đã đá đít tất cả các khai báo và gọi hàm API trong các UserForm.

Thực ra chuyện thay đổi style chỉ là son phấn, nhưng tôi để nguyên code trong Module2 và các call MinMax trong các UserForm.

Tôi có cảm giác code không được "đẹp" cho lắm nhưng tôi không có hứng viết lại.
Cảm ơn bạn rất nhiều nhé
 
Web KT
Back
Top Bottom