문제

나사 부과 될 것이라고 생각한 유용한 운동에도 몇 가지 변환을의 유서 깊은 VB 스크립트를 자동화하는 Excel(2007,이 예에서).많은 것을 번역하기 매우 쉽게,그러나 나는 거대한 양의 문제는 선택의 범위-기능 또는 설정을 나가는 회원을 찾을 수 없습니다.

여기는(잘라)예에서 실행 booish:

def CreateInstance(progid):
    type = System.Type.GetTypeFromProgID(progid)    
    return type()   

xl as duck = CreateInstance("Excel.Application")
xl.Visible = true
xl.Workbooks.Add

sht as duck = xl.ActiveSheet
#Next line throws exception
rng as duck = sht.Range("A1")

어떤 일이 잘 작동,설정과 같은 이름 속의 장래에,그러나 내가 어떻게 작동 범위가?있는 특별한 방법 VB 을 숨기는데 필요한 전화,그리고 만약 그렇다면 어떻게 내가 찾는 것에 대해 그 밖?

환호

Lenny.

도움이 되었습니까?

해결책

범위는 실제로 제공,그리고 다소 특성에서 작동하는 것으로 인덱을 의미하는,그것은 배열하거나 사전에 같은 의미입니다.대부분의 언어에서,즉,당신은에 액세스 sht.Range["A1"].는 구문 설탕,그리고 정말 액세스하는 다른 방법,즉:

sht.get_Range("A1",System.Reflection.Missing.Method)

내가 사용하려고 시도우 루비 및 IronRuby 반복하는 코드를 사용하여 문법 설 스타일이 명시적인 방법을 호출합니다.에 IronRuby,나는 그것을 얻을 수 있습을 완벽하게 작동하지만, 만에서 32 비트 통역.에서 정규의 루비,는 32 비트 응용 프로그램 내 구성에,그것도 괜찮습니다.에서 64 비트 인터프리터 범위 속성이 해결되지 않습니다.

그래서 나를 지도하는 것으로 의심되는 부호 실행되는 64 비트 모드에서는 interop 실패했기 때문입니다.불행하게도,동일한 문제를 재현한 후에 설정 내역 Boo 바이너리에서 실행되는 32 비트 모드를 사용하여 CORFLAGS.exe 다,그래서 나는 생각하지 않는 진짜 문제입니다.

무엇을 했는지,있었을 명시적으로 가져올 Excel Dotnet Interop 라이브러리뿐만 아니라 Interop 서비스는 네임스페이스,그래서 다음과 같:

import Microsoft.Office.Interop.Excel
import System.Runtime.InteropServices

xl_type=typeof(Application).GetCustomAttributes(typeof(CoClassAttribute),true)[0].CoClass
xl=xl_type()
xl.Visible=true
xl.Workbooks.Add

다음:

xl.Range["A1","A2"].Value=12
xl.Range["A1",System.Type.Missing].Value="Alpha"
(xl.ActiveSheet as Worksheet).Range["A1","A2"].Value2='Whatever'

이 모든 작업,그러나 그들은 기본적으로 필요 당신을 포기하고"Scriptiness"당신이 사용하는에서 늦은-바인딩(는 무엇이 당신의 오리 입력하고).

에서 하나의 차이 VB/VBScript 는 진정한 대부분의 언어(이외의 다른 C#4.0)는,일반적으로,선택적인 매개변수하지 않은 투명하게 처리하며,그래서 당신은에서 볼 필요가 API 더 신중하게 다루는 방법을 지원하는 선택적인 매개변수(으로 대체 시스템입니다.유형입니다.누락 또는 시스템입니다.반사 상당액)이다.당신을 찾아 이를 통해 Excel interop 문서할 수는 있지만,아마도 사용을 반영하여 매개 변수를 식별할 선택사항으로 표시되는 경우보다 더 쉽게 찾고 있습니다.

기 때문에 가능:무료 초고속 유선 인터 합리적인 솔루션에 대한 바인딩하여 이러한 개체에 의심이 없는 기능(또는 버그)COM 시나리오에 있습니다.

편집을 추가합니다: 샘 Ng 에 대한 기록 색인 제공원에서는 C#4.0;문제를 설명하는 자신의 게시물에도 적용될 가능성이 부습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top