Nhờ xem giúp lỗi này là lỗi gì, khắc phục ra sao (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

anhdepjai

Thành viên thường trực
Tham gia
16/6/10
Bài viết
383
Được thích
92
Như tiêu đề, mình nhờ mọi người xem giúp lỗi này là lỗi gì, MÌnh phải làm sao để sửa lỗi
(NOTE: File này chạy liên tục ngày qua ngày, không nghỉ, nhưng sáng ra đến thì nó báo lỗi). CODE của nó dạng, cứ 20p thì lại open 1 file Data, lấy dữ liệu đưa lên hiển thị và tắt file Data đi.
Thanks all,
Capture.jpg
 
Như tiêu đề, mình nhờ mọi người xem giúp lỗi này là lỗi gì, MÌnh phải làm sao để sửa lỗi
(NOTE: File này chạy liên tục ngày qua ngày, không nghỉ, nhưng sáng ra đến thì nó báo lỗi). CODE của nó dạng, cứ 20p thì lại open 1 file Data, lấy dữ liệu đưa lên hiển thị và tắt file Data đi.
Thanks all,
View attachment 165685
Công nhận là hình thấy rõ nhưng không đọc được cái bảng thông báo.
 
Upvote 0
CODE của mình như thế này:
Sub Auto_Run()
t1 = Format(Sheet1.Range("A1"), "hh:mm:ss")
t2 = Format(Sheet1.Range("A2"), "hh:mm:ss")
t3 = Format(Sheet1.Range("A3"), "hh:mm:ss")
t4 = Format(Sheet1.Range("A4"), "hh:mm:ss")
t5 = Format(Sheet1.Range("A5"), "hh:mm:ss")
t6 = Format(Sheet1.Range("A6"), "hh:mm:ss")
t7 = Format(Sheet1.Range("A7"), "hh:mm:ss")
t8 = Format(Sheet1.Range("A8"), "hh:mm:ss")
t9 = Format(Sheet1.Range("A9"), "hh:mm:ss")
t10 = Format(Sheet1.Range("A10"), "hh:mm:ss")
t11 = Format(Sheet1.Range("A11"), "hh:mm:ss")
t12 = Format(Sheet1.Range("A12"), "hh:mm:ss")
t13 = Format(Sheet1.Range("A13"), "hh:mm:ss")
t14 = Format(Sheet1.Range("A14"), "hh:mm:ss")
t15 = Format(Sheet1.Range("A15"), "hh:mm:ss")
t16 = Format(Sheet1.Range("A16"), "hh:mm:ss")
t17 = Format(Sheet1.Range("A17"), "hh:mm:ss")
t18 = Format(Sheet1.Range("A18"), "hh:mm:ss")
t19 = Format(Sheet1.Range("A19"), "hh:mm:ss")
t20 = Format(Sheet1.Range("A20"), "hh:mm:ss")
t21 = Format(Sheet1.Range("A21"), "hh:mm:ss")
t22 = Format(Sheet1.Range("A22"), "hh:mm:ss")
t23 = Format(Sheet1.Range("A23"), "hh:mm:ss")
t24 = Format(Sheet1.Range("A24"), "hh:mm:ss")
Application.OnTime t1, "updata"
Application.OnTime t2, "updata"
Application.OnTime t3, "updata"
Application.OnTime t4, "updata"
Application.OnTime t5, "updata"
Application.OnTime t6, "updata"
Application.OnTime t7, "updata"
Application.OnTime t8, "updata"
Application.OnTime t9, "updata"
Application.OnTime t10, "updata"
Application.OnTime t11, "updata"
Application.OnTime t12, "updata"
Application.OnTime t13, "updata"
Application.OnTime t14, "updata"
Application.OnTime t15, "updata"
Application.OnTime t16, "updata"
Application.OnTime t17, "updata"
Application.OnTime t18, "updata"
Application.OnTime t19, "updata"
Application.OnTime t20, "updata"
Application.OnTime t21, "updata"
Application.OnTime t22, "updata"
Application.OnTime t23, "updata"
Application.OnTime t24, "updata"

End sub

Sub updata()
fname = ThisWorkbook.Path & "\Stock board.xlsx"
sourcename = "Z:\Stboard\Data.xlsx"
timerr = Sheet1.Range("A1:C24").Value
On Error Resume Next
If Dir(sourcename) = "Data.xlsx" Then
For i = 1 To 24
For j = 1 To 3
If Format(timerr(i, j), "hh:mm:ss") = Format(Now, "hh:mm:ss") Then
With Application.Workbooks.Open(sourcename, 0)
arr = .Sheets("Data").Range("O51:Y81").Value
.Close False
End With
If IsFileOpen(fname) = False Then
Application.Workbooks.Open fname
Application.Workbooks("Stock board.xlsx").Sheets("Board").Range("O51").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
Else
Application.Workbooks("Stock board.xlsx").Sheets("Board").Range("O51").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End If
Exit For
End If
Next j
Next i
End If
Auto_Run
Erase arr
End Sub


Không biết chạy lâu có gây ra lỗi không nhỉ?
Mình thử mấy cách như trong hướng dẫn mà không được
 
Upvote 0
Mình thấy là lúc báo lỗi thì con excel ngốn ram lên đến hơn 1GB.
Các bạn có cách nào auto free ram khi chạy file không?

Thanks
 
Upvote 0
có ai biết bạn làm cái gì đâu mà giúp , hàm updata() gọi đến hàm Auto_Run() và hàm Auto_Run() lại gọi tiếp hàm updata() thêm mấy chục lần nữa , cứ lẩn quẩn vậy không treo máy mới lạ .
bạn cứ nói thẳng ra cần thực hiện công việc gì , up file lên đây cộng đồng mới góp ý nên viết code làm sao , chứ nhìn code đâu có biết được công việc cần phải làm gì mà góp ý được .
 
Upvote 0
có ai biết bạn làm cái gì đâu mà giúp , hàm updata() gọi đến hàm Auto_Run() và hàm Auto_Run() lại gọi tiếp hàm updata() thêm mấy chục lần nữa , cứ lẩn quẩn vậy không treo máy mới lạ .
bạn cứ nói thẳng ra cần thực hiện công việc gì , up file lên đây cộng đồng mới góp ý nên viết code làm sao , chứ nhìn code đâu có biết được công việc cần phải làm gì mà góp ý được .

Hi, bạn xem có cách nào không. chứ mình sống chung với task manager ngày 1 lần, đang nản quá.
Cực là nó đơ lúc mình ko có mặt ở đấy mới nản
 

File đính kèm

Upvote 0
Hi, bạn xem có cách nào không. chứ mình sống chung với task manager ngày 1 lần, đang nản quá.
Cực là nó đơ lúc mình ko có mặt ở đấy mới nản

bạn cho biết lý do tại sao file đang mở thì cần phải đóng lại rồi lại mở nó lên mới ghi dữ liệu được ?

Mã:
Application.Workbooks("Stock board.xlsx").Close False
Application.Workbooks.Open fname, 0
Application.Workbooks("Stock board.xlsx").Sheets("Board").Range("O51").Resize(UBound(arr, 1), UBound(arr, 2)) = arr

tại sao cần "hẹn giờ" để ghi dữ liệu vào file vậy ?
Nếu đưa tôi làm thì tôi xóa hết mấy cái giờ giấc đó
Tôi sẽ làm như này :
mỗi file khi SAVE thì thông số Date LastModified sẽ thay đổi , vậy ta căn cứ vào đây để quyết định Update dữ liệu vào file Stock board.xlsx .
Ta sẽ viết hàm có chức năng như sau :
Cứ mỗi 2 phút sẽ thực hiện check DateLastModified của Data.xlsx . Nếu nó có sự thay đổi ta sẽ Update vào Stock board.xlsx , không thì không cần làm gì .
Cho tôi biết ý bạn nhé .
 
Upvote 0
Sorry vì giờ mới check được bài.
File stockboard.xlsx có 1 cái flash để show giờ. mình chạy bằng computer stick. Lần trước chạy lâu lâu nó lại treo nên mình tắt file đi rồi bật lại. Giờ tự nhiên ko treo nữa nên mình bỏ qua đoạn tắt stockboard.xlsx rồi.
Còn đường link tới file data.xlsx nó thỉnh thoảng có lúc đứt nữa. Mình hẹn giờ để cứ 20p nó lại update đấy mà. sợ up liên tục thì treo.
Bạn hướng dẫn giải thuật cho mình với nhé. Thanks
 
Upvote 0
Trước hết thêm 2 biến toàn cục
Mã:
Private lastModified
Private isRunning As Boolean

thủ tục cho nút Start
Mã:
Public Sub StartRun()
If Not isRunning Then
    isRunning = True
    lastModified = Now - TimeValue("23:59:59")
    UpdateData
Else
    MsgBox "Running Update Data , Cannot Start procedure any more"
End If
End Sub

thủ tục nút Stop
Mã:
Public Sub StopRun()
If isRunning Then
    isRunning = False
    MsgBox "canceled"
End If
End Sub

hàm Update
Mã:
Private Sub UpdateData()
Dim targetName As String, sourceName As String, fso As Object, newLastModified
Dim UpRng As Range, srRng As String, lPos As Long
targetName = ThisWorkbook.Path & "\Stock board.xlsx"
sourceName = ThisWorkbook.Path & "\Data.xlsx"


Set fso = CreateObject("Scripting.FileSystemObject")
newLastModified = fso.GetFile(sourceName).[COLOR=#ff0000][SIZE=3][B]DateLastModified[/B][/SIZE][/COLOR]
Set fso = Nothing
If lastModified < newLastModified Then
    If Not IsFileOpen(targetName) Then Workbooks.Open targetName
    lPos = InStrRev(sourceName, "\")
    srRng = "'" & Left(sourceName, lPos) & "[" & Mid(sourceName, lPos + 1) & "]Data'!O51:Y81"
    Set UpRng = Workbooks("Stock board.xlsx").Sheets("Board").Range("O51:Y81")
    On Error GoTo cont
    UpRng.FormulaArray = "=if(" & srRng & "="""",""""," & srRng & ")"
    UpRng.Value = UpRng.Value
    lastModified = newLastModified
    Set UpRng = Nothing
Else
    'MsgBox "nothing to do"
End If
cont:
If isRunning Then Application.OnTime Now + TimeValue("00:0[SIZE=5][COLOR=#ff0000][B]2[/B][/COLOR][/SIZE]:00"), "UpdateData"
End Sub

ý nghĩa : cứ 2 phút thì check thông số DateLastModified ( không phải mở file ) của file Data.xlsx nếu có sự thay đổi thì sẽ Update vào Stock board.xlsx , nếu chưa thì không làm gì cả . Bạn có thể chọn lại số phút chỗ màu đỏ .
 
Upvote 0
Doveandrose cho mình hỏi chỗ này với: UpRng.Value = UpRng.Value
với lại file mình cần lấy là nằm ở máy khác trong mạng LAN, mình add vào map network drive là "Z:\Stboard\Data.xlsx"
Vậy với mạng lan wifi không ổn định, mình thêm code nào để nó update lúc mạng lan đứt rồi có lại nhỉ.
Thanks
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy là bài này chủ thớt Hàng ngày lúc nào cũng phải Mở File Run.xlsm lên cả ngày hay sao

Tại sao không Tao một File *.exe Lưu các thông tin khởi động cùng windows file *.exe vào Registry ...

Xong mỗi lần mở máy tính lên là nó check File Data.xlsx

Nếu DateLastModified .. của file nay thay đổi thì mở file Stock board.xlsx lên mà lấy dữ liều xong đóng nó lại ...như vậy sẻ gọn gàng hơn nhiều đó và ko tốn tài nguyên hệ thống ...

Lúc này sửa File Stock board.xlsx sang Stock board.xlsb xong nhét vào đó Sub Auto_Open()

nó chạy lấy dữ liệu xong lưu lại rồi thoát luôn ....khi nào nổi hứng thì mở nó lên mà coi ....đơn giản không
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy là bài này chủ thớt Hàng ngày lúc nào cũng phải Mở File Run.xlsm lên cả ngày hay sao

Tại sao không Tao một File *.exe Lưu các thông tin khởi động cùng windows file *.exe vào Registry ...

ừ , rồi có chuyện gì trục trặc thì kiếm ai để khui cái file exe đó ra sửa đây anh Kiều Mạnh ? :-=:-=
 
Upvote 0
Vậy là bài này chủ thớt Hàng ngày lúc nào cũng phải Mở File Run.xlsm lên cả ngày hay sao

Tại sao không Tao một File *.exe Lưu các thông tin khởi động cùng windows file *.exe vào Registry ...

Xong mỗi lần mở máy tính lên là nó check File Data.xlsx

Nếu DateLastModified .. của file nay thay đổi thì mở file Stock board.xlsx lên mà lấy dữ liều xong đóng nó lại ...như vậy sẻ gọn gàng hơn nhiều đó và ko tốn tài nguyên hệ thống ...

Lúc này sửa File Stock board.xlsx sang Stock board.xlsb xong nhét vào đó Sub Auto_Open()

nó chạy lấy dữ liệu xong lưu lại rồi thoát luôn ....khi nào nổi hứng thì mở nó lên mà coi ....đơn giản không

Ớ, mình từ đầu, không biết tý gì, ngày trước học cơ khí. Đọc bài của mọi người trên diễn đàn mới bắt đầu làm được đến đây. Giờ chuyển sang exe thì chịu hẳn rồi.
Mình đã bỏ file Run.xlsm và làm theo code của Doveandrose để sử dụng duy nhất file stockboard.xlsm. thấy nó cũng ổn ổn. hì
 
Upvote 0
Ớ, mình từ đầu, không biết tý gì, ngày trước học cơ khí. Đọc bài của mọi người trên diễn đàn mới bắt đầu làm được đến đây. Giờ chuyển sang exe thì chịu hẳn rồi.
Mình đã bỏ file Run.xlsm và làm theo code của Doveandrose để sử dụng duy nhất file stockboard.xlsm. thấy nó cũng ổn ổn. hì
Cách Doveandrose viết cho bạn thì ok rồi đó ....nếu làm biếng thì làm theo bài 12 của mình đó
Khi khởi động máy tính thì nó kiểm tra file Data.xlsx ...

Nếu có sử thay đổi thì nó tự động mở file stockboard.xlsm lên lấy dữ liệu xong lưu và đóng lại luôn ....

Sau 2 phút nó lại kiểm 1 lại một lần nếu thay đổi nó lại mở file stockboard.xlsm lên lấy xong lưu lại ....cứ như vậy khi nào tắt máy thì nó nghỉ

khi nào muốn kiểm tra thì mở file stockboard.xlsm lên mà coi

VD như file sau : cứ 1 phút nó mở File *.txt lên một lần ....Mình chưa sít nó khởi động cùng Windows
Bạn tải về mở lên nó mới chạy

 

File đính kèm

Upvote 0
Kiều mạnh ah,

Đã hiểu, Nhưng cái này vẫn chạy phải dựa vào sườn excel ah?
Mình có thể làm file exe để hiển thị và lấy dữ liệu từ excel không? Mục đích của mình là hiển thị ấy
 
Upvote 0
Kiều mạnh ah,

Đã hiểu, Nhưng cái này vẫn chạy phải dựa vào sườn excel ah?
Mình có thể làm file exe để hiển thị và lấy dữ liệu từ excel không? Mục đích của mình là hiển thị ấy
Lấy xong nhét nó vào đâu ...

làm vậy hay hơn thay vì bạn phải mở file Excel liên tục ko cần thiết ...chỉ mở khi cần thiết thôi chứ

Học code làm cho nó tự động hóa trong khả năng có thể chứ trừ khi ko làm được thì mới chơi thủ công thôi
 
Upvote 0
Mình cần hiển thị lên được cái màn hình (60 inch) nội dung như file stockboard.xlsx ấy, dữ liệu thì ở file Data.xlsx rồi. nếu làm thành file exe thì có chạy được cái đồng hồ flash như trong file không Mạnh.

Thanks
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom