> Tôi chỉ muốn tạo macro tự động bằng python. Tôi googled và tìm thấy
> win32com là một gói được sử dụng để làm điều đó, nhưng nó dành cho windows. Tôi đang
> đang sử dụng Linux và gói pyexcelerator để viết trong excel, có
> khả năng nào để chúng tôi có thể tự động hóa một MACRO bằng python không, có được không
> specific package kind of stuff used for it.
>
Dưới đây là một số cách hiểu có thể.
[1] Bạn muốn tạo lại hiệu ứng của một chuỗi thao tác trong
ứng dụng Excel trên sổ làm việc Excel hoặc bộ sổ làm việc Excel. Các
gói xlrd, xlwt và xlutils chứa nhiều cách để thực hiện việc này,
tùy thuộc vào những thao tác đó là gì.
[2] Bạn muốn chạy một số mã VBA có sẵn trong sổ làm việc Excel
từ python. Bạn sẽ cần sử dụng COM qua win32com.
[3] Bạn muốn gọi trình thông dịch python từ bên trong Excel,
có thể để thực hiện chuỗi thao tác từ [1]. Có thể -
có một ví dụ tại
http. //Blog. gobansaor. com/2010/02/07/xlite-beta-updated-adds-python-as-an-excel-scripting-language/
Cái nào trong số này nghe gần nhất với những gì bạn muốn làm?
> Nếu không thể tự động hóa macro, có cách nào để tạo hộp thả xuống
> trong excel không. Nếu tôi có thể làm điều này, tôi có thể khiến người xem
> excel của tôi cảm thấy như thể tôi đã thêm một macro.
>
thông qua Xác thực dữ liệu, Hộp tổ hợp biểu mẫu MS, Hộp tổ hợp Activex.
thích hợp nhất tùy thuộc vào việc bạn muốn hộp thả xuống thực hiện.
Trong thời đại Dữ liệu này, python đã trở thành ngôn ngữ được nhiều nhà phát triển trên toàn cầu áp dụng rộng rãi nhất. Điều này có nghĩa là có rất nhiều thư viện tiềm năng đang chờ được sử dụng
Mặc dù python gần đây đã đạt được đặc điểm là lựa chọn đầu tiên để phân tích dữ liệu và có rất nhiều ứng dụng trải dài từ mức sử dụng thấp đến nặng cho nhiều tác vụ;
Hãy tưởng tượng nếu chúng ta có thể sử dụng các thư viện nguồn mở có sẵn trong python để tự động hóa quy trình công việc của mình trong Excel; . Đứng trên vai của cộng đồng python nguồn mở khổng lồ có hàng nghìn gói cho nhiều trường hợp sử dụng khác nhau, chúng tôi có thể sử dụng chức năng của chúng trong Excel
Tôi có một yêu cầu như vậy mà tôi muốn thảo luận bên dưới và với sự trợ giúp của
xlwings addin install
3, tôi đã có thể tích hợp giao diện người dùng Excel của mình với chương trình phụ trợ python thông qua VBA và tự động hóa một quy trình thủ công cồng kềnh chỉ bằng một nút bấmDo đó, bài đăng này chủ yếu nhằm mục đích chỉ cho bạn cách bạn có thể tận dụng gói python mạnh mẽ này có tên là
xlwings addin install
3 để giao tiếp với Excel thông qua VBA và trong quá trình này, tự động hóa một số tác vụ. Có thể có cách giải quyết VBA cho mã python nhưng đối với trường hợp sử dụng cụ thể của tôi, tôi không thể bỏ qua nhu cầu về python vì VBA không thể thực hiện một số tác vụ mà một số thư viện python như xlwings addin install
5 có khả năng thực hiệnVấn đềTôi duy trì một trang tính mà tôi sử dụng để theo dõi các lượt chia sẻ của mình và cách chúng hoạt động vào cuối ngày. Đối với điều này, tôi cần lấy giá đóng cửa cho mỗi cổ phiếu mà tôi có trong danh mục đầu tư của mình và nhập thủ công giá đó mỗi ngày một cách siêng năng. Bất kỳ quy trình thủ công nào cũng dễ xảy ra lỗi và tôi đã từng mắc phải lỗi này trước đây khi tôi mắc sai lầm khi cập nhật giá đóng cửa của một số cổ phiếu và tính toán của tôi cho thấy tôi đang ở một vị trí rủi ro hơn nhiều so với tưởng tượng; . Những người sử dụng numpad trên bàn phím có thể liên quan đến vấn đề này
Bây giờ, tôi biết đến thư viện này có tên là
xlwings addin install
5được duy trì bởi Swapnil Jariwala giúp lấy dữ liệu từ các máy chủ NSE của tất cả dữ liệu lịch sử liên quan đến bất kỳ quyền chọn/cổ phiếu cụ thể nào được liệt kê trên NSE nhưng thư viện được viết hoàn toàn bằng python. Chỉ khi tôi bằng cách nào đó có thể sử dụng sức mạnh của python trong Excel thì nó mới tuyệt vời như vậyVà điều đó hoàn toàn có thể. Có một thư viện python khác có tên là
xlwings addin install
3 đặc biệt giải quyết vấn đề tích hợp excel này với python và voila. Vấn đề được giải quyếtĐể cung cấp cho bạn một số thông tin cơ bản về vấn đề này, đây là một phần của trang tính mà tôi có để giữ các tài khoản chia sẻ của mình
Ảnh của Vinayak
Tôi có Số ISIN của tập lệnh/cổ phiếu/cổ phiếu và tên của nó, Giá mua trung bình được tham chiếu từ các trang tính khác trong cùng sổ làm việc này, Giá đóng cửa mà tôi đã sử dụng để nhập thủ công vào cuối ngày và dựa trên mỗi
Cuối cùng, bạn sẽ có thể tạo một cái gì đó như sau trong hành động
Ảnh của Vinayak
Thiết lập xlwings
Giống như bất kỳ gói nào khác, bạn chỉ cần cài đặt `xlwings` bằng trình cài đặt gói python như sau
pip install xlwings
Tôi khuyên bạn nên tạo một môi trường ảo cho dự án này để tránh xung đột phụ thuộc trong cài đặt gói hiện có của bạn. Bài đăng này sẽ không đề cập đến nó nhưng bạn có thể xem ở đây nếu bạn muốn cài đặt một môi trường ảo với pip hoặc xem ở đây nếu bạn thích conda như tôi
Một phần của đường ống được đặt tôi. e. đường ống trăn. Tiếp theo, bạn nên cài đặt phần cần thiết để tích hợp excel với xlwings. Vì thế, hãy lưu và đóng tất cả các sổ làm việc excel mà bạn hiện đang mở và từ môi trường mà bạn đã cài đặt xlwings, chỉ cần chạy lệnh sau
xlwings addin install
Điều này sẽ diễn ra liền mạch nhưng đôi khi, nếu bạn đang sử dụng máy Windows 10 với Excel 2016, bạn có thể gặp lỗi như bên dưới
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'
Điều này có thể được khắc phục đơn giản bằng cách tạo thư mục bị thiếu bằng lệnh mkdir đơn giản
________số 8Sau khi cài đặt thành công xlwings, bạn sẽ thấy khi mở Excel lần sau, trên thanh công cụ ở trên cùng, một tab được tạo cho `xlwings`. Tab này cũng có các đường dẫn trình thông dịch và python cần chỉ định trong trường hợp bạn có một môi trường ảo khác mà qua đó bạn muốn thực thi các hàm python
Hình ảnh của Vinayak
Vì tôi sử dụng anaconda để duy trì môi trường của mình nên tôi đã cung cấp đường dẫn đến Conda của mình và môi trường tương ứng mà tôi muốn sử dụng. Theo mặc định,
xlwings addin install
3 sẽ phát hiện một môi trường [hầu hết là môi trường mà bạn đã cài đặt thư viện này], nhưng nếu không, bạn sẽ phải cung cấp đường dẫn đến bản phân phối anaconda và tên môi trường theo cách thủ côngĐể tìm vị trí phân phối anaconda của bạn, bạn có thể mở dấu nhắc anaconda từ Menu Bắt đầu của Windows và trong dấu nhắc đó, trước tiên hãy kích hoạt môi trường mà bạn đã cài đặt
xlwings addin install
3bằng cách chạy lệnhxlwings addin install
1và sau đó chạy
xlwings addin install
2Điều này có thể mang lại một số kết quả nhưng bạn cần tập trung vào kết quả đầu tiên;
Ảnh của Vinayak
Đường dẫn ở đây là
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'0, vì vậy trong hộp Đường dẫn Conda đi vào
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'1và trong hộp Conda Env đi vào
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'2. Điều này sẽ giúp macro gọi hàm python hiểu nó nên sử dụng môi trường nào để thực thi mã python trong. Nếu bạn không sử dụng phân phối anaconda để quản lý môi trường của mình, bạn có thể thực hiện bài tập tương đương với môi trường python của mình, nơi bạn cung cấp đường dẫn đến trình thông dịch và đường dẫn đến python thay vì thực hiện trong conda
Tiếp theo, bạn cần bật chức năng do người dùng xác định [UDF] cho
xlwings addin install
3 trong giao diện Excel. Sau khi mở Excel, hãy điều hướng đến hộp Phần bổ trợ bằng cách sử dụng tổ hợp phím Alt + L + H, sau đó bạn sẽ thấy một màn hình có nhiều hộp kiểm hỏi bạn cần bật phần bổ trợ nào cho sổ làm việc này. Nhấp vào hộp đối với xlwings addin install
3 và nhấn OKMột bước cuối cùng cần được thực hiện sau đó là cấp quyền truy cập cho tất cả các macro muốn sử dụng plugin của bên thứ ba như xlwings. Bạn có thể làm điều này bằng cách điều hướng đến Tệp > Tùy chọn > Cài đặt Trung tâm Tin cậy > Cài đặt Macro và trong cài đặt macro, chọn Bật tất cả Macro và bên dưới mục đó trong Cài đặt Macro dành cho Nhà phát triển, chọn Truy cập tin cậy vào mô hình Đối tượng Dự án VBA
Hình ảnh của Vinayak
Với điều này, chúng tôi đã sẵn sàng một lần nữa chuyển sang khía cạnh trăn của mọi thứ
Tạo một dự án
Bạn có thể nhanh chóng bắt đầu với một dự án bằng cách chạy lệnh sau từ dấu nhắc cmd hoặc terminal hoặc shell
xlwings addin install
8Thao tác này sẽ tạo một dự án với project_name làm tên thư mục và theo mặc định, bạn sẽ nhận được hai tệp trong thư mục này
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'
5. Đây là tệp python chứa mã mà macro của bạn có thể gọi để sửa đổi trang tínhxlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'
6. Đây là tệp excel được bật macro, trống và chứa hai trang tính là tệpxlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'
7 và tệpxlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'
8. Bạn có thể tạo các trang tính bổ sung trong sổ làm việc này và thêm bất kỳ số lượng macro nào vào sổ làm việc đó. Logic của cuộc gọi lại phải được ghi bên trong tệp python được tạo ở trên
Những gì tôi đã làm là tôi đã tạo một dự án và sao chép nội dung của tệp excel có thông tin về các lượt chia sẻ mà tôi đã đề cập ở trên vào tệp xlsm và đổi tên trang tính đó theo ý thích của tôi
Logic phụ trợ python
Bây giờ là phần cốt lõi của mã mà bạn cần để tự động hóa dự án của mình. Trong đó, bạn có thể truy cập bất kỳ ô nào từ bất kỳ trang tính nào từ sổ làm việc `xlsm` ở trên
Bạn có thể viết bất kỳ hàm tùy chỉnh nào như trong bất kỳ tập lệnh python nào khác và sử dụng chúng tại đây. Tôi đã viết mã của mình bên trong chức năng chính mà tôi sẽ sử dụng để cập nhật giá đóng cửa hàng ngày. Tôi đã đưa ra mã dưới đây theo từng đoạn cho mục đích hiểu. Bạn có thể xem mã hoàn chỉnh cùng một lúc tại đây
xlwings addin install
3Vì tôi đang gọi từ bên trong sổ làm việc, tôi có thể sử dụng cú pháp trên và lấy đối tượng sổ làm việc. Nếu bạn muốn tham chiếu đến một số sổ làm việc khác, bạn có thể làm
xlwings addin install
4Ở đây file_path đề cập đến đường dẫn mà bạn đã lưu trữ tệp excel của mình. Sau đó, để truy cập bất kỳ trang tính nào, về cơ bản, bạn có thể sử dụng chỉ mục hoặc tên của trang tính và để truy cập các giá trị từ một phạm vi trong trang tính, bạn có thể xâu chuỗi lệnh phạm vi trên đầu trang đó
xlwings addin install
5Khi bạn nhận được mã ISIN của một cổ phiếu và tên của nó, nsepy có thể giúp bạn tìm nạp bhavcopy[bảng giá] của tất cả các cổ phiếu được liệt kê trên NSE và bạn có thể lọc giá đóng cửa cho tập lệnh đó vào bất kỳ ngày NSE hợp lệ nào. nsepy là một thư viện được duy trì bởi Swapnil Jariwala mà bạn có thể tham khảo tài liệu tại đây
xlwings addin install
0Nếu bạn có nhiều tập lệnh, bạn có thể lặp lại mã này để lấy giá đóng cửa cho tất cả các tập lệnh của mình và ghi chúng vào trang tính Excel theo ý muốn của bạn
Đây chỉ là một đoạn mã thực tế có thể tìm thấy trên repo github của tôi cho dự án này tại đây
Logic FrontEnd của Excel
Bây giờ chúng ta đã xác định logic python, chúng ta cần kết nối nó với một macro và gán nó cho một nút trong trang tính chính của chúng ta. Để làm điều đó, trước tiên bạn cần chèn một nút. Bạn có thể vào Nhà phát triển > Chèn > Nút và sau đó kéo một nút xuống trang tính
Sau đó, bạn có thể nhấn Alt + F11 để hiển thị giao diện VBA để xác định macro. Bây giờ bạn có thể định nghĩa một phụ như sau trong cùng trang tính mà bạn đã đặt nút
xlwings addin install
1Mã này trong macro sẽ làm những việc sau
- Tìm file có tên “Python_File_Name_Here”
- Nhập các mô-đun trong tệp này
- Gọi chức năng chính trong tệp python được chỉ định
Mã này có thể được điều chỉnh theo nhiều cách khác nhau;
xlwings addin install
2và điều này sẽ vẫn hoạt động tốt. Bạn có thể thực hiện một số kiểm tra trong VBA, một số trong python và để hai giao diện giao tiếp tự do khi cần, điều đó thật tuyệt vời phải không
Cuối cùng, đối với nút mà bạn đã tạo, bạn có thể gán macro này bằng cách nhấp chuột phải vào nút và chuyển sang tùy chọn gán macro và cuối cùng chọn macro này
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'9và nhấp vào OK
Bây giờ, bất cứ khi nào bạn nhấp vào nút [mà tôi đã đặt tên là Cập nhật Đóng], các tính toán sẽ chạy trong môi trường conda
xlwings 0.17.0[Errno 2] No such file or directory: 'C:\\Users\\nayak\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'2 và kết quả đầu ra sẽ được cập nhật trong bảng excel ở cột C. Bằng cách này, tôi không phải tra cứu thủ công giá đóng cửa của từng cổ phiếu trên web rồi điền vào Excel, tôi có thể hoàn thành công việc chỉ bằng một nút bấm
Bạn cũng có thể định nghĩa các hàm trong python, hàm này có thể được gọi giống như các công thức trong Excel và thực hiện nhiều thao tác khác nhưng tôi sẽ đề cập đến điều đó trong một bài viết sau…
Phần kết luận
Hy vọng bài viết này đã giúp bạn hiểu cách bạn có thể chắp cánh cho quy trình công việc excel của mình với sự trợ giúp của python. ]