Community
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 모델링과 로직 파일을 업로드 하였으니 참고 바랍니다.
도움주실수 있을까요??
Solved! Go to Solution.
Solved by yd_kwon. Go to Solution.
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 파일
안녕하세요~ @jthzzang1KQJ5G
혹시 오른쪽 상단의 편지 모양 (메시지 기능)을 확인하셨나요?
1st Meetup초대장에 응답이 없어 댓글 남깁니다.
Autodesk Community
Can't find what you're looking for? Ask the community or share your knowledge.