Alasan untuk catatan itu adalah artikel tentang Habré, di mana penulis menggambarkan bagaimana ia memecahkan dengan Python tugas mengumpulkan dan menganalisis metadata dari file Excel .
Catatan ini mengungkapkan secara lebih rinci tesis terkenal: Untuk tugas tertentu, Anda perlu memilih alat yang paling cocok untuk otomatisasi kantor.
VBA dan Python
VBA (Visual Basic for Applications) , de facto, bahasa paling populer untuk mengotomatisasi Microsoft Office. Tersedia dari kotak, selain Excel, ini berfungsi di PowerPoint, Outlook, Access, Project dan aplikasi lainnya.
Jika Anda mengajukan pertanyaan: “Bahasa pemrograman mana yang harus dipilih terlebih dahulu”, maka di suatu tempat dalam 90% dari semua kasus Python akan ditawarkan. Dalam praktiknya, bisa ada bahasa lain, tetapi, berdasarkan popularitas bahasa dan pengalaman saya, saya akan membandingkannya.
Secara umum, Anda dapat menggambarkan situasi melalui jadwal yang serupa:

Tidak akan ada perbandingan terperinci, pertimbangkan fitur pembunuh utama dalam situasi di mana seorang programmer junior / pegawai kantor ingin mengotomatiskan sesuatu yang berkaitan dengan MS Office, dan ia memiliki kesempatan untuk memilih antara bahasa.
Jika karena berbagai alasan tidak ada pilihan, maka tidak ada yang bisa dibandingkan.
Mendukung VBA

- Kerja luar biasa dengan model objek Excel dan aplikasi MS Office lainnya . Menulis kode VBA untuk sebagian besar operasi internal adalah sepele. Dalam Python, dibandingkan dengan VBA, dukungan untuk model objek Office sangat lemah.
- Dukungan untuk berbagai format MS Office. Masalah terbesar untuk bahasa eksternal adalah bekerja dengan berbagai format file MS Office. Sebagai contoh, file xls, xlsx, xlsm mungkin memerlukan pustaka yang berbeda, karena masing-masing hanya berfungsi dengan baik dengan format file sendiri. Untuk VBA, ini semua merupakan "file Excel" yang berfungsi sama baiknya secara umum.
- Bekerja dengan MS Exchange. Jika perlu untuk menyediakan pekerjaan dengan email perusahaan / kalender di Exchange, maka tidak setiap bahasa memiliki perpustakaan normal untuk bekerja dengan protokol Exchange. Dalam VBA, ini diselesaikan relatif sederhana melalui penggunaan model objek MS Outlook di makro.
- Instalasi dan distribusi yang mudah. Tidak perlu menginstal apa pun ke kantor yang sudah diinstal. Agar seorang kolega menggunakan program ini, cukup untuk memindahkannya file dengan makro. Sangat mudah untuk menambahkan add-in yang memungkinkan Anda untuk "menginstal" model makro di latar belakang kantor.
- Interaktivitas dalam aplikasi MS Office. Di dalam program-program kantor, Anda bisa meletakkan tombol peluncuran makro, dan (sedikit lebih rumit) membuat UI yang terpisah. Ini juga termasuk menulis rumus Anda di Excel dan fakta bahwa makro dapat memengaruhi objek di dalam dokumen Office secara real time.
- Rekaman Makro. Alat praktis yang memungkinkan Anda untuk merekam tindakan seseorang dalam kode yang sudah jadi, untuk penggunaan pengeditan selanjutnya.
Mendukung Python (dan bahasa pemrograman eksternal lainnya)

- Sintaks yang bagus dan gula sintaksis. Singkatnya, VBA tidak ekspresif dan nyaman. Ini masalah selera pribadi, tetapi Python jauh lebih nyaman bagi saya.
- Ekosistem perpustakaan yang kaya. Banyak pilihan perpustakaan siap pakai untuk bekerja dengan dunia luar. Mencoba membuat program di VBA yang berinteraksi dengan beberapa API eksternal masih menyusahkan. Sangat menarik bahwa hanya untuk bekerja dengan file Office perpustakaan dari Python yang sama - terus terang "di C".
- Alat pengembangan yang bagus. Anda dapat memilih dari banyak pilihan program yang memfasilitasi proses pengembangan. Editor VBA standar dari Office menawarkan fungsionalitas yang sangat buruk dan, dibandingkan dengan alternatif dari dunia Python, terus terang tidak nyaman. Menulis kode VBA di editor eksternal, dan kemudian menyalinnya di dalam kantor untuk debugging, juga tidak nyaman.
- Kecepatan kerja Saya tidak memeriksa kecepatan pekerjaan single-threaded, tapi saya berasumsi bahwa dalam kasus pekerjaan single-threaded, Python akan memiliki keuntungan. Bagaimanapun, pemrosesan multithreaded data / file cukup mudah, yang memungkinkan Anda untuk berbicara pada kecepatan yang lebih tinggi.
Kasing

Berikut ini adalah tugas khusus yang saya selesaikan atau otomatis, dan ketika saya perlu memilih tumpukan: VBA atau Python. Untuk setiap tugas, tumpukan yang dipilih ditunjukkan dan penjelasan diberikan alasannya:
- Tugas: Program untuk memeriksa semua file Excel di direktori untuk sheet tersembunyi
- Pilihan saya: VBA . Alasan: kesederhanaan bekerja dengan berbagai format file Excel dan kurangnya interaksi eksternal.
- Tujuan: Layanan yang seharusnya memungkinkan pengguna untuk mengkonversi file PowerPoint ke PDF dari perangkat seluler untuk dilihat
- Layanan ini diimplementasikan sebagai bot email, ke alamat di mana pengguna dapat mengirim file Office, dan respons dengan file PDF dikirim kepada pengguna melalui surat.
- Pilihan saya: VBA + logika Python untuk pemantauan
- Pertama, fungsi internal dijamin untuk mempertahankan PDF yang otentik untuk file PowerPoint (perpustakaan eksternal melakukan buruk dengan rendering PowerPoint).
- Kedua, penerapan bot email sebagai makro di MS Outlook memecahkan masalah bekerja dengan email Exchange perusahaan. Jadi, dalam Python tidak ada perpustakaan normal untuk bekerja dengan MS Exchange.
- Python digunakan untuk mengatur pemantauan layanan dan pemberitahuan kemungkinan masalah.
- Tugas: Program untuk menggabungkan file Powerpoint dengan "interlinear" (teks pengeras suara) ke dalam file cetak
- Pilihan saya: VBA . Masalahnya dipecahkan dengan mengonversi dua file ke PDF dan menggabungkannya dengan Riffle Shuffle. Karena kualitas konversi ke PDF penting, fungsi kantor bawaan digunakan untuk mengekspor ke PDF.
- Tugas: Diberikan database perusahaan industri dalam bentuk kartu, pisahkan file html yang perlu disaring dan digabungkan menjadi 1 file Excel untuk menghitung sejumlah indikator.
- Pilihan saya: Python .
- Untuk menarik data dari kartu html, perpustakaan untuk parsing html BeautifulSoup berguna.
- Program ini membuat file Excel, jadi kita sendiri dapat memutuskan analitik mana yang akan dihitung di dalamnya, dan yang lainnya pada tahap persiapan data dengan Python.
- Tugas: Terjemahkan semua teks dalam presentasi PowerPoint ke bahasa lain oleh penerjemah mesin
- Pilihan saya: VBA . Penting untuk bekerja dengan hati-hati dengan teks di objek internal file PowerPoint. Yandex API digunakan untuk terjemahan, karena gratis untuk volume kecil dan mudah disambungkan. Misalnya, saya tidak bisa membuat API penerjemah Bing bekerja di VBA, karena di sana saya membutuhkan OAuth agar masalah saya dapat berfungsi. Jika saya harus bekerja dengan Bing, maka, mungkin, saya akan melakukan perantara layanan dengan Python.
- Tugas: Untuk ticker pertukaran yang diberikan, ambil data dari API dengan indikator keuangan (API mengeluarkan file CSV yang dihasilkan atas permintaan) dan baca sejumlah tolok ukur untuk analisis berdasarkan basisnya
- Pilihan saya: Python . Meskipun API sederhana (tidak memerlukan penandatanganan permintaan atau otorisasi) dan mengeluarkan data ke CSV, Python dipilih, karena tidak ada alasan untuk memilih VBA, dan lebih mudah untuk menulis dengan Python.
- Tugas: Mempertahankan basis instruksi, mengirimkan pemberitahuan kepada pemain, menghasilkan laporan untuk dicetak
- Di sini saya memilih untuk waktu yang sangat lama, karena ada banyak alternatif:
- Sistem pemesanan siap pakai pihak ketiga
- Basis data dengan beberapa jenis handler
- Akses
- Excel
- Pilihan saya: VBA
- Pertama, Excel sendiri adalah UI siap pakai untuk pekerjaan.
- Kedua, VBA memecahkan masalah bekerja dengan Exchange perusahaan melalui koneksi MS Outlook.
- Ketiga, keputusan ini dibuat dengan memperhatikan kolega, yang Excel lebih jelas dari apa pun yang sama sekali baru
Kesimpulan
Saya harap seseorang akan berguna dan akan menghemat waktu dalam memilih tumpukan untuk menyelesaikan masalah mereka.