Итак, я попал в разные блоки, которые почти идентичны, второй диапазон отлично копирует, но первый ничего не делает. Есть идеи, что происходит? Я перепробовал все, что мог придумать. Я проверил макросы, чтобы убедиться, что они не очищают диапазон после того, как он был вставлен в рабочую книгу, макросы останавливаются перед выполнением каких-либо действий из-за пустого диапазона.
import win32com.client
import openpyxl
#1st range
wb = openpyxl.load_workbook("C:/Users/tyler/Desktop/Beef Web/Export.xlsx")
sheet = wb["Export"]
template = openpyxl.load_workbook(filename='C:/Users/tyler/Desktop/Beef Web/Wall Types Live.xlsm', read_only=False, keep_vba=True) #Add file name
temp_sheet = template["Raw Export"]
def copyRange(startCol, startRow, endCol, endRow, sheet):
rangeSelected = []
for i in range(startRow,endRow + 1,1):
rowSelected = []
for j in range(startCol,endCol+1,1):
rowSelected.append(sheet.cell(row = i, column = j).value)
rangeSelected.append(rowSelected)
return rangeSelected
def pasteRange(startCol, startRow, endCol, endRow, sheetReceiving,copiedData):
countRow = 0
for i in range(startRow,endRow+1,1):
countCol = 0
for j in range(startCol,endCol+1,1):
sheetReceiving.cell(row = i, column = j).value = copiedData[countRow][countCol]
countCol += 1
countRow += 1
def createData():
print("Processing first...")
selectedRange = copyRange(1,2,11,100000,sheet)
pastingRange = pasteRange(1,12,11,100000,temp_sheet,selectedRange)
print("Complete!")
Go = createData()
#Run macros
xl=win32com.client.Dispatch('Excel.Application')
xl.Workbooks.Open(Filename=r'C:\Users\tyler\Desktop\Beef Web\Wall Types Live.xlsm', ReadOnly=0)
xl.Application.Run('Python')
del xl
#2nd range
wb = openpyxl.load_workbook("C:/Users/tyler/Desktop/Beef Web/Wall Types Live.xlsm")
sheet = wb["E1 Final"]
template = openpyxl.load_workbook("C:/Users/tyler/Desktop/Beef Web/Export.xlsx")
temp_sheet = template["Export"]
def copyRange(startCol, startRow, endCol, endRow, sheet):
rangeSelected = []
for i in range(startRow,endRow + 1,1):
rowSelected = []
for j in range(startCol,endCol+1,1):
rowSelected.append(sheet.cell(row = i, column = j).value)
rangeSelected.append(rowSelected)
return rangeSelected
def pasteRange(startCol, startRow, endCol, endRow, sheetReceiving,copiedData):
countRow = 0
for i in range(startRow,endRow+1,1):
countCol = 0
for j in range(startCol,endCol+1,1):
sheetReceiving.cell(row = i, column = j).value = copiedData[countRow][countCol]
countCol += 1
countRow += 1
def createData():
print("Processing second...")
selectedRange = copyRange(1,1,19,100000,sheet)
pastingRange = pasteRange(1,1,19,100000,temp_sheet,selectedRange)
template.save("Finishtest.xlsx")
print("Complete!")
Go = createData()