Bulan lalu, kantor tempat saya bekerja pindah lokasi. Ada satu akibat yang baru terasa setelah semuanya selesai: alamat kantor kami berubah, dan itu berarti setiap file Excel yang memuat alamat lama harus diperbarui.
Masalahnya, berkas semacam itu tidak cuma satu dua. Admin di bagian invoice, pembelian, penjualan, dan pengiriman masing-masing punya kumpulan file master yang mereka pakai setiap hari sebagai template. Di dalam file itu alamat kantor muncul di banyak tempat sekaligus: di kop surat, di badan formulir, di catatan kaki, dan di lembar data terpisah. Mengubahnya satu per satu berarti membuka puluhan file Excel, mencari alamat lama di tiap sheet, lalu menyimpan ulang. Pekerjaan setengah hari hanya untuk mengganti teks.
Saya sempat mencari cara mengganti kata di Excel sekaligus, dan jalan pintas yang paling gampang terpikir adalah membuat macro VBA. Ternyata justru di situ masalahnya dimulai.
Kenapa kalau pakai macro VBA selalu berhenti di tengah jalan
Macro-nya jalan, tapi tidak pernah sampai selesai. Ada dua hal yang terus berulang.
Pertama, berkasnya tiba-tiba terbuka sendiri di layar. Ini bukan gangguan visual saja. Macro VBA bekerja dengan cara menyuruh Excel membuka setiap berkas satu per satu, mengganti teksnya, lalu menutupnya lagi. Jadi selama proses berjalan, Excel benar-benar membuka puluhan berkas secara berurutan. Begitu ada satu berkas yang minta konfirmasi, misalnya karena masih terkunci, karena ada tautan ke berkas lain, atau karena dianggap perlu dipulihkan, prosesnya berhenti menunggu jawaban.
Kedua, sekali error, semuanya ikut mati. Kalau satu berkas gagal diproses, macro-nya berhenti total di titik itu. Berkas yang sudah selesai memang aman, tapi sisanya belum tersentuh, dan saya tidak selalu tahu persis berhenti di berkas nomor berapa. Ujungnya saya jalankan ulang dari awal, dan seringkali menabrak masalah yang sama lagi.
Dan karena cara dari macro VBA adalah setiap berkas harus benar-benar dibuka lalu ditutup oleh Excel, prosesnya lambat. Bukan lambat beberapa detik, tapi lambat sampai saya bisa meninggalkan meja dan kembali lagi.
Pendekatan yang berbeda: berkasnya tidak dibuka sama sekali
Akhirnya saya coba membuat aplikasinya sendiri dengan Python, dan saya publikasikan di GitHub supaya siapa pun bisa ikut memakainya. Namanya Excel Mass Replacer.
Walaupun lahir dari urusan alamat kantor, aplikasi ini tidak terbatas pada alamat. Kata atau kalimat apa pun bisa diganti seperti nama perusahaan yang berubah, nomor rekening baru, nama pejabat penandatangan, atau istilah yang sudah tidak dipakai lagi.
Perbedaan intinya cuma satu, tapi justru dari situ semua masalah tadi hilang: aplikasi ini tidak menjalankan Excel sama sekali. Berkas .xlsx dan .xlsm pada dasarnya adalah paket berisi data teks yang dimampatkan, jadi isinya bisa dibaca dan ditulis langsung tanpa perlu Excel sebagai perantara. Aplikasi ini memperlakukan berkas Anda sebagai data, bukan sebagai dokumen yang harus dibuka.
Keuntungannya jadi berantai:
- Tidak ada jendela yang muncul dan menutup sendiri, karena tidak ada Excel yang dijalankan. Layar Anda tidak diambil alih selama proses berjalan.
- Tidak ada dialog yang menghentikan proses. Kotak konfirmasi yang biasanya muncul itu berasal dari Excel, dan Excel tidak ikut bermain di sini.
- Berkas yang sedang dibuka orang lain dilewati, bukan ditabrak. Saat sebuah berkas Excel dibuka, Windows membuat berkas kunci di sebelahnya yang namanya diawali tanda
~$. Aplikasi ini mengenali tanda itu dan melompatinya. - Satu berkas bermasalah tidak menjatuhkan sisanya. Kalau ada berkas yang rusak atau terproteksi, kegagalannya dicatat untuk berkas itu saja, lalu proses lanjut ke berkas berikutnya. Di akhir, Anda dapat daftar berkas mana yang gagal, jadi tidak perlu mengulang semuanya.
- Beberapa berkas dikerjakan bersamaan. Karena tidak bergantung pada satu jendela Excel, pekerjaan dibagi ke beberapa inti prosesor sekaligus. Inilah sumber utama perbedaan kecepatannya.
Cara mengganti kata di Excel sekaligus dengan aplikasi ini
Anda tidak perlu memasang Python dan tidak perlu mengetik kode satu baris pun. Ada berkas .exe yang tinggal diunduh dan dijalankan.
- Buka halaman rilis di github.com/kelvianlab/Excel-Mass-Replacer/releases.
- Unduh berkas bernama
ExcelMassReplacer-App.exe. Itu versi berjendela yang dipakai dengan klik. Berkas satunya yang bernama CommandLine ditujukan untuk yang terbiasa dengan baris perintah, jadi abaikan saja. - Klik dua kali berkasnya. Tidak ada proses instalasi, aplikasinya langsung terbuka.
- Di baris Folder, klik Browse lalu pilih folder berisi berkas Excel Anda.
- Isi kotak Find dengan kata atau kalimat lama, dan kotak Replace with dengan penggantinya. Bisa satu kata, bisa juga kalimat utuh. Dalam kasus saya: alamat lama di kotak pertama, alamat baru di kotak kedua.
- Klik Preview (safe) lebih dulu, bukan Replace now.
Windows mungkin menampilkan peringatan karena berkasnya belum dikenal luas. Itu wajar untuk aplikasi kecil yang belum ditandatangani secara komersial. Kalau Anda ragu, kode sumbernya terbuka dan bisa Anda baca sendiri di halaman GitHub yang sama.
Kalau lebih enak melihat langsung daripada membaca, ini video demonya dari mengunduh aplikasi sampai hasil akhirnya. Urutan di video sama dengan langkah di bawah: Preview dulu, baru Replace now.
Selalu Preview dulu, baru Replace now
Ini bagian yang paling ingin saya tekankan, karena di sinilah letak perbedaan antara alat yang aman dan alat yang berbahaya.
Preview (safe) tidak menyentuh berkas Anda sama sekali. Dia membaca semuanya, menghitung berapa penggantian yang akan terjadi di tiap berkas, lalu menampilkan daftarnya. Tidak ada yang disimpan. Kalau angkanya terasa aneh, misalnya jauh lebih banyak dari yang Anda kira, berarti kata yang Anda cari juga muncul di tempat yang tidak Anda maksud, dan Anda masih punya kesempatan membatalkannya.
Replace now baru benar-benar menulis. Sebelum berjalan, muncul kotak konfirmasi yang menyebutkan berapa berkas yang akan diubah, teks apa yang dicari, dan teks apa yang menggantikannya. Baca dulu, jangan langsung tekan Yes.
Ada satu lagi pengaman yang tidak terlihat. File akan otomatis membuat folder backup yang isinya file lama. Jadi jika terjadi kesalahan atau error, file lama tidak hilang.
Empat pilihan di bawah kotak isian
- Include subfolders. Ikut memproses berkas di dalam folder anak. Nyalakan kalau file master Anda terpisah per divisi dalam folder masing-masing.
- Ignore case. Membuat huruf besar dan kecil tidak berpengaruh saat mencari. Kalau dimatikan, mencari kata Jakarta tidak akan menemukan JAKARTA. Yang perlu diingat, pilihan ini hanya memengaruhi pencarian. Teks penggantinya tetap ditulis persis seperti yang Anda ketik.
- Whole cell only. Hanya mengganti kalau isi selnya sama persis dengan yang Anda cari, bukan sekadar mengandungnya. Berguna kalau kata yang Anda cari pendek dan sering muncul sebagai bagian dari kalimat lain.
- Keep a backup copy. Menyimpan salinan berkas asli sebelum ditimpa. Biarkan tetap menyala. Semua salinan dikumpulkan di satu folder bernama Excel-Mass-Replacer-Backup, dengan nama berkas dan susunan folder yang sama seperti aslinya, jadi untuk mengembalikan tinggal disalin balik. Folder itu juga otomatis dilewati kalau aplikasinya dijalankan lagi.
Yang perlu Anda perhatikan sebelum memakainya
Saya lebih suka menyebutkan batasannya di depan daripada Anda menemukannya sendiri saat sudah terlambat.
- Coba di salinan dulu, jangan langsung di folder asli. Salin beberapa berkas ke folder terpisah, jalankan di sana, dan pastikan hasilnya sesuai harapan sebelum menyentuh folder yang sebenarnya.
- Tutup berkasnya dulu. Berkas yang sedang dibuka memang dilewati dengan aman, tapi itu berarti berkas tersebut tidak ikut berubah. Pastikan tidak ada yang tertinggal.
- Yang diproses adalah teks, bukan gambar. Kalau alamat kantor Anda tertanam sebagai gambar di kop surat, atau berada di dalam header dan footer cetakan, itu tidak ikut terganti.
- Format .xls lama punya keterbatasan bawaan, jadi teks di dalam rumus pada format itu memang tidak bisa diubah. Kalau memungkinkan, simpan ulang sebagai .xlsx lebih dulu.
- Berkas .xlsm dengan macro tetap aman. Macro di dalamnya dipertahankan, tidak dihapus saat berkas disimpan ulang.
Pembaruan 4 Oktober 2026: kerusakan yang baru saya temukan sendiri
Bagian ini saya tambahkan setelah tulisan di atas terbit, karena saya menemukan aplikasi buatan saya sendiri merusak sesuatu yang tidak saya sadari waktu menulisnya.
Akhir September saya menjalankannya di 33 berkas PO asli di kantor. Beberapa hari kemudian saya baru sadar ada yang hilang. Saya bandingkan satu berkas PO dengan salinan cadangannya, dan hasilnya jelas. Di dalam, sebuah berkas .xlsx itu paket berisi 32 bagian. Setelah diproses, tersisa 21.
Yang hilang: logo perusahaan di kop surat, komentar yang ditempel di sel, dan kontrol formulir di dalam lembar kerja.
Tapi yang paling merugikan justru yang tidak kelihatan. 419 sel rumus kehilangan nilai hasil hitung yang tersimpan. Rumusnya sendiri utuh, tapi angka hasil hitungnya tidak muncul. Semua sel rumus terbaca kosong. Di kasus saya, itu berarti aplikasi rekap saya membaca nominal PO sebagai nol.
Penyebabnya ada di cara aplikasi menulis berkas. Pustaka yang saya pakai tidak menyunting berkas aslinya, melainkan membacanya lalu membangun ulang seluruhnya dari nol. Apa pun yang tidak dipahami pustaka itu, tidak ikut ditulis kembali. Jadi kalimat saya di bagian atas tentang berkas yang diperlakukan sebagai data itu baru benar-benar terwujud sekarang, bukan waktu tulisan ini pertama terbit.
Yang sudah diperbaiki
Sekarang setelah saya perbaiki, aplikasinya menyunting berkas di tempat. Hanya bagian yang memuat teks sel yang diubah, dan sisanya disalin apa adanya. Saya uji ulang di berkas PO yang sama, memakai salinan cadangannya sebagai pembanding:
| Yang diperiksa | Versi lama | Versi sekarang |
|---|---|---|
| Bagian di dalam berkas | 32 menjadi 21 | 32 tetap 32 |
| Logo di kop surat | hilang | utuh |
| Komentar di sel | hilang | utuh |
| Kontrol formulir | hilang | utuh |
| Sel rumus yang menyimpan hasil hitung | 0 dari 419 | 197 dari 419, sama dengan aslinya |
Angka 197 itu sama persis dengan berkas aslinya sebelum disentuh aplikasi versi awal.
Satu perubahan lain di versi yang sama: pilihan di dalam dropdown kini ikut terganti. Sebelumnya tidak, sehingga sebuah sel bisa berisi alamat baru sementara daftar pilihannya masih memuat alamat lama. Orang yang mengisi ulang lewat dropdown akan kembali menggunakan kalimat atau kata lama.
Kalau Anda sempat memakai versi lama
- Unduh ulang dari GitHub. Versi lama sudah diganti, jadi yang ada di halaman rilis sekarang sudah yang diperbaiki.
- Periksa berkas yang pernah diproses. Cara tercepat: buka berkasnya, lalu lihat apakah logo dan komentarnya masih ada. Kalau hilang, berarti berkas itu kena.
- Pulihkan dari salinan cadangannya di folder backup, lalu jalankan ulang dengan versi baru. Salinan itu identik dengan berkas asli, jadi pemulihannya utuh.
Saya tulis bagian ini apa adanya karena di bagian bawah saya berjanji menyebutkan batasannya di depan, dan waktu itu saya melewatkan yang paling penting. Lebih baik ketahuan dari saya sendiri daripada dari berkas kantor yang sudah telanjur rusak.