Я новичок в программировании и хочу поблагодарить вас всех за проделанную здесь огромную работу и за то, что поделились ею с нами. Большинство дней я копирую код и редактирую его, чтобы все работало на меня. У меня есть эта повторяющаяся задача: загрузка вложений электронной почты (файлы xlsx), поиск определенного c слова в имени файла, добавление всех из них, соответствующих критериям, в один, удаление 1-й строки и столбца, добавление 5-го и 7-го -9-ые столбцы, а затем перенести все это внизу основного файла, чтобы можно было обновлять сводные диаграммы.
Я написал (скопировал / отредактировал) строки кодов, которые выполняют большую часть этого, за исключением последней части , Я не ищу исправления, а как искать это? что я должен читать, чтобы научиться писать / редактировать листы?
Я знаю, что VBA в Python не подходит для этого, однако я просто пытаюсь автоматизировать эту скучную задачу.
спасибо заранее.
Добавление листа 1 из рабочей книги X к концу листа 7 рабочей книги Y, приведенный ниже код копирует Sheet1 после Sheet7, я везде гуглил, думаю, я просто не знаю, что я ищу Я попробовал .Add
и потерпел неудачу.
ниже есть строка, которую я нашел здесь, спасибо, кто бы вы ни были.
from win32com.client import Dispatch
path1 = 'C:\\Users\\user.name\\Desktop\\Outlook Export\\WorkbookX.xlsx'
path2 = 'C:\\Users\\user.name\\Desktop\\Outlook Export\\WorkbookY.xlsx'
xl = Dispatch("Excel.Application")
xl.Visible = False # You can remove this line if you don't want the Excel application to be visible
wb1 = xl.Workbooks.Open(Filename=path1)
wb2 = xl.Workbooks.Open(Filename=path2)
ws1 = wb1.Worksheets(1)
ws1.Copy(Before=wb2.Worksheets(7))
wb2.Close(SaveChanges=True)
xl.Quit()
Я только что узнал, что на самом деле это не так возможно достичь этого.
однако,
я нашел сценарий VBA, который частично справляется с задачей. он добавляет множество пустых строк в конец таблицы и расширяет таблицу на 38 тыс. строк, что не идеально, я могу обойти это.
сценарий VBA выглядит следующим образом:
Sub combine_Sheets()
'Declare variables
Dim sht1 As Worksheet
Dim sht2 As Worksheet
Dim lastRow As Long
'Set variables
Set sht1 = Sheets("MANUAL ARRIVAL DATA")
Set sht2 = Sheets("Sheet1")
'Copy Sheet 2 to Sheet 1
'Find Last row on Sheet 1
lastRow = Cells(sht1.Rows.Count, "A").End(xlUp).Row
'Copy Sheet 2 data to bottom of Sheet 1
sht2.Range("A1:AK" & Cells(ActiveSheet.Rows.Count, "D").End(xlUp).Row).Copy _
Destination:=sht1.Range("D" & lastRow + 1)
sht1.Activate
End Sub
second Sub удаляет все ненужные пустые строки
Sub deleteBlankRows()
On Error Resume Next
Columns("D").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
в надежде, что это кому-нибудь поможет