Sonraki Fatura Numarası - Haberler

Microsoft Excel, indirebileceğiniz birçok fatura şablonu sunar. Ancak, bir sonraki fatura numarasına yükseltmenin yerleşik bir yolu yoktur.

Her faturayı yeni bir dosya olarak kaydedebilmeniz için çalışma kitabınıza birkaç satır VBA kodunu nasıl ekleyeceğinizi gösteren bu videoyu kaydettim. Makro daha sonra faturayı temizler ve fatura numarasına 1 ekler.

166 bin görüş ve yüzlerce yorumla, aynı soruların tekrar tekrar gündeme geldiğini görüyorum. İnsanlardan 800 yorum boyunca okumalarını istemek pratik olmadı çünkü sorularının cevabı daha önce altı kez yayınlandı. Yani - popüler sorular için kodu buraya gönderiyorum.

SSS # 1

Yazamadığım için kodu benim için yazabilir misin?

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

SSS # 2

Faturayı bir Windows PC'de PDF olarak kaydetmek istiyorum

Not

Bu kod yalnızca Excel 2010 veya daha yeni Windows sürümlerinde çalışır. Mac için farklı bir kod var.

Faturayı içeren aralığı seçmeli ve Sayfa Düzeni, Baskı Alanı, Baskı Alanını Ayarlamalısınız. Bu adımı atlarsanız, makroyu çalıştırmak için kullanılan düğmeler faturanızda görünecektir!

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

SSS # 3

Faturayı hem Excel dosyası hem de PDF olarak farklı bir klasöre kaydetmek istiyorum

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

SSS # 4

Fatura numaramda rakamlar ve harfler var

Kodu uyarlamanız gerekecek. İşte bazı örnekler. Heidi'nin SS15001 gibi bir fatura numarası var. O fatura numarasına baktığımda, iki harfli bir ön ek ve ardından 5 rakam. Yeni fatura numarasında SOL (, 2) ve ORTA (, 3,5) kullanılmalıdır:

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

İşte daha karmaşık bir örnek. Fatura numarası IN-1234-HA'dır, burada IN- Fatura anlamına gelir. 1234 sıralı bir sayıdır. HA, B10'da bulunan müşteri adının ilk harfidir.

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

Yukarıdaki dört satırı aşağıdaki gibi basitleştirebilirsiniz:

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

SSS # 5

Çalışma kitabında başka makrolar da var (Yazım Numarası gibi) ve makroların da kaydedilmesi gerekiyor.

Numaralardan Kelimelere işlevinin çalışmaya devam etmesi için diğer makrolarınızın çalışmasına izin vermek için strateji biraz farklıdır. Yalnızca fatura sayfasını yeni bir çalışma kitabına kopyalamak ve SaveAs kullanmak yerine, (a) Çalışma kitabının yolunu ve dosya adını hatırlayacak, (b) Fatura numarası adında tüm çalışma kitabını kaydetmek için SaveAs kullanacaksınız, (c ) Orijinal çalışma kitabını silin. (d) Çalışma kitabını orijinal adla kaydetmek için Farklı Kaydet'i kullanın.

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

SSS # 6

Çalışanlarımın yalnızca bazı hücreleri değiştirebilmesi için çalışma sayfasını korumam gerekiyor. Makronuzu çalıştırdığımda, "Değiştirmeye çalıştığınız hücre korumalı ve bu nedenle salt okunur" mesajı alıyorum

Makroda sayfanın korumasını kaldırabilir, yeni fatura numarasını yazabilir ve ardından sayfayı koruyabilirsiniz. Bunun yalnızca NextInvoice makrosunda yapılması gerekir. Diğer makro, herhangi bir hücrede değişiklik yapmıyor. Şifresiz koruma kullanıyorsanız, kod:

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

SSS # 7

Kaydedilen çalışma kitabında Kaydet düğmesinin olmasını istemiyorum

Bu aldatıcıdır çünkü çalışma sayfası yeni bir çalışma kitabına taşındığında şeklinizin adı değişecektir. Şu adımları çok dikkatli izleyin:

  1. Fatura makrosu çalışma kitabını açın
  2. Faturanızın bulunduğu sayfa sekmesine sağ tıklayın. Taşı veya Kopyala'yı seçin.
  3. Kitaba: açılır menüsünde Yeni Kitap'ı seçin. Bir Kopya Oluştur onay kutusunu seçin. Tamam'ı tıklayın. Bu adım 3, VBA'da ActiveSheet.Copy'yi simüle eder.
  4. Artık yeni bir çalışma kitabında fatura çalışma sayfasına sahip olduğunuza göre, silmek istediğiniz şekle Ctrl tuşuna basarak tıklayın. Ctrl + Tıklama, makroyu çalıştırmadan şekli seçecektir.
  5. Seçili şekil ile Formül Çubuğunun soluna bakın. Ad Kutusu, "Yuvarlak Dikdörtgen 1" gibi bir ad gösterecektir. ActiveSheet'ten hemen sonra aşağıda gösterildiği gibi bu şekli silmek için çok dikkatli bir şekilde yeni bir kod satırı oluşturun.
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

Sorun Giderme ve Hata Mesajları

  1. Aşağıdaki özellikler makro içermeyen çalışma kitaplarına kaydedilemez: VB Project. Cevap: Dosyanız şu anda XLSX dosyası olarak kaydedildi. Microsoft'un varsayılan olarak bozuk bir dosya türü kullanmayı seçmesinden de aynı derecede rahatsızım. Dosya, SaveAs kullanın ve dosya türünü XLSB veya XLSM olarak değiştirin.
  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. Çalışma Süresi Hatası 1004. Belge Kaydedilmedi. Cevap: Dosya yolu tam olmalıdır. Dosyayı kaydetmeden hemen önce MsgBox NewFN ile yeni bir satır ekleyin. Kodu çalıştırın. Dosya yolunu ve dosya adını gösteren bir kutu açılacaktır. Yol ve dosya adı arasında bir yol ayırıcı olduğundan emin olun.
  6. Çalışma Süresi Hatası '1004'. '_Workbook' nesnesinin 'SaveAs' yöntemi başarısız oldu. Cevap: FileFormat, FileFormat: = xlOpenXMLWorkbook olmalıdır. Okuduğunuzda, kulağa "Excel Açık XML Çalışma Kitabı" gibi gelmelidir. Ex One Açık XML Çalışma Kitabı değildir. Evet, videoda 1 rakamının ve küçük L harfinin birbirine benzemesi kafa karıştırıcı. 1l. X1OPENXMLWORKBOOK'unuzu XLOPENXMLWORKBOOK olarak değiştirin.

Ilginç makaleler...