Macro Python Excel

Cách Microsoft đang di chuyển với việc giới thiệu Office Scripts, có vẻ như gã khổng lồ Redmond sẽ không có kế hoạch đầu tư vào việc mở rộng VBA nữa, tuy nhiên, sẽ để nó làm ngôn ngữ kịch bản ngoại tuyến được chỉ định. Thách thức ở đây là mặc dù Office Scripts sẽ hoàn thiện hơn nhưng chúng tôi vẫn cần đợi một thời gian để chúng được hỗ trợ đầy đủ cho phiên bản Excel dành cho máy tính để bàn. Trong khi đó VBA không còn trẻ nữa và không phát triển từng bước với các ngôn ngữ khoa học dữ liệu hàng đầu như Python. Mặc dù tôi không nghĩ rằng VBA sẽ biến mất trong 10 năm tới, nhưng Microsoft chắc chắn sẽ cố gắng thu hút thêm nhiều người dùng sử dụng Office Scripts. Nhưng tại sao lại giới hạn bản thân? . Mặc dù Office Scripts sẽ tích hợp tốt hơn với Excel và với Bộ công cụ Power Suite của Microsoft như Power Automate, nhưng tôi nghĩ các nhà phân tích ngày nay nên hướng tới các ngôn ngữ được sử dụng rộng rãi hơn trong các lĩnh vực khoa học dữ liệu và kỹ thuật dữ liệu

Show

Python trong vài năm gần đây đã trở thành ngôn ngữ được lựa chọn cho một cộng đồng chuyên gia dữ liệu đông đảo. Nếu bạn đang tìm cách di chuyển tập lệnh VBA của mình sang Python, bạn không cần phải đợi. Bạn có thể bắt đầu phát triển tập lệnh cho Excel bằng Python ngay lập tức, chỉ với một vài bước bổ sung. Hãy để tôi giải thích lý do tại sao bạn muốn xem xét làm như vậy…

Tại sao chuyển VBA sang Python?

Đừng hiểu lầm tôi, tôi đã tạo ra phần lớn các công cụ và tự động hóa VBA của mình. Nếu bạn đang tạo các ứng dụng dựa trên Access thì đây có thể không phải là giải pháp thay thế dành cho bạn. Tuy nhiên, nếu bạn sử dụng VBA chủ yếu để tạo tự động hóa, làm sạch dữ liệu, báo cáo thì tôi nghĩ bạn có thể đánh giá cao sự hoán đổi

Python là ngôn ngữ lập trình phổ biến nhất theo chỉ số TIOBE. Nó được yêu thích bởi các nhà khoa học dữ liệu và kỹ sư dữ liệu. Hầu hết các thuật toán học máy trên Kaggle đang được tạo bằng Python. Tương tự Python là ngôn ngữ chính được sử dụng để trích xuất, chuyển đổi và tải dữ liệu được sử dụng là các dịch vụ đám mây được quản lý như Amazon Glue hoặc Azure Databricks. Đầu tư vào việc học một ngôn ngữ có thể linh hoạt hơn thay vì chỉ dành cho Excel

Python hỗ trợ nhiều định dạng dữ liệu mà ngày nay bạn có thể đang xử lý các tệp Excel. Tuy nhiên, cho dù đó là CSV, Excel, văn bản, avro, json hay bất kỳ loại tệp dữ liệu nào khác – nó không thực sự tạo ra sự khác biệt đối với bạn với tư cách là nhà phát triển. Tại sao phải giới hạn bản thân trong việc xử lý bảng tính Excel khi thay vào đó, bạn có thể học một ngôn ngữ giúp bạn xử lý bất kỳ định dạng dữ liệu nào

Python là một ngôn ngữ lập trình trưởng thành hơn. Mặc dù VBA đã không thấy các bản cập nhật kể từ 20 năm qua, nhưng Python đang ở trong bản phát hành chính thứ 3, với bản thứ 3 mới nhất. 10 phiên bản mới được phát hành vào mùa thu năm ngoái. Với mỗi bản phát hành, có những khả năng và cải tiến mới cho Python

Hành trình chuyển từ VBA sang Python của tôi

Trong bài đăng này, tôi sẽ cố gắng cung cấp cho các nhà phát triển VBA so sánh nhanh một số tập lệnh mẫu cho các tình huống phổ biến và cách chúng có thể được tạo lại trong Python. Cá nhân tôi đã bắt đầu hành trình lập trình của mình từ những ngày từ C/C++/C#. Tôi bắt đầu thực hiện nhiều thao tác lập mô hình và sắp xếp dữ liệu Excel hơn và thấy rằng tôi không thể làm điều đó nếu không có tập lệnh. VBA thực sự là giải pháp thay thế duy nhất, vì thực hiện nó trong C# mất nhiều thời gian hơn và các ngôn ngữ như Python không thực sự là giải pháp thay thế

Tuy nhiên, qua nhiều năm khi tôi chuyển sang lĩnh vực kỹ thuật dữ liệu nhiều hơn, tôi đánh giá cao sự dễ dàng mà bạn có thể xử lý tất cả các loại tệp dữ liệu bằng Databricks hoặc Python Pandas. Trong những năm qua Python đã chứng kiến ​​sự phát triển của thư viện Pandas và nhiều thư viện dành riêng cho Excel khác xuất hiện như openpyxl. Cho đến hôm nay, tôi nghĩ rằng câu hỏi nên sử dụng VBA hay Python không còn là một lựa chọn rõ ràng nữa và cần phải xem xét từng trường hợp sử dụng

Anaconda để phát triển Python

Mặc dù có rất nhiều IDE (Môi trường phát triển tích hợp) có sẵn cho các nhà phát triển Python, tôi khuyên bạn nên cài đặt Anaconda. Anaconda hiện là nền tảng phân phối phổ biến nhất dành cho các nhà phát triển Python và đi kèm với bản phân phối Python, Spyder IDE được sử dụng cho khoa học dữ liệu và Jupyter Notebooks – nền tảng sổ ghi chép hàng đầu để phát triển Python

Tải xuống gói phân phối từ trang web Anaconda cho hệ điều hành của bạn (Windows, Apple, Linux) và bắt đầu cài đặt

Macro Python Excel

Sau khi cài đặt, bạn có thể quyết định xem mình có muốn tiếp tục viết mã trong Spyder IDE hay Jupyter Notebooks hay không. Đối với người mới bắt đầu, tôi khuyên dùng Jupyter vì nó dài dòng hơn và bạn có thể chạy các đoạn mã của mình trong khi xem kết quả đầu ra của chúng

Để bắt đầu, hãy mở Jupyter Notebooks. Sau một lúc, bạn sẽ được chào đón với một cửa sổ trình duyệt nơi bạn sẽ được chào đón bởi Jupyter.

Macro Python Excel

Bây giờ chúng ta hãy tạo tệp Script mới. Nhấp vào nút Mới và chọn Python 3 (ipykernel). Vậy là xong, bạn sẽ thấy một tab trình duyệt đang mở với một tệp python chưa được đặt tên đã sẵn sàng hoạt động.
Macro Python Excel

Bây giờ, bạn đã sẵn sàng để khám phá các tập lệnh của chúng tôi. Nếu bạn muốn làm quen với Jupyter, tôi khuyên bạn nên đọc hướng dẫn này.

ví dụ 1. Chào thế giới

Hãy bắt đầu với một ví dụ rất đơn giản trong khi làm quen với việc sử dụng Jupyter Notebooks

Xin chào thế giới trong VBA

Với VBA, bạn luôn cần khai báo một thủ tục con chạy mã của bạn. Do đó, chúng tôi sẽ bắt đầu bằng cách tạo Phụ chính của chúng tôi và bên trong chúng tôi sẽ bao gồm một Gỡ lỗi đơn giản. In câu lệnh để xuất Hellos của chúng tôi trên cửa sổ bảng điều khiển ngay lập tức

Macro Python Excel

Xin chào thế giới trong Python

Trong Python nếu bạn đang chạy mã từ IDE, bạn chỉ cần chạy câu lệnh in sau. Chỉ cần nhập mã của bạn vào ô đầu tiên và nhấn SHIFT+ENTER để thực thi mã

Macro Python Excel

Trong trường hợp bạn sẽ biên dịch các tệp của mình, bạn sẽ cần chỉ định quy trình chính bằng cách xác định và chạy nó như vậy

def main():
  print("Hello World!")
  
main()

Đó là một cách thực hành tốt để luôn xác định một thủ tục chính vì bạn đã quen với việc tạo các gói và tệp thực thi python phức tạp hơn. Tuy nhiên, trong các ví dụ của tôi dưới đây, tôi muốn giữ cho mã đơn giản và tránh gói nó trong phần chính.

ví dụ 2. Viết vào một ô

Trong ví dụ tiếp theo của chúng tôi, chúng tôi sẽ cần tạo một tệp Excel trống và viết một ô duy nhất và đóng tệp

Ghi vào một ô trong VBA

Trong VBA, chúng ta sẽ cần tạo một Ứng dụng Excel mới (hoặc sử dụng ứng dụng hiện có), tạo một sổ làm việc mới, mở trang tính đầu tiên và viết văn bản vào ô trang tính đầu tiên của chúng ta. Cuối cùng, chúng tôi sẽ lưu tệp của mình và đóng ứng dụng Excel

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub

Mã này thực sự rất nặng vì bạn sẽ nhận thấy rằng sẽ mất một lúc để thấy ứng dụng Excel mới được khởi chạy

Ghi vào một ô trong Python

Trong Python, chúng tôi thường dự phòng một số thư viện nhất định cho phép chúng tôi chạy một số hoạt động nhất định. Trong trường hợp của Excel, nếu chúng ta muốn có trải nghiệm rất giống với việc sử dụng VBA, chúng ta có thể tận dụng thư viện openpyxl. Nó đi kèm với tất cả các khả năng cần thiết thường xuyên mà bạn có thể mong đợi từ VBA. Ngoài ra, nó rất nhẹ vì nó hoạt động trên cấu trúc XML của các tệp Excel (đúng vậy - các tệp Excel thực sự là các tệp XML đóng gói) thay vì phải khởi chạy Excel để chạy các hoạt động cho chúng tôi. Điều xảy ra bên dưới là chúng tôi tạo một Sổ làm việc mới, lấy trang tính hoạt động đầu tiên, lưu chuỗi và lưu tệp mới của chúng tôi hoặc ghi đè lên tệp cũ

import openpyxl as op
wb = op.Workbook()
ws = wb.active
ws.cell(1,1).value = "Hello there!"
wb.save(r"C:\.. \Test.xlsx") #Replace .. with your file location

Đánh giá cao mã ngắn hơn bao nhiêu. Vì không có khả năng tương tác với Excel nên chúng tôi không cần nhớ về việc tự đóng ứng dụng – vì nó chưa bao giờ được mở ngay từ đầu. Trong Python và trong VBA, chúng tôi không thực sự phải khai báo các biến của bạn. Tuy nhiên, trong VBA, chúng ta sẽ không thể thấy bất kỳ gợi ý nào về các phương thức và thuộc tính của biến nếu chúng ta không khai báo chúng. Tuy nhiên, trong Python, nếu bạn xác định một biến, bạn có thể tạo một hàng mới trong Jupyter và nhấn TAB sau dấu chấm “. ” để xem các phương thức/thuộc tính có sẵn hoặc nhấn SHIFT+TAB để lấy tài liệu về phương thức. Thuận tiện hơn nhiều

ví dụ 3. Thao tác chuỗi

Trong nhiều kịch bản kịch bản, chúng tôi thường sử dụng VBA để thực hiện các thao tác trên Chuỗi mà nếu không sẽ rất cồng kềnh bằng cách sử dụng TRÁI, PHẢI, TÌM hoặc các Công thức Excel khác. Hãy so sánh các ví dụ thao tác nhiều chuỗi trong VBA với Python

Thao tác chuỗi trong VBA

Thông thường, sử dụng các công thức Excel, thật dễ dàng để thực hiện các thay đổi bằng cách sử dụng các hàm LEFT, RIGHT tiêu chuẩn. Điều khó hơn trong Công thức Excel là tách văn bản. Dưới đây là một ví dụ đơn giản trong VBA

Dim full_name As String
full_name = "[email protected]"

If InStr(full_name, "@") Then full_name = Split(full_name, "@")(0)
    
first_name = Split(full_name, "_")(0)
last_name = Split(full_name, "_")(1)
    
first_name = StrConv(Trim(first_name), vbProperCase) 'Tom
last_name = StrConv(Trim(last_name), vbProperCase)   'Hardy

Thao tác chuỗi trong Python

Mã trong python sẽ trông tương tự, nhưng lưu ý rằng thay vì chạy các hàm trên văn bản, các chuỗi của chúng tôi thực sự sẵn sàng cho các phương thức tách, viết hoa và cắt xén văn bản

full_name = "[email protected]"
if full_name.find("@") > 0 : full_name = full_name.split(sep="@")[0]
first_name = full_name.split("_")[0]
last_name = full_name.split("_")[1]
first_name = first_name.strip().capitalize() #Tom
last_name = last_name.strip().capitalize()   #Hardy

Ví dụ 4. Lặp lại các hàng

Một tác vụ phổ biến mà bạn thực hiện trong VBA là lặp qua một tập hợp các hàng để chạy các tác vụ trên các hàng riêng lẻ mà bạn sẽ gặp khó khăn khi xử lý bằng Công thức Excel. Đối với ví dụ này, chúng tôi sẽ sử dụng bảng Excel đơn giản sau. Điều tôi muốn là lặp qua các hàng và in tất cả họ và tên của những người có thu nhập trên 60k

Macro Python Excel

Lặp lại các hàng trong VBA

Trong VBA, chúng tôi thường không lặp lại trên toàn bộ hàng mà thường xuyên hơn trên các hàng của một cột cụ thể (như cột id) để lọc các mẫu và chỉ sau đó chúng tôi mới chạy các tác vụ trên các cột khác của hàng cụ thể đó

Dưới đây tôi cần xác định tất cả các ô thu nhập trong cột G và sau đó chỉ lọc những ô có giá trị. Tiếp theo trong vòng lặp, tôi đang kiểm tra xem giá trị có trên 60k hay không và bỏ qua hàng tiêu đề. Để in họ và tên, tôi đặt ô theo cột -5 và -4 tương ứng để ghi lại họ và tên

Sub IterateRows()
   Dim cell As Range
   Dim ws As Worksheet
   Set ws = Sheets("Sheet1")

   For Each cell In ws.Range("G:G").SpecialCells(xlCellTypeConstants)
        If cell.Value > 60000 And cell.Row > 1 Then
            Debug.Print "First name: " & cell.Offset(, -5) & ", Last name: " & cell.Offset(, -4)
        End If
   Next cell    
End Sub

Tôi muốn nói rằng đây là nơi VBA hơi vụng về vì có rất nhiều lỗi ở đây. Bạn có thể lập luận rằng chúng tôi có thể đã áp dụng Bảng ở đầu tập dữ liệu hoặc áp dụng bộ lọc. Tuy nhiên, tất cả những điều này yêu cầu các bước bổ sung

Xem thêm   Phím tắt Microsoft Excel

Lặp lại các hàng trong Python

Trong Python, chúng tôi sẽ dự phòng một trong những thư viện phân tích dữ liệu phổ biến nhất – Pandas. Giờ đây, Pandas được các nhà khoa học dữ liệu yêu thích và rất linh hoạt do thực tế là nó có thể được áp dụng trên tất cả các loại tệp và lược đồ. Cấu trúc dữ liệu chính trong Pandas là DataFrame - về cơ bản đại diện cho một bảng có tiêu đề

Trong mã bên dưới, chúng tôi bắt đầu bằng cách nhập Pandas và tải tệp và trang tính vào df, đây là một biến với DataFrame của chúng tôi. DataFrame theo mặc định phát hiện hàng tiêu đề (theo mặc định là hàng đầu tiên). Chúng tôi có thể sử dụng iterrows để lặp qua từng hàng trong DataFrame của chúng tôi. Chúng tôi có thể xây dựng bộ lọc của mình trực tiếp vào DataFrame bằng cách đơn giản df[ df[“ income”]>60000 cho biết rằng chúng tôi muốn lọc tất cả các giá trị thu nhập trên 60k

import pandas as pd

file_name = r"C:\...\Test.xlsx" #Replace .. with your path
df = pd.read_excel(file_name, sheet_name="Sheet1")

for r in df[ df["income"]>60000 ].iterrows():
    first_name = r[1]["first_name"]
    last_name = r[1]["last_name"]
    print(f"First Name:{first_name} Last Name:{last_name}")

Điều tuyệt vời về DataFrames là bạn có thể thêm chúng rất dễ dàng để đơn giản hóa công việc này hơn nữa bằng cách tạo một chuỗi chỉ chứa họ và tên được lọc như bên dưới. Đây là một giải pháp rất tao nhã và đơn giản hơn là sử dụng VBA

import pandas as pd

file_name = r"C:\...\Test.xlsx" #Replace .. with your path
df = pd.read_excel(file_name, sheet_name="Sheet1")
df = df[df["income"] > 60000]

names = "First name:" + df["first_name"]+", Last name: " + df["last_name"]
for n in names:
    print(n)

Ví dụ 5. Chèn và xóa hàng

Thông thường, bạn có thể sử dụng VBA để chèn các hàng dữ liệu mới vào các trang tính hiện có hoặc xóa các hàng hiện có. Vấn đề khi sử dụng VBA là điều này thường đi kèm với chi phí tính toán lớn khi so sánh với Python

Chèn và xóa hàng trong VBA

Như đã nói ở trên, việc chèn/xóa có thể tốn thời gian trong VBA – tùy thuộc vào số lượng hàng dữ liệu bạn sẽ có bên dưới các hàng đã chèn/xóa. Điều này thường là do Excel sẽ biên dịch lại rất nhiều phép tính hoặc vì các lý do khác

________số 8

Chèn và xóa hàng trong Python

Vì chúng tôi có thể không nhìn vào một bảng tính có cấu trúc, chúng tôi sẽ lại dự phòng trên thư viện openpyxl. Trái ngược với VBA, chúng ta cần làm việc trên một tài liệu đóng. Nếu chúng tôi muốn lưu các thay đổi của mình, chúng tôi cần hoàn thành việc lưu

import openpyxl as op
file_name = r"C:\...\Test.xlsx" #Replace .. with your path
wb = op.load_workbook(file_name)

ws = wb["Sheet1"]
ws.delete_rows(10)
ws.insert_rows(10)

wb.save(file_name)

Ví dụ 6. Thêm và xóa trang tính

Thêm và xóa bảng tính trong VBATrong VBA, chúng ta sẽ cần thêm một trang tính trống vào ActiveWorkbook của mình (trang đang mở và hiển thị), chỉ khi đó chúng ta mới có thể đặt tên cho trang tính của mình. Khi xóa trang tính, chúng tôi có thể gặp sự cố là chúng tôi sẽ nhận được cửa sổ bật lên hỏi chúng tôi có muốn xóa trang tính không. Điều đó có thể được tắt bằng tùy chọn DisplayAlerts nhưng yêu cầu thêm một bướcSub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub 0

Thêm và xóa bảng tính trong PythonTrong Python, cả hai thao tác đều là onelinersSub Main() Dim app As Excel.Application Dim wb As Excel.Workbook Dim ws As Excel.Worksheet Dim fileName As String fileName = "C:\...\Test.xlsx" 'Replace .. with your file location Set app = New Excel.Application Set wb = app.Workbooks.Add Set ws = wb.Sheets(1) ws.Cells(1, 1) = "Hello there!" wb.SaveAs fileName app.Quit End Sub 1

Ví dụ 7. Định dạng ô

Định dạng ô trong VBA____12

Định dạng ô trong Python

Trong Python để thực hiện định dạng ô Excel, chúng ta sẽ cần một vài mô-đun bổ sung – Phông chữ, Màu sắc, Đường viền và Bên. Sau khi nhập, quy trình này khá giống với cách bạn thực hiện trong VBA

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
3

Ví dụ 8. Câu điều kiện

Báo cáo Contiational trong VBA

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
4

Câu lệnh có điều kiện trong Python

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
5

Ví dụ 9. Hộp tin nhắn

Hộp thông báo là một cách dễ dàng để thông báo cho người dùng của bạn về các sự kiện nhất định, chẳng hạn như hoàn tất việc chạy macro hoặc hỏi họ câu hỏi Có/Không đơn giản

Hộp thông báo trong VBA

Trong VBA, chúng tôi sử dụng hàm MsgBox gốc. Vấn đề của họ là đối với hộp Có/Không, chúng ta cần nhớ rằng hàm sẽ trả về mã VBA mà chúng ta cần so sánh bằng cách sử dụng một trong các biến tích hợp vbYes hoặc vbNo

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
6

Macro Python Excel

Hộp thông báo trong Python

Python không đi kèm với chức năng Hộp thư gốc. Thay vào đó, bạn cần nhập một thư viện có tính năng này. Tôi khuyên bạn nên sử dụng tkinter vì cách sử dụng nó rất giống với chức năng MsgBox VBA

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
7

Macro Python Excel

Ví dụ 10. Chức năng

Như ví dụ cuối cùng của tôi, hãy để chúng tôi so sánh cách bạn có thể tạo các hàm tùy chỉnh trong VBA với Python

Hàm trong VBA

Trong VBA, chúng ta luôn cần phải rõ ràng liệu chúng ta đang định nghĩa chương trình con hay hàm. Đối với Hàm nếu bạn muốn chỉ định số lượng đối số không xác định, bạn có thể sử dụng ParamArray

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
8

Hàm trong Python

Trong Python, chúng ta không cần phải rõ ràng về chương trình con so với hàm. Mã chính của bạn sẽ chỉ chạy khi nó bỏ qua các chức năng được xác định từ trên xuống dưới như hình bên dưới. Ngoài ra, nếu bạn muốn tạo các hàm với số lượng đối số không xác định, bạn có thể đặt trước đối số của mình bằng * (hoặc ** nếu bạn muốn một từ điển thay vì một danh sách)

Sub Main()
    Dim app As Excel.Application
    Dim wb As Excel.Workbook
    Dim ws As Excel.Worksheet
    Dim fileName As String
    
    fileName = "C:\...\Test.xlsx" 'Replace .. with your file location
    Set app = New Excel.Application
    Set wb = app.Workbooks.Add
    Set ws = wb.Sheets(1)
    
    ws.Cells(1, 1) = "Hello there!"
    
    wb.SaveAs fileName
    app.Quit
End Sub
9

Python so với VBA. kết luận

Mặc dù tôi không tranh luận về việc ngừng sử dụng VBA hoàn toàn trong các tập lệnh Excel của bạn, nhưng tôi nghĩ bạn nên bắt đầu xem xét Python cho các tác vụ xử lý dữ liệu/tự động hóa phức tạp hơn. Ngược lại, khi tôi được hỏi về ngôn ngữ nào là khởi đầu tốt cho các nhà phân tích mới bắt đầu – tôi vẫn khuyên họ nên bắt đầu với VBA. Với Excel, bạn có một IDE được tích hợp sẵn, các tập lệnh VBA của bạn có thể dễ dàng được chia sẻ và đánh giá cao bởi những người khác tại nơi làm việc của bạn. Hãy để tôi mở rộng thêm một chút tại sao đôi khi VBA vẫn có thể là lựa chọn mặc định của bạn

Tại sao bạn vẫn có thể thích sử dụng VBA?

Bạn vẫn nên gắn bó với VBA nếu bạn là nhà phát triển mới bắt đầu và chủ yếu là người dùng Excel. Nếu bạn chưa nắm vững về lập trình và hàng ngày bạn chỉ tạo các tập lệnh đơn giản, thường được ghi sẵn, tôi không nghĩ rằng việc chuyển đổi sẽ mang lại cho bạn nhiều lợi ích.
Python thiếu gì?

  • Python không được tích hợp vào Excel. Bạn luôn cần gửi riêng tập lệnh của mình và đảm bảo người dùng của bạn đã cài đặt Python trên máy trạm của họ
  • Python không chạy trên các tài liệu đang mở – trong VBA, bạn có thể quen với việc nhìn thấy mã của mình trực tiếp trên các tài liệu đang mở của mình. Python thường thao tác với các tài liệu đã đóng, mặc dù bạn có thể thử sử dụng các thư viện interop, tuy nhiên, điều đó làm mất đi mục đích sử dụng Python
  • Không có trình ghi Macro Excel cho các tập lệnh Python – nếu bạn là người mới bắt đầu, tôi vẫn sẽ gắn bó với VBA, cho đến khi bạn hiểu rõ về nó

Khi nào là thời điểm thích hợp để học Python?

Nếu bạn là kỹ sư dữ liệu/nhà khoa học dữ liệu thì Python có ý nghĩa hơn ngay từ đầu. Bạn không thực sự quan tâm nếu bạn cần xử lý tệp Excel, csv hay json, dữ liệu là dữ liệu. Trong những trường hợp như vậy, tất cả các lợi ích của việc đóng gói VBA bằng các tệp Excel, v.v. không thực sự quan trọng

Tôi có thể sử dụng Python để tự động hóa Excel không?

Nhìn chung, Tự động hóa Python Excel là một quy trình đổi mới mà bạn có thể sử dụng để tạo báo cáo trực quan trên Python giống như cách bạn làm trên Excel một cách liền mạch. Organizations can leverage Python Excel Automation to leverage their business tasks according to their needs.

Python có thể thay thế macro Excel không?

Có, hoàn toàn đúng . VBA thường được sử dụng để tự động hóa Excel bằng macro, thêm các hàm trang tính mới do người dùng xác định (UDF) và phản ứng với các sự kiện Excel. Mọi thứ trước đây bạn đã làm trong Excel bằng VBA đều có thể đạt được bằng Python. Sử dụng Python để thay thế VBA có nhiều lợi ích và thường nhanh hơn VBA.

Tôi có thể sử dụng Python trong Excel VBA không?

Mọi thứ bạn có thể viết bằng VBA đều có thể được thực hiện bằng Python . Trang này chứa thông tin sẽ giúp bạn dịch mã VBA sang Python. Xin lưu ý rằng Mô hình đối tượng Excel là một phần của Excel và được Microsoft ghi lại.

VBA hay Python tốt hơn cho Excel?

Không giống như ngôn ngữ VBA được sử dụng trong Excel, phân tích dữ liệu bằng Python sạch hơn và cung cấp khả năng kiểm soát phiên bản tốt hơn . Tốt hơn nữa là tính nhất quán và chính xác của Python trong việc thực thi mã. Những người dùng khác có thể sao chép mã gốc và vẫn trải nghiệm quá trình thực thi trơn tru ở cùng cấp độ với mã gốc.