Truy xuất file, folder từ điện thoại android

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Nếu ta kết nối điện thoại android với máy tính thì từ cửa sổ Explorer ta hoàn toàn có thể truy xuất bất kỳ file nào trên điện thoại
Vậy có ai biết trong trường hợp viết code VBA, ta sẽ mở một file trên điện thoại bằng cách nào không?
Cảm ơn!
 
Android khi kết nối với máy tính thì máy tính coi nơi lưu trữ như một ổ đĩa ngoại (usb). Vậy ta coi nó là moitj ổ đĩa trên máy tính thôi.
 
Nếu ta kết nối điện thoại android với máy tính thì từ cửa sổ Explorer ta hoàn toàn có thể truy xuất bất kỳ file nào trên điện thoại
Vậy có ai biết trong trường hợp viết code VBA, ta sẽ mở một file trên điện thoại bằng cách nào không?

Hình như bác ndu96081631 bị vướng ở chỗ đường dẫn tới file trên điện thoại thì phải.
Tôi đang dùng con Sony Z3 nên cũng có vọc qua vụ này. Phải nói rõ là có 2 chế độ kết nối điện thoại Android tới PC: Media Tranfer Protocol (MTP) và Mass Storage Mode (MSC). Hình như mấy điện thoại đời mới thì khônng còn hỗ trợ chế độ MSC nữa thì phải (không có máy mới nên chưa kiểm chứng). Chế độ MSC thì điện thoại như cái USB vậy và mình có thể copy/move và mở thẳng file từ điện thoại luôn. Cái này thì khỏi đề cập rồi.

MTP_1.png


Như hình bác ndu96081631 đính kèm ở trên thì nó đang ở chế độ kết nối MTP và cái này mới khó hơn chút. Cái điện thoại kết nối bây giờ là Portable Media Device chứ không phải là USB Storage thông thường nữa. Theo tôi biết thì ở chế độ kết nối MTP chỉ có thể copy file qua lại giữa PC và điện thoại thôi chứ không mở trực tiếp file từ điện thoại được. Một cái khác ở chế độ MTP là: không nhìn thấy đường dẫn file như bình thường mà chỉ là: "Computer\Xperia Z3\ SD Card". Đường dẫn này không thao tác gì được.
Ở demo đính kèm tôi dùng Shell32.dll với phương thức BrowseForFolder của nó để lấy đường dẫn gốc (root directory) của điện thoại. Chỉ có Shell32 mới thao tác được với Portable Device, FSO đọc đường dẫn không được nhé.
Đường dẫn tới điện thoại có dạng như vầy: "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_0fce&pid_01ba#bh90bbj61e#{6ac27878-a6fa-4155-ba85-f98f491d4f33}"

Screen Shot 2020-03-03 at 1.09.46 AM.png

Demo này tôi cũng chỉ làm được ở viêc Copy, Move file qua lại giữa PC và điện thoại thôi chứ chưa biết cách mở trực tiếp và bắt buộc điện thoại phải kết nối ở chế độ MTP.
Tôi nghĩ có thể dùng thủ thuật xử lý như: copy file từ điện thoại về folder tạm trên PC rồi mở theo cách thông thường, khi đóng thì xoá file tạm. Các bạn có cách làm nào khác thì chia sẻ, hướng dẫn nhé.
 

File đính kèm

  • MoFileAndroid.xlsm
    18.6 KB · Đọc: 9
Lần chỉnh sửa cuối:
Hình như bác ndu96081631 bị vướng ở chỗ đường dẫn tới file trên điện thoại thì phải.
Tôi đang dùng con Sony Z3 nên cũng có vọc qua vụ này. Phải nói rõ là có 2 chế độ kết nối điện thoại Android tới PC: Media Tranfer Protocol (MTP) và Mass Storage Mode (MSC). Hình như mấy điện thoại đời mới thì khônng còn hỗ trợ chế độ MSC nữa thì phải (không có máy mới nên chưa kiểm chứng). Chế độ MSC thì điện thoại như cái USB vậy và mình có thể copy/move và mở thẳng file từ điện thoại luôn. Cái này thì khỏi đề cập rồi.

View attachment 232766


Như hình bác ndu96081631 đính kèm ở trên thì nó đang ở chế độ kết nối MTP và cái này mới khó hơn chút. Cái điện thoại kết nối bây giờ là Portable Media Device chứ không phải là USB Storage thông thường nữa. Theo tôi biết thì ở chế độ kết nối MTP chỉ có thể copy file qua lại giữa PC và điện thoại thôi chứ không mở trực tiếp file từ điện thoại được. Một cái khác ở chế độ MTP là: không nhìn thấy đường dẫn file như bình thường mà chỉ là: "Computer\Xperia Z3\ SD Card". Đường dẫn này không thao tác gì được.
Ở demo đính kèm tôi dùng Shell32.dll với phương thức BrowseForFolder của nó để lấy đường dẫn gốc (root directory) của điện thoại. Chỉ có Shell32 mới thao tác được với Portable Device, FSO đọc đường dẫn không được nhé.
Đường dẫn tới điện thoại có dạng như vầy: "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\\?\usb#vid_0fce&pid_01ba#bh90bbj61e#{6ac27878-a6fa-4155-ba85-f98f491d4f33}"

View attachment 232767

Demo này tôi cũng chỉ làm được ở viêc Copy, Move file qua lại giữa PC và điện thoại thôi chứ chưa biết cách mở trực tiếp và bắt buộc điện thoại phải kết nối ở chế độ MTP.
Tôi nghĩ có thể dùng thủ thuật xử lý như: copy file từ điện thoại về folder tạm trên PC rồi mở theo cách thông thường, khi đóng thì xoá file tạm. Các bạn có cách làm nào khác thì chia sẻ, hướng dẫn nhé.
Code của bạn cho kết quả vầy:

Annotation 2020-03-05 102711.jpg


Thật ra trước khi hỏi GPE tôi cũng đã lục tung cả Google rồi, cũng "mò" được đến chỗ cái đường dẫn lằng ngoằn giống như trên. Cuối cùng thì.. vẫn chưa được như ý
Mục đích cuối cùng của tôi là: Dùng VBA để copy file, folder qua lại giữa máy tính và điện thoại android
 
có thể dùng cách ni với laptop, wifi
cài phần mềm es file explorer vào dthoai, bật chế độ chia sẻ qua wifi là có thể truy cập vào điện thoại theo ip LAN
 
có thể dùng cách ni với laptop, wifi
cài phần mềm es file explorer vào dthoai, bật chế độ chia sẻ qua wifi là có thể truy cập vào điện thoại theo ip LAN
Hình như phần mềm này bị tình nghi cài gián điệp thì phải
 
Code của bạn cho kết quả vầy:

Annotation 2020-03-05 102711.jpg



-----------------


Bác chạy sub copy to device trong khi thư mục chứa rỗng
 
Lần chỉnh sửa cuối:
-----------------


Bác chạy sub copy to device trong khi thư mục chứa rỗng
Không biết các bạn khác có ai thử code chưa? Riêng mình sửa như bài 11 thì chạy nhưng Excel nó "đứng hình" phát rồi thoát luôn
Ca này coi bộ căng
 
Không biết các bạn khác có ai thử code chưa? Riêng mình sửa như bài 11 thì chạy nhưng Excel nó "đứng hình" phát rồi thoát luôn
Ca này coi bộ căng
---------------------------------


Đúng là sau khi thực hiện thì có vấn đề, ứng dụng Rainmeter không thể chạy, vì Rainmeter thực hiện lấy thông tin hệ thống. Hành động này liên tục bị chặn.

Mặc dù máy tính không mở bất kỳ chương trình nào khác ngoài Excel.

Tốt nhất không nên truy cập trực tiếp đến đường dẫn của Android Phone.

Thường thì Google sẽ tạo API để làm điều đó, tuy nhiên quá rắc rối với VBA.

Với VBA chỉ chạy trên một luồng, nếu Hai tiến trình không đồng bộ chắc chắn sẽ dẫn đến đóng tiến trình. ở đây có đến 3 tiến trình là Shell32, Excel App và Android System

Shell32 thực hiện truy cập Android, Android chưa trả tín hiệu VBA đã tiếp tục gọi một lệnh Shell khác, vấn đề sẽ xảy ra ngay.

Hoặc Object Shell đã không được đóng hoàn toàn.
 
Không biết các bạn khác có ai thử code chưa? Riêng mình sửa như bài 11 thì chạy nhưng Excel nó "đứng hình" phát rồi thoát luôn
Ca này coi bộ căng

Trên máy tôi thì chạy bình thường bác à. Xem file gif đính kèm nhé. Win 7 - 32 bit, Office 2013.
Có thể là do một trường hơp nữa là: trên điện thoại của bác có mở chế độ USB Debuging chưa? Bác google cách kích hoạt cho từng loại máy.

 
Trên máy tôi thì chạy bình thường bác à. Xem file gif đính kèm nhé. Win 7 - 32 bit, Office 2013.
Có thể là do một trường hơp nữa là: trên điện thoại của bác có mở chế độ USB Debuging chưa? Bác google cách kích hoạt cho từng loại máy.

Đang sửa code của bạn để copy ngược lại từ điện thoại sang máy tính thì lỗi bạn à
 
Web KT
Back
Top Bottom