用Python的好處是,可以把一系列的操作全部通過程序完成,步驟分解下來有這些:
1、通過爬蟲獲取數據(用selenium操作,當然這個是最愚蠢且效率最低的辦法,最好還是直接后臺數據庫調?。?;
2、用VBA和PQ配合完成數據的刷新和報表的制作;
3、用SMTP完成郵件發送(但是現在有bug,可能是某些二流服務器的問題,附件總是收不到或者是變成.dat文件,比如189郵箱。。。比如outlook。。。);
4、用itchat完成微信內的表格和文字發送。
上述四個步驟中,目前已經實現了2、3、4(3和4的代碼可以參看我之前的文章)
其實用VBA就能解決報表的制作和郵件發送了,但是1和4是肯定沒辦法完成的,而Python至少還有可能性!
使用的VBA代碼和Python代碼如下(主要思路就是用宏操控PQ,用Python操控宏):
Python代碼:
import win32com.client
#運行宏
def useVBA(file_path, VBA):
xlApp = win32com.client.DispatchEx("Excel.Application")
xlApp.Visible = True
xlApp.DisplayAlerts = 0
xlBook = xlApp.Workbooks.Open(file_path,False)
xlBook.Application.Run(VBA) #宏
xlBook.Close(True)
xlApp.quit()
file_path1=r"C:UsersAdministratorDesktop報表日報!源數據(每日刷新).xlsm"
file_path2=r"C:UsersAdministratorDesktop報表日報日報模板(會用宏的可以用用).xlsm"
useVBA(file_path1, '數據刷新宏')
useVBA(file_path2, '日報宏')
數據刷新宏代碼:
Sub 數據刷新宏() ActiveWorkbook.RefreshAll End Sub
日報宏代碼:
Sub 日報宏()
'獲得昨天的標準日期(1018這種格式)
yesterday = DateAdd("d", -1, Now)
yesterday_format = Format(yesterday, "mmdd") & ".xlsx"
Path = Application.ThisWorkbook.Path
'增加一段代碼,強制必須刷新
ActiveWorkbook.UpdateLink Name:= _
Path & "!源數據(每日刷新).xlsm", Type:=xlExcelLinks
Sheets("門店維度").Select
Cells.Select
Range("A2").Activate
ActiveWorkbook.BreakLink Name:= _
Path & "!源數據(每日刷新).xlsm", Type:=xlExcelLinks
Selection.Replace What:="#N/A", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Sheets("門店通報").Select
Range("A1:K1").Select
Selection.Copy
Range("A2:K2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
Path & "【基礎經營-實體1】:“乘風破浪”百日沖刺報表" & yesterday_format, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
其中的VBA代碼需要根據不同的情況和需求更改,但是Python通過調用VBA可以實現自動化的操作并實現定時的執行腳本
來源網絡,侵權聯系刪除






