2014-08-29 6 views
0

확장명이 .dotx 인 파일을 사용해야하는 프로그램이 있습니다. 지금은 솔루션의 리소스로 사용하고 있습니다. 다음 코드를 사용하여 대신 "C : \ letterhead.dotx"를 직접 사용하여 '포함 된 리소스'파일을 사용하고 싶습니다. 나는 다음을 시도했다.VB.NET에서 .dotx 리소스를 어떻게 참조 할 수 있습니까? (Visual Studio Pro)

 Dim oWord As Word.Application 
     Dim oDoc As Word.Document 
     oWord = CreateObject("Word.Application") 
     oWord.Visible = False 
       'Works: 
       oDoc = oWord.Documents.Add("C:\Letterhead.dotx") 
       'Does not work: 
       oDoc = oWord.Documents.Add(My.Resources.Letterhead) 
       'Does not work: 
       oDoc = oWord.Documents.Add(My.Resources.ResourceManager.BaseName & "\Letterhead.dotx") 

나는 그 모두가 잘못된 값을 반환하고 내가 원하는 것을 알고 있습니다. 필자는 레터 헤드 파일을 실행하기 전에 컴퓨터의 특정 위치에이 파일을 넣으려는 사람을 강요하고 싶지 않습니다. 나는 간단한 해결책이 있다고 확신한다. 나는 그것을 모른다.

솔루션 : 그 모두를위한

(그냥 날)이 문제가되는, 당신이해야 할 모든 인 C에 포함 된 파일을 작성하는 다음과 같은 : \ -

 Try 
      File.WriteAllBytes("C:\Letterhead.dotx", My.Resources.Letterhead) 
     Catch ex As Exception 
      MessageBox.Show("Failed to write to C:\", "", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     End Try 
+0

간단한 해결책은 없습니다. 파일을 임베디드 리소스로 만들면 EXE 파일을 컴파일합니다. exe를 디 컴파일하고 임베디드 리소스를 찾은 다음 해당 파일을 열려고하는 응용 프로그램 (Word와 같은)이 없습니다. 임베디드 리소스를 실제 파일에 작성한 다음 Word에서 열기 위해 해당 파일과 위치를 사용하면 작업이 조금 더 필요합니다. 이렇게하는 방법은 완전히 다른 문제입니다. 쉬운 일은 아니지만 상자, 독창성 및 Google 외부에서 조금 생각하면됩니다. – Steve

답변

1

을 임베디드 리소스의 .NET 어셈블리에 Word 문서를 절대 저장할 수 있으며 압축을 해제하는 것은 매우 간단합니다. Word 문서를 열고 자하는 경우, 단계는 다음과 같습니다

  1. 추출은 바이트 스트림
  2. 에 포함 된 리소스는 디스크에 바이트 스트림 쓰기는 "문서"로 (아마도, 임시 폴더?) 아니면 그냥 소프트웨어 Word 문서를 포함하여보다 상당히 더 많은 작업을하다 말씀

와 디스크에서 파일을 "DOCX"파일

  • 열기 .... 임베디드 리소스를 사용하여이 작업을 수행해야하는 매우 강력한 이유가 없다면 Word 문서를 애플리케이션에 포함하기 만하면됩니다.

    자세한 내용을 보려면 this question에 대한 Aseem Gautam의 답변을 확인하십시오.

  • +0

    매력처럼 작동했습니다. 내가 C#을하고 있지 않았기 때문에 나는 그것에 대한 내 자신의 변형을 만들었지 만 그것이 내가 한 일이다! 감사 –