Community
인벤터 Inventor - 한국어
프로그램에 관한 사용 방법, 기술, 정보 등을 검색하고, 질문을 통해 서로 도움을 주고 받을 수 있습니다.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Excel 의 행 영역을 지정하여 iLogic 구현 하려고 합니다. 도움 부탁드립니다.

4 REPLIES 4
SOLVED
Reply
Message 1 of 5
jthzzang1KQJ5G
300 Views, 4 Replies

Excel 의 행 영역을 지정하여 iLogic 구현 하려고 합니다. 도움 부탁드립니다.

Excel. NamedRangeValue 를 사용하여 워크시트 영역까지는 지정을 했습니다.

워크시트 영역의 값을 순차적으로 읽어 가면서 기존품명을 변경품명으로 변경하려고 합니다.

 

GoExcel.Open("TEST.xlsx", "sheet1")

RangeArray = GoExcel.NamedRangeValue("기존품명")

RangeArray = GoExcel.NamedRangeValue("변경품명")

Dim oList As ArrayList

oList = NewArrayList

Dim oRowsCout

Dim NewTN_1 As String = GoExcel.CellValue("TEST.xlsx", "sheet1", "F1")
' Get current location of where you want the search area to be.

Dim ExportPath As String = "C:\"

' Define folder browse dialog

Dim Dialog = New FolderBrowserDialog()

' Set options for folder browser dialog

Dialog.SelectedPath = ExportPath

Dialog.ShowNewFolderButton = True

Dialog.Description = "Choose Folder for Export..."

 
' Show dialog box

If DialogResult.OK = Dialog.ShowDialog() Then

        ' User clicked 'ok' on dialog box - capture the export path

        ExportPath = Dialog.SelectedPath & "\"

Else

        ' User clicked 'cancel' on dialog box - exit

        Return

End If

 
Dim Path As String = ExportPath

MessageBox.Show(Path, "Directory path")

 
InvDoc = ThisDoc.Document

Dim refDocs As DocumentsEnumerator = InvDoc.AllReferencedDocuments

Dim refDoc As Document


For Each refDoc In refDocs

    'MessageBox.Show(refDoc.DisplayName)

    If refDoc.DisplayName.EndsWith(OldPN_1 & ".ipt")= True Then

        NewFileName = NewPN_1 & ".ipt"

        refDoc.SaveAs(Path & NewFileName, False)
Return

    End If


Next
 

ThisDoc.Document.SaveAs(Path & NewTN_1 & ".iam", False)

 

iLogicVb.UpdateWhenDone = True

Samle 모델링과 로직 파일을 업로드 하였으니 참고 바랍니다.

 

도움주실수 있을까요?? 

 

Tags (2)
4 REPLIES 4
Message 2 of 5
yd_kwon
in reply to: jthzzang1KQJ5G

RangeArray = GoExcel.NamedRangeValue("기존품명")

부분을 잘 사용 못 해서 전 다르게 지정했습니다.

영문 커뮤니티를 참고해서 수정했습니다.

 

메인 참고: GoExcel 구문 수정 관련 링크1 

서브 참고: Colum 문자 변경 관련 링크2

 

 

사용 iLogic

Imports System.Windows.Forms

' Excel 파일 열기 및 데이터 처리
Sub Main()
    ' Excel 파일 열기
    GoExcel.Open("Test.xlsx", "Sheet1")

    ' 기존품명과 변경품명을 저장할 List 선언
    Dim i As Integer = 2
    Dim oldNameList, newNameList As New List(Of String)

    ' 기존품명 열의 Excel 열 이름 가져오기
    oldCol = GetExcelColumnName(GoExcel.FindColumn("기존품명"))
    ' 변경품명 열의 Excel 열 이름 가져오기
    newCol = Chr(Asc(oldCol) + 1)

    ' Excel에서 데이터 읽어오기
    While GoExcel.CellValue("Test.xlsx", "Sheet1", oldCol & i) > ""
        ' 기존품명과 변경품명 데이터를 List에 추가
        oldNameList.Add(GoExcel.CellValue("Test.xlsx", "Sheet1", oldCol & i))
        newNameList.Add(GoExcel.CellValue("Test.xlsx", "Sheet1", newCol & i))
        i += 1
    End While

    ' 사용자에게 폴더 선택 받기
    Dim ExportPath As String = ""

    Using Dialog As New FolderBrowserDialog()
        Dialog.SelectedPath = "C:\" ' 기본 경로 설정
        Dialog.ShowNewFolderButton = True
        Dialog.Description = "Choose Folder for Export..."

        ' 폴더 선택 대화상자 표시
        If DialogResult.OK = Dialog.ShowDialog() Then
            ExportPath = Dialog.SelectedPath & "\"
        Else
            Return ' 취소되었을 때 처리
        End If
    End Using

    ' Inventor 문서 및 참조 문서 가져오기
    Dim InvDoc As Document = ThisDoc.Document
    Dim refDocs As DocumentsEnumerator = InvDoc.AllReferencedDocuments

    ' 각 부품의 이름을 변경하여 저장
    For Each refDoc As Document In refDocs
        For j As Integer = 0 To oldNameList.Count - 1
            ' 부품 이름 확인 및 변경 후 저장
            If refDoc.DisplayName.EndsWith(oldNameList(j) & ".ipt") Then
                refDoc.SaveAs(ExportPath & newNameList(j) & ".ipt", False)
            End If
        Next
    Next

    ' Excel 파일 닫기
    GoExcel.Close()

    ' 처리된 파일 수를 메시지 박스로 표시
    MessageBox.Show(oldNameList.Count.ToString + " file(s) Complete!")
End Sub

' 열 번호를 Excel 열 이름으로 변환하는 함수
Function GetExcelColumnName(columnNumber As Integer) As String
    Dim dividend As Integer = columnNumber
    Dim columnName As String = String.Empty
    Dim modulo As Integer

    While dividend > 0
        modulo = (dividend - 1) Mod 26
        columnName = Convert.ToChar(65 + modulo).ToString() & columnName
        dividend = CInt((dividend - modulo) / 26)
    End While

    Return columnName
End Function

 

 사용 Excel 파일

Test 엑셀 파일Test 엑셀 파일

CAM-Fusion 360/Inventor
CAD-Fusion 360/Inventor
Before PowerMILL
Tags (1)
Message 3 of 5
jthzzang1KQJ5G
in reply to: yd_kwon

아 감사합니다. 너무나 큰 도움이 되었습니다.
Message 4 of 5
daeun_jun
in reply to: jthzzang1KQJ5G

안녕하세요~ @jthzzang1KQJ5G 
혹시 오른쪽 상단의 편지 모양 (메시지 기능)을 확인하셨나요?
1st Meetup초대장에 응답이 없어 댓글 남깁니다.

Autodesk Community


Product Specialist, Daeun Jun
Message 5 of 5
jthzzang1KQJ5G
in reply to: daeun_jun

메세지를 봤는데 그냥 지나가 버렸네요. 작성해서 제출했습니다. 감사합니다.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums