Sổ làm việc Excel được tạo qua Access VBA mở trong thanh tác vụ nhấp nháy thay vì tự động trên màn hình...XIN TRỢ GIÚP!!!

Sổ làm việc Excel được tạo qua Access VBA mở trong thanh tác vụ nhấp nháy thay vì tự động trên màn hình...XIN TRỢ GIÚP!!!

Tôi có cơ sở dữ liệu Access 2007 chạy trên Access 2010/Windows 10, cơ sở dữ liệu này tạo bảng tính Excel tùy chỉnh dựa trên thông tin nhập của người dùng từ một biểu mẫu. Mọi thứ đều hoạt động tốt, ngoại trừ sổ làm việc Excel mới tạo bị treo trên thanh tác vụ Windows đang nhấp nháy (cho đến khi tôi nhấp vào biểu tượng Excel để mở) thay vì tự động mở trên màn hình. Có vẻ nhỏ, nhưng điều này đánh bại mục đích tự động hóa theo quan điểm của tôi. Làm cách nào để tệp Excel tự động mở trên màn hình? Hay đây là một tính năng của Office/Access 2010 không thể sửa đổi?

LƯU Ý: Tôi đang sử dụng một PC mới mua có cài đặt MS Office 2010...PC này trước đây đã có phiên bản dùng thử của MS Office 365 mà tôi đã gỡ cài đặt trước khi tải Office 2010...mục tiêu là di chuyển cơ sở dữ liệu sang Access 2010 trước khi đang chuyển đổi sang Access 2019...

1. Tôi đã kiểm tra mã của mình, có vẻ như đó không phải là vấn đề

2. Tôi đã tạo một hàm tương tự trong tệp Access mới với mã được đơn giản hóa bên dưới và gặp chính xác vấn đề tương tự:

'Khai báo đối tượng Excel

Dim xlApp dưới dạng Excel.Ứng dụng

Làm mờ xlBook dưới dạng Excel.Workbook

Làm mờ xlSheet dưới dạng Excel.Worksheet

'Đặt đối tượng Excel và thực hiện

Đặt xlApp = Excel.Application mới

Đặt xlBook = xlApp.Workbooks.Add

xlBook.Kích hoạt

Đặt xlSheet = xlBook.ActiveSheet

xlApp.Visible = Đúng

'Dọn dẹp đối tượng để tiết kiệm bộ nhớ

Đặt xlApp = Không có gì

Đặt xlBook = Không có gì

Đặt xlSheet = Không có gì

3. Dành hàng giờ chơi với nhiều cài đặt khác nhau: (1) Bỏ qua các ứng dụng khác sử dụng DDE; (2) vô hiệu hóa tăng tốc đồ họa Phần cứng; (3) bỏ chọn tất cả cài đặt Chế độ xem/Khối tệp được bảo vệ; (4) đã mở Excel ở chế độ an toàn và với những người dùng khác; (5) Đã xác nhận tất cả các đường dẫn/thư mục có liên quan là Vị trí đáng tin cậy...

4. Quan sát thú vị #1: Khi bạn chỉ cần nhấp vào các mô-đun VBA bên dưới và mã trong cả hai tệp này (MÀ KHÔNG thay đổi BẤT KỲ mã nào) rồi thoát khỏi VBA rồi chạy ngay biểu mẫu trong ứng dụng, điều này sẽ giải quyết được vấn đề. ..Sổ làm việc Excel được tạo theo chương trình sẽ tự động mở trên màn hình ở dạng xem mở rộng/phóng to...CHO ĐẾN KHI tôi đóng tệp Access và mở lại. Điều này khiến tôi nghĩ rằng có một số loại lỗi hoặc cài đặt Excel/Access tiếp tục chặn các tệp Excel tự động mở trên màn hình...

5. Quan sát thú vị #2: Khi tôi tải các tệp này lên PC trước đó đang chạy Office 2007/Windows 10 (cũng như một máy tính thậm chí còn cũ hơn đang chạy Office 2007/Windows Vista)...cơ sở dữ liệu ban đầu của tôi hoạt động tốt (giống như đối với năm) trên cả hai máy, trong khi tệp mới hơn, sau này có mã đơn giản hóa vẫn mở đầu ra Excel thông qua biểu tượng nhấp nháy trên thanh tác vụ thay vì tự động hiển thị trên màn hình... do đó, vấn đề tương tự chỉ xảy ra với tệp sau... trên các máy cũ hơn sử dụng Office 2007. ..điều này khiến tôi nghĩ rằng đây là sự cố dành riêng cho phiên bản Office...

Đã tìm kiếm các chủ đề khác cho người dùng có vấn đề tương tự nhưng không có kết quả...

Mọi phản hồi hoặc hướng dẫn sẽ được đánh giá rất cao!!!

-Chris

>




Trả lời:

Hoạt động bình thường đối với tôi.

Hãy thử điều này: đặt thành hiển thị ngay sau khi tạo đối tượng.

Đặt xlApp = Excel.Application mới
xlApp.Visible = Đúng

>

Khi bạn mở Excel qua nút Bắt đầu, nó có thu nhỏ xuống thanh tác vụ không?



Trả lời:

Đánh giá cao phản ứng Tom.

Tôi đã thay đổi trình tự như bạn đã nói nhưng sự cố vẫn tiếp diễn...nó vẫn hoạt động bình thường sau khi biên dịch mã và sau đó chạy biểu mẫu, thậm chí sau khi nén và sửa chữa cơ sở dữ liệu...nhưng khi tôi thoát Access hoàn toàn rồi mở lại tệp ...vấn đề vẫn còn...giống như trước đây khi tôi hoàn toàn không thay đổi mã...điều này thực sự kỳ lạ.

Excel mở hoàn toàn tốt (để trang tính hiển thị đầy đủ, chế độ xem tối đa) thông qua nút bắt đầu, qua lối tắt trên màn hình và thậm chí từ cùng một biểu tượng được ghim vào thanh tác vụ khi tôi nhấp vào chúng...

Điều này chỉ xảy ra khi tôi mở Excel qua Access VBA... Biểu tượng Excel nhấp nháy trên thanh tác vụ, cho tôi biết rằng tệp thực tế đang được mở/tải, nhưng tôi vẫn phải bấm vào tệp đó để thực sự nhìn thấy tệp...ước gì tôi có thể loại bỏ bước cuối cùng đó bằng cách nào đó ...

Tốt nhất,

Chris



Trả lời:

thêm vào:

 xlApp.WindowState = xlMaximized


Trả lời:

Cảm ơn một lần nữa Tom.

Đã thử thêm dòng đó... nhưng sự cố vẫn tiếp diễn.

Nghĩ rằng nó có thể liên quan đến phiên bản cơ bản trực quan mà tệp được tạo bằng... do sự cố vẫn tồn tại trong tệp mới chứ không phải cơ sở dữ liệu gốc của tôi khi cả hai được tải trên các máy khác nhau...

Tôi nghĩ rằng đó có thể là một khóa đăng ký dự phòng, xung đột từ phần mềm Office trước đó mà tôi đã gỡ cài đặt...mặc dù tệp cơ sở dữ liệu mới đó cũng gặp vấn đề tương tự trên các máy khác...vốn luôn có một phiên bản Office. ..

Một lần nữa, mọi thứ đều hoạt động tốt khi bạn truy cập vào các mô-đun VBA cơ bản của cả hai tệp...(và bạn thậm chí không phải thay đổi bất kỳ mã nào (đó là lý do tại sao tôi nghĩ rằng mã hóa không phải là vấn đề)...chỉ là vật lý hành động mở các mô-đun VBA trong visual basic)...sau đó thoát khỏi VBA và chạy ngay các biểu mẫu/ứng dụng...và mọi thứ vẫn hoạt động tốt khi bạn nén và sửa chữa cơ sở dữ liệu...NHƯNG khi bạn đóng tệp hoàn toàn, hãy thoát Truy cập và mở lại tệp...sự cố quay trở lại...rất kỳ lạ.

Hy vọng ai đó có thể phá vỡ điều này ...

Tốt nhất,

Chris



Trả lời:

Bạn chỉ có thể xuất tệp xlsx rồi mở nó

Dim appXl As Excel.Application

Làm mờ myWorkbook dưới dạng Excel.Workbook

Đặt appXl = CreateObject("Excel.Application")

Đặt myWorkbook = appXl.Workbooks.Open("MyPath\MyFile.xlsx")

appXl.visible = True

appXl.WindowState = xlMaximized

Đặt appXl = Không có gì

Đặt myWorkbook = Không có gì



Trả lời:

Đánh giá cao gợi ý SAMarshall.

Cùng một vấn đề mặc dù. Mã và cách tiếp cận này hoạt động tốt, giống như mã của tôi, miễn là bạn vẫn ở trong tệp cơ sở dữ liệu...Excel mở tự động và trực tiếp trên màn hình trong cả hai trường hợp trong khi chạy ứng dụng ngay sau khi thoát khỏi mô-đun VBA nhưng vẫn ở trong cơ sở dữ liệu tài liệu.

Sự cố phát sinh khi bạn đóng tệp, thoát hoàn toàn Access, sau đó mở lại cơ sở dữ liệu. Việc chạy cùng một mã trong cùng một cơ sở dữ liệu khiến Excel mở thông qua biểu tượng Excel nhấp nháy trên thanh tác vụ bên dưới cả hai bộ mã...của bạn và của tôi...mà không tự động hiển thị trên màn hình...

Mã dường như chạy tốt và không có lỗi trong cả hai trường hợp...biểu tượng Excel nhấp nháy trên thanh tác vụ đang cố thu hút sự chú ý của tôi và cho tôi biết rằng sổ làm việc Excel đã sẵn sàng để sử dụng...Tôi hiểu rồi...

Nhưng không hiểu làm thế nào cùng một bộ mã tạo ra các kết quả khác nhau khi bạn chạy ứng dụng ngay sau khi chỉnh sửa (hoặc chỉ xem) trình tạo VBA so với chạy sau khi đóng tệp và sử dụng nhiều lần...

Có vẻ như đã xảy ra điều gì đó trong quá trình đóng và mở lại cơ sở dữ liệu ghi đè mã VBA, nếu không thì mã này sẽ chạy hoàn toàn bình thường...khiến tôi nghĩ rằng đây là một số cài đặt cấp Office/ứng dụng hoặc cài đặt cấp hệ thống/người dùng gây ra sự cố. ..nghĩ rằng đây sẽ là một sửa chữa nhanh chóng trong cài đặt bảo mật/quyền riêng tư trong Excel/Access...nhưng tôi đã hoàn toàn sai...

Thật ngạc nhiên, tôi đã tìm kiếm không ngừng thông tin về lý do tại sao các biểu tượng ứng dụng (nói chung) nhấp nháy trên thanh tác vụ trước khi mở/hiển thị trên màn hình...chỉ để hiểu rõ hơn về những gì đang diễn ra...và không tìm thấy gì...có lẽ tôi 'm đang tìm kiếm ở những nơi sai.

Tốt nhất,

Chris



Trả lời:

Chris,

Bạn đã phát hiện ra bất kỳ lý do cho điều này? Im có cùng một vấn đề. Tôi tạo ứng dụng cho người khác sử dụng và một trong các ứng dụng Access sẽ mở tệp Excel yêu cầu phản hồi hộp thông báo. Vì tệp không mở trên màn hình nên ai đó có thể nhận thấy hoặc không nhận thấy tab nhấp nháy trên thanh tác vụ. Nó chỉ nhấp nháy trong một thời gian ngắn. Nếu người sử dụng ứng dụng nhận được một cuộc gọi điện thoại hoặc ai đó ngắt lời để đặt câu hỏi, họ có thể không chú ý đến tab và quên nhấp vào tab đó và trả lời hộp thông báo.

Tôi cũng đã cố gắng tìm giải pháp cho vấn đề này nhưng mọi thứ tôi đã thử đều không có gì khác biệt. Nếu tôi mở trình soạn thảo VBA trong Access và đóng nó, tệp Excel sẽ mở bình thường. Tuy nhiên, sau khi đóng và mở lại cơ sở dữ liệu Access, tệp sẽ mở ra dưới dạng tab nhấp nháy.

Tôi đã cố gắng tìm cách mở trình soạn thảo vba trong quyền truy cập bằng mã và sau đó đóng nó bằng mã nhưng dường như cũng không có cách nào để thực hiện việc này. Một điều đơn giản như vậy để nhấp vào tab. Không có mã nào có thể thực hiện chức năng đó mà tôi có thể tìm thấy.

Steve



Trả lời:

Chào Steve,

Tôi đã thử điều này nhiều lần và nhận được kết quả giống như bạn, tức là Nếu tôi mở trình soạn thảo VBA trong Access và đóng nó, tệp Excel sẽ mở bình thường. Tuy nhiên, sau khi đóng và mở lại cơ sở dữ liệu Access, tệp sẽ mở ra dưới dạng tab nhấp nháy.

Sau đó tôi đã thử sử dụng:

Shell "Excel ""C:\MyPath\MyFile.xlsx""", vbMaximizedFocus

Sử dụng shell, tệp được mở/tối đa hóa mỗi lần mà không có biểu tượng lặp lại trên thanh tác vụ.

Hãy thử nó kết thúc của bạn và gửi lại với kết quả. Hy vọng rằng bạn sẽ nhận được kết quả tương tự như tôi làm.



Trả lời:

Vâng, cảm ơn bạn - điều đó đã làm việc. Nhưng--- Luôn luôn có một nhưng. Bây giờ tôi không thể chạy lệnh macro mà Access VBA phát hành cần chạy khi tệp mở ra. Tôi không thể sử dụng quy ước Auto_Open vì tệp này được mở trước cho mục nhập. Sau đó, nó được đóng bằng mã và dữ liệu được nhập vào bảng Access. Sau đó, mã Access tương tự sẽ mở tệp lần thứ hai và gọi một macro trong sổ làm việc Excel để chạy nhằm đặt lại tệp để chuẩn bị cho lần sử dụng tiếp theo. Tôi không tìm được cách đưa ra lệnh chạy macro trong Access bằng Shell để mở sổ làm việc.

Cám ơn bạn một lần nữa. Tôi sẽ tiếp tục cố gắng.

Steve



Trả lời:

Hành vi của Excel dẫn đầu luôn không thể tin cậy được (các phiên bản khác nhau hoạt động khác nhau). Cách duy nhất để đảm bảo rằng ứng dụng bên ngoài luôn ở vị trí hàng đầu là sử dụng API.

Wayne Phillips chia sẻ mã để làm điều này, hãy tham khảo

https://www.everythingaccess.com/tutorials.asp?ID=Bring-an-external-application-window-to-the-foreground

Tôi đã sử dụng mã rất giống nhau trong nhiều năm.

Vì vậy, bạn tự động hóa ứng dụng, tối đa hóa ứng dụng (hoặc bất kỳ thứ gì bạn muốn), sau đó sử dụng mã để đảm bảo ứng dụng luôn ở vị trí trung tâm.

Comments

Popular posts from this blog

Macro Đã bật Excel bị hỏng khi sử dụng Excel> Chia sẻ> Email> Gửi dưới dạng tệp đính kèm

Microsoft excel - Tạo công thức trong đó dữ liệu từ các tab / Bảng tính khác nhau có thể được đồng bộ hóa dựa trên một ô trên bảng tính

Làm mới danh sách SharePoint đã xuất không thành công trong Excel 2013 khi hoạt động với Excel 2010