Lỗi "There isn’t Enough Memory to Complete this Action trong Microsoft Office Excel 2016" khi chạy file chứa VBA

  • Thread starter Thread starter Miccpro
  • Ngày gửi Ngày gửi
Liên hệ QC

Miccpro

Thành viên thường trực
Tham gia
9/12/10
Bài viết
236
Được thích
10
Em đang dùng office 2016 bản 32 bit, khi chạy 1 file có chứa tương đối code vba thì nó bị lỗi:
456.jpg
Em đã thử theo hướng dẫn: http://vforum.vn/diendan/showthread...this-Action-trong-Microsoft-Office-Excel-2016 thì bị lỗi này sau khi kích chọn Ignore other applications that use Dynamic Data Exchage (DDE) trong Opiton/Advanced:
123.jpg

và Tab File bị thế này:
789.jpg
Em cũng đã thử tăng dung lượng bộ nhớ ram ảo rồi nhưng vẫn không thành công!
Vậy các anh chị cho em hỏi lỗi này do code VBA hay do Office, win ... ạ. Nếu do VBA thì hoang mang quá vì em không biết lỗi chỗ nào mà sửa :(:(:(. Có cách nào khắc phục không ạ, em xin cảm ơn
 
Lỗi do Office 32Bit không đủ bộ nhớ xử lý ->Nâng cấp lên 64Bit sẽ có thể khắc phục được...
Vậy là không phải lỗi do VBA, bác cho em hỏi ngu tý: Tại sao lại đến 1 thao tác hoặc vùng nào đó (code của em nhiều sub trong sheet) thì mới bị, nếu ko thì không sao. Em đã thử đổi sang bản 64 thì 1 loạt hàm API đỏ lòm nên đang ngại
Bài đã được tự động gộp:

Cho mình hỏi chỗ này với. Bạn thiết lập như nào vậy?
Và sau khi thiết lập được, làm sao biết Excel dùng tới phần bộ nhớ mới đó hay không?
Dạ, cái này thì em cũng mù mờ lắm ạ. Nhấp hỏi anh google theo bảng báo lỗi thì họ hướng dẫn thế nào thì làm thế đó anh ạ
 
Upvote 0
Để võ đoán tình huống của bạn thử xem nhé.--=0

Bạn dùng Office 32 nghĩa là VBA được cho phép sử dụng dải bit nhớ được đánh thứ tự từ 0 đến 4294967296(2^32 khoảng 4GB). Tuy nhiên trong dải bit nhớ này có rất nhiều chương trình hay tiến trình đã sử dụng bao gồm cả hệ điều hành và VBA là người đến sau thi sẽ được dùng những phần bộ nhớ chưa được cấp cho chương trình nào trước đó.

Với nhu cầu cơ bản ít khi khi nào chúng ta dùng hết tất cả 4GB này tại 1 thời điểm nhưng khi bật tắt nhiều chương trình hay tiến trình thì xảy ra một tình huống là xuất hiện rất nhiều dải nhớ trống được giải phóng từ các chương trình, tiến trình hoặc hàm trước đó. Còn những dải nhớ khác đang sử dụng vẫn nằm ở vị trí ổn định (trừ khi được lập trình dịch chuyển). Nghĩa là trên ram sẽ có rải rác dải nhớ đang dùng và dải nhớ trống xen kẽ tương tự sự phân mảnh trong quản lý data của file vậy. File có thể được tạo bởi các dải nhớ không liên tục được kết nối nhằm tối ưu việc sử dụng bộ nhớ thiết bị lưu trữ.

Vấn đề là quản lý dữ liệu trên RAM khác cách quản lý dữ liệu của file nên nảy sinh việc tổng số dung lượng của dải nhớ hữu dụng rải rác thì rất nhiều nhưng khi một chương trình cần 1 dải nhớ đủ rộng (và liên tục) lại không tìm được. Thế là phát sinh lỗi "isn't ennough memory".

Nôm na giống chuyện 1 anh nhà giàu muốn mua một lô đất mặt tiền rộng 100 trên đường A, dù rất nhiều người bán nhưng họ toàn bán những lô rộng 20, 10, 5 xen kẽ với những lô chưa muốn bán. Thành ra tổng bề ngang mặt tiền đang bán trên đường A hơn 1000m nhưng không tìm ra lô nào rộng 100 m.

Phần bộ nhớ được quản lý trong phạm vị 32 bit bị băm nhỏ từ trước nên không đủ tiêu chuẩn cấp phát trong khi ngoài phạm vị quản lý 32 bit thì thậm chí chưa chương trình nào dùng tới. Điều này xảy ra với Office 32 chạy trên máy có dung lượng Ram lớn hơn 4GB.

Còn Virtual Memory là công nghệ dùng bộ nhớ thiết bị lưu trữ (HDD, SDD) như là RAM mở rộng khi dung lượng RAM quá ít. Trên Windows, cơ chế này ra đời rất lâu rồi từ thời Windows 2000 và có thể trước đó bằng Page File. Cũng vì cơ chế này mà chúng ta sẽ gần như chả bao giờ nhìn thấy cảnh máy tính xài đến được 99% dung lượng Ram trừ khi tắt Page File và làm đủ trò --=0.

Virtual Memory thực sự cần thiết và cực kỳ hiệu quả nhất là khi Ram của máy không nhiều nên mặc nhiên là được Windows bật sẵn. Virtual Memory được minh họa khá dễ hiểu bằng cờ líp What is Virtual Memory? sau.
 
Lần chỉnh sửa cuối:
Upvote 0
Để võ đoán tình huống của bạn thử xem nhé.--=0

Bạn dùng Office 32 nghĩa là VBA được cho phép sử dụng dải bit nhớ được đánh thứ tự từ 0 đến 4294967296(2^32 khoảng 4GB). Tuy nhiên trong dải bit nhớ này có rất nhiều chương trình hay tiến trình đã sử dụng bao gồm cả hệ điều hành và VBA là người đến sau thi sẽ được dùng những phần bộ nhớ chưa được cấp cho chương trình nào trước đó.

Với nhu cầu cơ bản ít khi khi nào chúng ta dùng hết tất cả 4GB này tại 1 thời điểm nhưng khi bật tắt nhiều chương trình hay tiến trình thì xảy ra một tình huống là xuất hiện rất nhiều dải nhớ trống được giải phóng từ các chương trình, tiến trình hoặc hàm trước đó. Còn những dải nhớ khác đang sử dụng vẫn nằm ở vị trí ổn định (trừ khi được lập trình dịch chuyển). Nghĩa là trên ram sẽ có rải rác dải nhớ đang dùng và dải nhớ trống xen kẽ tương tự sự phân mảnh trong quản lý data của file vậy. File có thể được tạo bởi các dải nhớ không liên tục được kết nối nhằm tối ưu việc sử dụng bộ nhớ thiết bị lưu trữ.

Vấn đề là quản lý dữ liệu trên RAM khác cách quản lý dữ liệu của file nên nảy sinh việc tổng số dung lượng của dải nhớ hữu dụng rải rác thì rất nhiều nhưng khi một chương trình cần 1 dải nhớ đủ rộng (và liên tục) lại không tìm được. Thế là phát sinh lỗi "isn't ennough memory".

Nôm na giống chuyện 1 anh nhà giàu muốn mua một lô đất mặt tiền rộng 100 trên đường A, dù rất nhiều người bán nhưng họ toàn bán những lô rộng 20, 10, 5 xen kẽ với những lô chưa muốn bán. Thành ra tổng bề ngang mặt tiền đang bán trên đường A hơn 1000m nhưng không tìm ra lô nào rộng 100 m.

Phần bộ nhớ được quản lý trong phạm vị 32 bit bị băm nhỏ từ trước nên không đủ tiêu chuẩn cấp phát trong khi ngoài phạm vị quản lý 32 bit thì thậm chí chưa chương trình nào dùng tới. Điều này xảy ra với Office 32 chạy trên máy có dung lượng Ram lớn hơn 4GB.

Còn Virtual Memory là công nghệ dùng bộ nhớ thiết bị lưu trữ (HDD, SDD) như là RAM mở rộng khi dung lượng RAM quá ít. Trên Windows, cơ chế này ra đời rất lâu rồi từ thời Windows 2000 và có thể trước đó bằng Page File. Cũng vì cơ chế này mà chúng ta sẽ gần như chả bao giờ nhìn thấy cảnh máy tính xài đến được 99% dung lượng Ram trừ khi tắt Page File và làm đủ trò --=0.

Virtual Memory thực sự cần thiết và cực kỳ hiệu quả nhất là khi Ram của máy không nhiều nên mặc nhiên là được Windows bật sẵn. Virtual Memory được minh họa khá dễ hiểu bằng cờ líp What is Virtual Memory? sau.
Cám ơn anh. Anh có thể giúp em về giải pháp xử lý việc này được không ạ? Cả máy tính bàn ở công ty và ở nhà đều dính lỗi này.
 
Upvote 0
Cảm ơn anh quan tâm, nhưng ý em là lỗi khi chạy office 2016 32 bit và em không muốn cài sang 64 bit vì động chạm nhiều hàm API

Ý là chạy thử xem có phải lỗi giữa 32 và 64 hay không thôi rồi mới tìm cách khắc phục. Nếu trên 64 vẫn bị lỗi thì sẽ tìm hướng khác,
 
Upvote 0
Web KT

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

Back
Top Bottom