2011-10-07 10 views
2

다음 코드의 FieldInfo에서 약간의 문제가 발생합니다. 온라인 변환기를 사용해 보았지만 코드의이 부분에 대해서는별로 잘하지 않는 것 같습니다. 또한 MSDN에서 정보를 찾아 보려고했지만 아무 것도 찾을 수 없었습니다. 해당 부분을 변환하는 방법에 대한 정보, 즉 Array (x, y)가 C#으로 변환되는 정보를 어디서 찾을 수 있습니까?Excel VBA 코드 변환

도움을 주시면 감사하겠습니다.

다음은 내가 고심하고있는 코드의 예입니다.

Workbooks.OpenText Filename:= _ 
    "" & myZdrive & "\CI_System\Source_Files\" & myPosFile & "", Origin:= _ 
    xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _ 
    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _ 
    Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _ 
    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 1), _ 
    Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 2), Array(15 _ 
    , 1), Array(16, 1), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2)) 

    Rows("1:1").Select 
    Selection.Font.Bold = True 
    Cells.Select 
    Cells.EntireColumn.AutoFit 
+2

코드가 일반적으로하는 일을 설명 할 수 있습니까? 이 코드에서 C#의 무언가로 간단한 일대일 매핑은 없습니다. 이 코드의 알고리즘 (의사 코드)을 작성하고이를 C# 단계별로 작성하는 것이 더 나을 것입니다. – mellamokb

+0

전적으로 확신 할 수 없지만, 이는 주로 문제입니다. FieldInfo 또는 Origin 속성 중 어떤 것이 목적인지 모르기 때문에 번역하기가 어렵습니다. –

+1

프로덕션에서 코드를 실행하면 어떻게됩니까? 아니면 코드 자체를 알기에는 너무 복잡합니까? 나는 그것이 코드를 필요로하지 않고 단어로 설명 될 수있는 명백한 것을 할 것이라고 생각할 것이다. 그리고 그 설명은 다른 언어로 번역하기가 훨씬 쉬울 것이다. – mellamokb

답변

2

게시 한 VBA 코드는 Excel 내에서 매크로 기록처럼 보입니다.

이것은 "구분"옵션을 사용하여 기록 된
Workbooks.OpenText Filename:= _ 
    "C:\test.txt" _ 
    , Origin:=xlWindows, startRow:=1, DataType:=xlDelimited, TextQualifier _ 
    :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:= _ 
    False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1) 

가 첫 번째 대화 상자에서 확인할 예를 들어, 나는 일반 텍스트 파일 (.txt)을 열어 다음과 같은 기록했다. 내가 대신 "고정 폭"을 선택한 후 수동으로 입력 데이터의 열 번호를 작성하는 경우, 녹화는 다음과 같습니다 : 나는 추측이 있다면

Workbooks.OpenText Filename:= _ 
    "C:\test.txt" _ 
    , Origin:=xlWindows, startRow:=1, DataType:=xlFixedWidth, FieldInfo:= _ 
    Array(Array(0, 1), Array(2, 1), Array(10, 1), Array(18, 1), Array(30, 1), _ 
    Array(41, 1), Array(55, 1)) 

Excel text import dialog box screenshot

, 내가 말 것 누군가가 "Fixed Width"옵션을 사용하여 매크로를 기록한 다음 나중에 VBA 코드를 DataType:=xlFixedWidth에서 DataType:=xlDelimited으로 변경했습니다.

사용자의 입력 데이터가 실제로 분리되어있는 경우, 당신은 지저분한 FieldInfo 배열 정보의 전부를 생략 할 수 및 고정 너비 열을 지정해야하는 경우 Excel에서 바로 DataType:=xlDelimited

을 설정하여 자동으로 구분 기호를 처리 할 수 ​​있도록해야한다 , Bobort이 게시 된 link은 시작할 수있는 좋은 장소입니다. 이 모양을 보면 FieldInfo에는 VBA Variant 배열이 필요하며, 각 배열에는 두 개의 숫자 (열 너비와 데이터 형식)가 포함되어 있습니다.

편집 :Origin 필드는 텍스트 파일의 형식을 설명하는 데 사용되는

: 드롭 다운 메뉴에서 선택으로 매킨토시, 윈도우 (ANSI), 또는 MS-DOS (PC-8) .