2013-12-14 8 views
0

내 하드 드라이브에서 파일을 열려고하지만 그 파일을 내 리소스로 복사하려고합니다.'1 차원 배열의 Byte'값을 'String'으로 변환 할 수 없음

Process.Start("C:\Users\jmahone\AppData\Roaming\Local Libraries\Local Documents\Class List.xlsx") 
FileCopy("C:\Users\jmahone\AppData\Roaming\Local Libraries\Local Documents\Class List.xlsx", My.Resources.Class_List) 

그리고이 오류가 점점 오전 :

Value of type '1-dimensional array of Byte' cannot be converted to 'String' 

사람이 나에게 대체 솔루션을 제공 할 수있는 경우를 누군가 다른 사람의 컴퓨터, 이것은 내가 나에게 위의 오류를주고있는, 사용하고있는 코드입니다 .

는 :-)

+0

당신은 당신의 자원에 파일을 복사 할 수 있습니다, 그들은 당신의 EXE 내부에 내장함으로써 있습니다된다 읽기 전용. –

+0

지금 볼 수있는 방법은 다른 사람의 컴퓨터에서 응용 프로그램을 사용하면 거기에있을 것이고 파일을 찾을 수 없다는 오류 메시지가 나타나지 않을 것입니다 (다른 사용자의 경우) ? –

+0

파일 경로를 하드 코드하지 마십시오. 코드는 사용자 이름이 jmahone 인 컴퓨터에서만 실행할 수 있습니다. OpenFileDialog를 사용하십시오. –

답변

0

FileCopy가 VB6의 호환성을 위해 남아있는 기능입니다 당신에게

J 마혼 감사드립니다. 소스 파일을 대상 파일에 복사하는 데 사용되었습니다.

두 개의 매개 변수가 필요합니다.
첫 번째는 소스 파일의 이름을 포함하는 문자열이고 두 번째는 대상 대상 파일의 이름이있는 다른 문자열입니다 (경로 이름 지정자 포함 또는 제외)

두 번째 매개 변수는 문자열이지만 응용 프로그램의 리소스에 저장된 바이트 블록에 대한 참조입니다. 따라서 오류가 발생합니다. 대상 파일 이름을 포함하는 문자열을 지정해야합니다. (예 : "C : \ Users \ jmahone \ documents \ MyResources \ Class List.xlsx")

XLSX 파일을 열려면 사용자 컴퓨터에 잘 알려진 디렉토리에 설치해야합니다 Environment.SpecialFolder 열거 형에 나열된 것과 같으며 대상 컴퓨터에도 존재해야하는 폴더 중 하나에서 파일을 엽니 다. 예를 들어

:

Dim dataFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonAppData) 
Dim myAppDataFolder = Path.Combine(dataFolder, "MyAppData") 
Directory.CreateDirectory(myAppDataFolder) 
Dim myExcelFile = Path.Combine(myAppDataFolder, "Class List.XLSX") 

Process.Start(myExcelFile) 

가 문서를 참조하십시오 :

Directory.CreateDirectory
Path class
Environment.SpecialFolder

+0

OK, 리소스에 복사하고 소스에서 열어 볼 수있는 방법이 있습니까? 다른 사람의 컴퓨터에서 응용 프로그램을 사용하면 파일을 찾을 수 없다는 오류가 표시됩니다. 다른 방법이 있습니까? –

+0

응용 프로그램과 함께 XLSX 파일을 배포 하시겠습니까? 그리고 사용자가 수정 한 다음 앱 리소스에 다시 삽입 할 수있게 하시겠습니까? – Steve

+0

아니요, 읽기 전용으로 엽니 다. –

관련 문제