2016-06-03 3 views
0

나는 C#에서 워드 파일에 텍스트를 붙여하려고하고 나는 유래 포스트에서이 코드를 시도 :암시 적으로 "string"을 "object"오류로 변환 할 수 있습니까?

Microsoft.Office.Interop.Word.Application wordApp = null; 
wordApp = new Microsoft.Office.Interop.Word.Application(); 
wordApp.Visible = true; 
var filePath = @"H:\5555\Documents\Doc1.doc"; 
Document wordDoc = wordApp.Documents.Open(filePath); 
Bookmark bkm = wordDoc.Bookmarks["name_field"]; 
Microsoft.Office.Interop.Word.Range rng = bkm.Range; 
rng.Text = "Adams Laura"; //Get value from any where 

그래서 내가이 오류 : 암시 "문자열을"변환 할 수 없습니다를에 "개체"I를 이 줄을 실행하십시오.

"Document wordDoc = wordApp.Documents.Open(filePath);"

그러나 어떤 종류의 객체를 사용해야하는지 잘 모릅니다.

+1

명시 적으로 변환 해보십시오. (object) filePath – Alex

+0

다음은 유용한 정보입니다. 나는 @Alex가 이미 당신의 질문에 대답했다고 생각하지만 이것은 또한 유용 할 수있다 : http://stackoverflow.com/questions/2690623/what-is-the-dynamic-type-in-c-sharp-4-0-used- for/2690837 # 2690837 - Lasse V. Karlsen의 답변을 확인하십시오. – sr28

+0

문자열이 개체이므로 오류를 알 수 없습니다. –

답변

1

Word의 COM 세계는 "순수한"C#이 "좋아"하지 않거나 이해할 수 있습니다. 이 중 하나는 선택적 매개 변수입니다. C#은 메서드가 다른 숫자 및/또는 매개 변수 조합을 받아 들일 수있을 때 개념 "오버로드"를 사용합니다. 고전적인 VB/COM 세계는 선택적 매개 변수를 가진 단일 메서드를 가지고 있습니다. 따라서 PIA는이를 "참조로"전달해야하는 데이터 형식 object으로 C#에 제공합니다. 매개 변수를 사용하지 않으면 ref Type.Missing이 전달됩니다. 고전 VB를 수용 할 수의 C#의

최신 버전/COM은 조금 더 특이 사항,하지만 당신이 뭔가에 실행할 때 시도 설명 : 다른 오류가 발생하는 경우

object oFilePath = filePath; 
Document wordDoc = wordApp.Documents.Open(ref oFilePath); 

Open 방법에 대한 인텔리 볼을 프로그래밍중인 Word 버전의 경우 Intellisense "팁"에 나열된 나머지 매개 변수에 ref Type.Missing을 추가하십시오.

관련 문제