2015-01-05 4 views
1

필자는 열 A의 값을 참조하는 파일 D 열에서 Excel의 일련의 텍스트 파일을 포함하는 vba 매크로를 사용하여 열을 반복합니다. 이 파일을 파이썬으로 변환 할 때 파일이 어디에 포함되어 있는지 지정하여 벽돌 벽에 부딪 히고 있습니다. vba 매크로는 각 파일을 관련 행에 포함시키는 반면, 현재 양식에서는 Python 스크립트가 모든 파일을 동일한 셀 (B2)에 포함합니다. 저는 다양한 전략을 시도해 왔습니다. 대부분 Offset을 다른 장소에 배치하고 성공하지 못했고 온라인에서 예제를 찾을 수 없었습니다. VBA :VBA에서 파이썬으로의 변환

Sub Insert_Text_File() 

    Dim ol As OLEObject 
    Dim file As String 
    Dim cell As Range 

    ' loop each cell in column A 
    For Each cell In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) 
     If Not IsEmpty(cell) Then 
      file = cell.Value & ".txt" 
      ' create and insert a new OleObject based on the path 
      ' ThisWorkbook.path & "\" & cell & file will make the filename 
      Set ol = Worksheets("Inventory").OLEObjects.Add(Filename:=ThisWorkbook.path & "\" & file, Link:=False, DisplayAsIcon:=True, Height:=10) 
      ' align the OleObject with Column D - (0 rows, 3 columns to the right from column A) 
      ol.Top = cell.Offset(0, 3).Top 
      ol.Left = cell.Offset(0, 3).Left 
     End If 
    Next 
End Sub 

파이썬 : 어떤 제안이 많이 감사합니다

folder = 'C:\Users\ioe\\' #raw_input("Please specify Show Files directory: ") 
inventory_csv = 'inventory.csv' 
book = Workbook() 
sheet = book.add_sheet('Inventory',cell_overwrite_ok=True) 

inventory_data_to_csvfile(folder) 

csv_to_xls(inventory_csv) 

os.remove('inventory.csv') 

xl = win32.gencache.EnsureDispatch('Excel.Application') 
xl.Visible = 1 
wb = xl.Workbooks.Open("C:\Users\\robertph\Share\inventory\INVENTORY.xls") 

column = wb.ActiveSheet.Range("A2:A200") 
for cell in column: 
    if cell.Value is not None: 
     f = 'C:\Users\\robertph\Share\ioe\\' + str(cell.Value) + '.txt' 
     ol = wb.ActiveSheet.OLEObjects().Add(Filename=f, Link=False) 
     #ol.Offset(0, 3) 
     #cell.GetOffset(0, 3).Value = ol 
     #ol_offset = ol.Cells(cell).GetOffset(0, 3) 
     #ol.Top = cell.Offset(0, 3) 
     #ol.Left = cell.Offset(0, 3) 

다음은 코드 조각입니다. 감사.

답변

0

다른 사람이 같은 위치에있는 것처럼 보이게하십시오. 나는 그것을 마침내 해결했다 : (휴!)

range = wb.ActiveSheet.Range("A2:A200") 
for cell in range: 
    if cell.Value is not None: 
     f = 'C:\Users\\robertph\Share\ioe\\' + str(cell.Value) + '.txt' 
     ol = wb.ActiveSheet.OLEObjects().Add(Filename=f, Link=False) 
     ol.Top = cell.GetOffset(0, 3).Top 
     ol.Left = cell.GetOffset(0, 3).Left