2016-08-30 8 views
1

나는 내 문제에 대한 해결책을 찾기 위해 끊임없이 노력해 왔지만 도움이되는 것을 찾지 못했습니다 !! 그래서 여기에있는 누군가가 내 상황을 도울 수 있기를 바랍니다. 미리 감사드립니다!VBA에서 Windows 휴대용 장치 파일을 참조하는 데 문제가 있습니까?

그래서 인벤토리를 내부 메모리에 텍스트 파일로 저장하는 바코드 스캐너가 있습니다. Windows Mobile Device Center 6.1을 사용하여 내 PC에서 스캐너 폴더를 탐색하고 해당 텍스트 파일을 열어 내가 스캔 한 항목을 볼 수 있습니다.

나는 그 텍스트 파일을 열고, 재고의 각 라인을 읽고, 그 다음에 다른 것들을 할 수있는 엑셀 매크로를 쓰고있다. 필자는 스캐너의 텍스트 파일을 '내 문서'와 같은 일부 장소에 복사하면 성공한 것입니다. 그러나 나는 스캐너에서 텍스트 파일을 쉽게 열 수 있도록하고 싶습니다.

내 문제는 스캐너 경로를 참조하는 데 있습니다. 휴대용 장치이기 때문에 C : 등의 드라이브가 없습니다. 대신 'Computer \ MT2070-ML416147 \ Application \ Inventory \ export.txt'와 같은 경로가 표시됩니다. 그러나 입력을 위해 해당 경로를 열려고하면 "경로를 찾을 수 없습니다"라는 오류가 발생합니다.

누구든지 도움을받을 수 있다면 매우 감사 할 것입니다! 누구든지 가지고있는 코드 스 니펫이 필요한 경우 알려 주시기 바랍니다.

답변

2

Windows 파일 시스템 API를 통해 연결된 Windows CE 장치의 파일 시스템 내용에 액세스 할 수있는 방법이 없습니다. 마운트 된 볼륨이 아니기 때문입니다. WMDC는 첨부 된 장치를 나타내는 셸 폴더를 만드는 셸 네임 스페이스 처리기를 설치하기 때문에 장치가 Windows 탐색기에 나타납니다. 이는 실제 파일 시스템 디렉터리가 아니더라도 제어판 및 네트워크 환경 폴더와 동일한 방식입니다. 파일 시스템 추상화를 통해 Windows를 손으로 흔드는 것으로 생각하십시오.

  1. 사용 그것의 데이터 파일을 장치를 탐구하고 얻을 수있는 스마트 장치 연결 API :

    모든 손실되지 않습니다, 그러나, 당신은 몇 가지 옵션이 https://msdn.microsoft.com/en-us/library/bb384093.aspx -이 같은 API입니다 그 탐색기 는 장치의 셸 폴더를 보여줄 때 사용하고 있습니다.

  2. 기기에서 저장 용량 (예 : SD 카드)을 제거하고 컴퓨터의 SD 카드 리더에 연결하여 파일 시스템을 직접 탐색하고 조작 할 수 있습니다.
  3. 장치에서 공유 위치로 데이터를 전송하기 위해 장치 자체에서 실행되는 프로그램을 작성하십시오.

옵션 1은 최상의 결과를 얻지 만 C++/Win32에서이 옵션을 사용해야합니다. VBA는 시스템 프로그래밍을 할 수있는 최상의 환경이 아닙니다. C++로 작성하고 VBA를 통해 소비 할 수있는 COM 객체로 레이어를 노출 할 수 있습니다. Office의 32 비트/64 비트 문제, 아마도 샌드 박스 문제와 관련하여 문제가 발생할 수 있습니다.

옵션 3은 Windows CE의 "Windows Mobile"맛을위한 마지막 SDK가 Visual Studio 2008 용으로 발표되었으므로 다소 어려울 것입니다. VS의 최신 버전은 지원되지 않습니다. 이는 빈약 한 Compact Framework 3.5 또는 C++ 03을 WinCE API에 대해 사용한다는 것을 의미합니다. 우연히도, 나는 이것이 iPhone이 나왔을 때 Windows Mobile이 운명을 정한 이유 중 일부라고 생각합니다. 환경이 너무 소홀했고 그 뒤를 따라갈 수 없었습니다.

0

기기가 Shell.Application ActiveX를 통해 액세스 할 수 있는지 확인하십시오.

Sub Test() 

    Set objShellApp = CreateObject("Shell.Application") 
    Set objFolder = objShellApp.Namespace("::{2227a280-3aea-1069-a2de-08002b30309d}") ' Printers and Faxes 

    Debug.Print "CLSID:" & vbCrLf & objFolder.Self.Path & vbCrLf 
    Debug.Print "Folder name: " & vbCrLf & objFolder.Self.Name & vbCrLf 
    For Each objItem In objFolder.Items() 
     Debug.Print objItem.Name 
    Next 

End Sub 

나를 위해 출력은 다음과 같다 :

CLSID :
:: {2227A280-3AEA-1069- 아래 "프린터 및 팩스"위치에있는 모든 항목을 보여주는 예입니다 A2DE-08002B30309D}

폴더 이름 :
프린터

팩스
,536,913,632 10 마이크로 소프트 XPS 문서 작성자
을 PDFCreater
2013
...- P0086에 ...- S0002
...- P0087에 ...- S0002
...- P0049에 OneNote를 보내기 .. .-S0002에
...- P0068 ...- S0002
...- P0067 S0002

같은 다른 CLSID가, 시도 ...-에 :

::{20D04FE0-3AEA-1069-A2D8-08002B30309D} - Computer 
::{00f2886f-cd64-4fc9-8ec5-30ef6cdbe8c3} - Scanners and Cameras 
::{fb0c9c8a-6c50-11d1-9f1d-0000f8757fcd} - Scanners and Cameras 
::{e211b736-43fd-11d1-9efb-0000f8757fcd} - Scanners and Cameras 
::{0c15d503-d017-47ce-9016-7b3f978721cc} - Portable Device Values 
::{35786d3c-b075-49b9-88dd-029876e11c01} - Portable Devices 

예 : here, herehere을보세요. 표시된 항목 중 하나에서 장치 이름을 찾으면 해당 항목에서 파일을 검색 할 수 있습니다.