Số hóa đơn tiếp theo - Tin tức

Microsoft Excel cung cấp nhiều mẫu hóa đơn mà bạn có thể tải xuống. Nhưng không có cách tích hợp để tăng lên số hóa đơn tiếp theo.

Tôi đã quay video này hướng dẫn cách thêm một vài dòng mã VBA vào sổ làm việc của bạn để bạn có thể lưu từng hóa đơn dưới dạng tệp mới. Sau đó macro sẽ xóa hóa đơn và thêm 1 vào số hóa đơn.

Với 166 nghìn lượt xem và hàng trăm bình luận, tôi nhận thấy những câu hỏi tương tự đang xuất hiện lặp đi lặp lại. Việc yêu cầu mọi người đọc qua 800 bình luận đã trở nên không thực tế vì câu trả lời cho câu hỏi của họ đã được đăng sáu lần trước đó. Vì vậy - đối với các câu hỏi phổ biến, tôi đăng mã ở đây.

Câu hỏi thường gặp # 1

Bạn có thể gõ mã cho tôi vì tôi không thể gõ được không?

Sub NextInvoice() Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents End Sub Sub SaveInvoiceWithNewName() Dim NewFN As Variant ' Copy Invoice to a New Workbook ActiveSheet.Copy NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close NextInvoice End Sub

Câu hỏi thường gặp # 2

Tôi muốn Lưu Hóa đơn dưới dạng PDF trên PC chạy Windows

Ghi chú

Mã này chỉ hoạt động trong các phiên bản Windows của Excel 2010 hoặc mới hơn. Có mã khác nhau cho máy Mac.

Bạn phải chọn phạm vi chứa hóa đơn và thực hiện Bố cục Trang, Khu vực In, Đặt Khu vực In. Nếu bạn bỏ qua bước này, thì các nút được sử dụng để chạy macro sẽ xuất hiện trong hóa đơn của bạn!

Sub SaveInvoiceAsPDFAndClear() Dim NewFN As Variant NewFN = "C:aaaInv" & Range("E5").Value & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents End Sub

Câu hỏi thường gặp # 3

Tôi muốn Lưu Hóa đơn dưới dạng cả tệp Excel và PDF trong một thư mục khác

Sub SaveInvoiceBothWaysAndClear() Dim NewFN As Variant ' Create the PDF First NewFN = "C:aaaPDFInvoicesInv" & Range("E5").Value & ".pdf" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NewFN, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, _ IgnorePrintAreas:=False, OpenAfterPublish:=False ' Next, Save the Excel File ActiveSheet.Copy NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ' Increment the invoice number Range("E5").Value = Range("E5").Value + 1 ' Clear out the invoice fields Range("A20:E39").ClearContents End Sub

Câu hỏi thường gặp # 4

Số hóa đơn của tôi có số và chữ cái

Bạn sẽ phải điều chỉnh mã. Đây là một số ví dụ. Heidi có số hóa đơn như SS15001. Khi tôi nhìn vào số hóa đơn đó, nó là một tiền tố gồm hai chữ cái, theo sau là 5 chữ số. Số hóa đơn mới phải sử dụng LEFT (, 2) và MID (, 3,5):

Range("E5").Value = Left(Range("E5").Value, 2) & 1 + Mid(Range("E5").Value, 3, 5)

Đây là một ví dụ phức tạp hơn. Số hóa đơn là IN-1234-HA trong đó IN- là viết tắt của Hóa đơn. 1234 là một số liên tiếp. HA là chữ cái đầu tiên của tên khách hàng được tìm thấy trong B10.

LeftPart = Left(Range("E5").Value, 3) MidPart = Left(Range("E5").Value, 4, 4) + 1 EndPart = Left(Range("A10").Value, 2) Range("E5").Value = LeftPart & MidPart & EndPart

Bạn có thể đơn giản hóa bốn dòng trên như sau:

Range("E5").Value = Left(Range("E5").Value, 3) & Left(Range("E5").Value, 4, 4) + 1 & Left(Range("A10").Value, 2)

Câu hỏi thường gặp # 5

Tôi có các macro khác trong sổ làm việc (chẳng hạn như SpellNumber) và cũng cần lưu các macro.

Để cho phép các macro khác của bạn chạy để chức năng Numbers-to-Words tiếp tục hoạt động, chiến lược có một chút khác biệt. Thay vì chỉ sao chép trang hóa đơn sang một sổ làm việc mới và sử dụng SaveA, bạn sẽ (a) Nhớ đường dẫn và tên tệp của sổ làm việc, (b) Sử dụng SaveAs để lưu toàn bộ sổ làm việc với số Hóa đơn trong tên, (c ) Xóa sổ làm việc gốc. (d) Sử dụng SaveA để lưu sổ làm việc với tên ban đầu.

Sub SaveInvoiceWithNewName() Dim OrigFN as Variant Dim NewFN As Variant ' Remember the original path and file name OrigFN = ThisWorkbook.FullName NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ' Save a copy with the new name ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ' Delete the original workbook so you can save without warning On Error Resume Next Kill (OrigFN) On Error Goto 0 ' Save again as the original file name ActiveWorkbook.SaveAs OrigFN, FileFormat:=xlOpenXMLWorkbook NextInvoice End Sub

Câu hỏi thường gặp # 6

Tôi cần bảo vệ trang tính để nhân viên của tôi chỉ có thể thay đổi một số ô. Khi tôi chạy macro của bạn, tôi nhận được "Ô bạn đang cố gắng thay đổi được bảo vệ và do đó chỉ đọc"

Bạn có thể bỏ bảo vệ trang tính trong macro, viết số hóa đơn mới và sau đó bảo vệ trang tính. Điều này chỉ phải được thực hiện trong macro NextInvoice. Macro khác không thực hiện thay đổi đối với bất kỳ ô nào. Đây là mã nếu bạn đang sử dụng bảo vệ mà không có mật khẩu:

Sub NextInvoice() ActiveSheet.Unprotect Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub Here is the code if you have protected the sheet with a password of Tomato. Note that the password appears in this code twice. Change the password to the real password in two places. Sub NextInvoice() ActiveSheet.Unprotect Password:="Tomato" Range("E5").Value = Range("E5").Value + 1 Range("A20:E39").ClearContents ActiveSheet.Protect Password:="Tomato", DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub

Câu hỏi thường gặp # 7

Tôi không muốn có nút Lưu trong sổ làm việc Đã lưu

Điều này khá phức tạp vì tên của hình dạng của bạn sẽ thay đổi khi trang tính chuyển sang sổ làm việc mới. Hãy làm theo rất cẩn thận các bước sau:

  1. Mở sổ làm việc macro hóa đơn
  2. Nhấp chuột phải vào tab trang tính có chứa hóa đơn của bạn. Chọn Di chuyển hoặc Sao chép.
  3. Trong menu thả xuống Đến Sách:, chọn Sách Mới. Chọn hộp kiểm cho Tạo bản sao. Bấm OK. Bước 3 này mô phỏng ActiveSheet.Copy trong VBA.
  4. Bây giờ bạn có trang tính hóa đơn trong sổ làm việc mới, hãy nhấn Ctrl-bấm vào hình dạng mà bạn muốn xóa. Ctrl + Click sẽ chọn hình dạng mà không cần chạy macro.
  5. Với hình dạng đã chọn, hãy nhìn sang bên trái của Thanh công thức. Hộp Tên sẽ hiển thị tên chẳng hạn như "Hình chữ nhật tròn 1". Rất cẩn thận xây dựng một dòng mã mới để xóa hình dạng này như được hiển thị bên dưới ngay sau ActiveSheet.
Sub SaveInvoiceWithNewName() Dim NewFN As Variant ' Copy Invoice to a New Workbook ActiveSheet.Copy ActiveSheet.Shapes("Rounded Rectangle 1").Delete NewFN = "C:aaaInv" & Range("E5").Value & ".xlsx" ActiveWorkbook.SaveAs NewFN, FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close NextInvoice End Sub

Khắc phục sự cố và thông báo lỗi

  1. Không thể lưu các tính năng sau trong sổ làm việc không có macro: Dự án VB. Trả lời: Tệp của bạn hiện được lưu dưới dạng tệp XLSX. Tôi cũng khó chịu không kém khi Microsoft chọn sử dụng loại tệp bị hỏng làm mặc định. Sử dụng File, SaveAs và thay đổi loại tệp thành XLSB hoặc XLSM.
  2. Type Mismatch. Answer: The code expects your invoice number to be a number. If you have SS15001 as an invoice number, you will have to figure out how to adapt your code. See FAQ #4 above.
  3. Compile error Expected line number or label or statement or end of statement on NewFN = “F:RobinusinessPCreceiptsInv” & Range(“H10”).Value & “.xlsx”. Answer: VBA does not like slanted quotation marks (also called Typographers quotes). Type the quotation mark in VBA and you will get "F:RobinusinessPCreceiptsInv" & Range("H10").Value & ".xlsx"
  4. We couldn't find C:UserJelenDocuments" Answer: The file path has to be exact. Are you sure you didn't mean C:UsersJelenDocuments? (Note the "s" at the end of users)
  5. Lỗi thời gian chạy 1004. Tài liệu không được lưu. Trả lời: Đường dẫn tệp phải chính xác. Ngay trước khi Lưu tệp, hãy thêm một dòng mới với MsgBox NewFN. Chạy mã. Một hộp sẽ bật lên hiển thị đường dẫn tệp và tên tệp. Đảm bảo có dấu phân cách giữa đường dẫn và tên tệp.
  6. Lỗi thời gian chạy '1004'. Phương thức 'SaveAs' của đối tượng '_Workbook' không thành công. Trả lời: FileFormat phải là FileFormat: = xlOpenXMLWorkbook. Khi bạn đọc nó, nó sẽ giống như "Excel Open XML Workbook". Nó không phải là Ex One Open XML Workbook. Có, thật khó hiểu khi số 1 và chữ L viết thường giống nhau trong video. 1l. Thay đổi X1OPENXMLWORKBOOK của bạn thành XLOPENXMLWORKBOOK.

thú vị bài viết...