Turning gears are the logo of co-scripts

İş yerimizdeki bir işlemi hızlandırmak istedim. İşlem MS Word 2010'de bir yazıyı kaydettikten sonra aynı dosyanın bir de .pdf halini elde etmeye dayanıyordu. Word  SaveAs seçeneği içinde pdf tipinde kaydı desteklemesine rağmen çok fazla tıklama ve seçme gerekiyordu. Biz pdf'leri kaydederken bir de belirli bir kelime katarını dosya adının önüne yazıyoruz.

Biraz araştırınca macro ile bunları yapabileceğimi öğrendim. (stackoverflow sağolsun). Bu işlemi bir Sub içine koyduktan sonra ilgili sub'ı bir düğmeye atadım. Sonra bu işlemi makroları çalıştıracak şekilde otomatikleştirdim.

Nereden baksanız 3-4 saniye kazandık. Macroyu normal.dot için etkinleştirdiğinizde tüm belgeleriniz otomatik olarak bu makroları çağıran düğmelerle donanıyor. Farklı kullanım alanları olabilir. Yazdığınız modulleri (VBA makrosu içeren kısımlar) *.bas uzantılı bir dosya olarak export edebiliyor ve başka bir bilgisayardaki word içerisinden bu dosyayı import edebiliyorsunuz.

Word içerisinde Alt+F11 ile Visual Basic for Applications (VBA) Editörünü açıyorsunuz.

Sol kısımda görülen Project penceresinde iki döküman göreceksiniz. Yazdığınız kod o an açık olan ve genellikle Document1 olarak isimlendirilen dosyayı veya varsayılan olarak açılan tüm yeni dökümanlara kalıp oluşturan Normal (normal.dot) dosyasına yazılır. Hangisini seçerseniz kodlar onun içerisine yazılır. Biz Normal'e uyguladık.

Amacımız hali hazırda kaydedilmiş bir dosyayı aynı adreste (klasörde) pdf uzantılısını kaydetmek. Bu nedenle önce belgenin kaydedildiği yeri alıyoruz. Eğer kaydedilmemişse veya belirli bir eski belge açılmamışsa Word varsayılan olarak (İng. versiyonda) "Libraries\Documents" adresini hedef alıyor.  Dosyamızı kaydettiğimizi varsayalım.

VBA açık ve üzerinde çalışılan belgeyi ActiveDocument nesnesi olarak ele alıyor. Bu belgenin yolunu almak için ActiveDocument.Path yazmanız yeterli. Ancak Path içinde kullanıcı adının da yer alma olasılığı var. Veya klasör isimlerinde izin veirlen bazı özel karakterler bulunabilir. Bunu sizin kullanımınıza göre temizleyeceğinizi veya gerekli değişiklikleri yapacağınızı varsayıyorum.

Dosyanın yolunu dosya adıyla birlikte alabilmek için ActiveDocument.FullName (fso'dan aşina olanlar olabilir)...

ve benim uyguladığım dosya adını yeniden bir araya getiren kalıp fonksiyon. 

Function yeniDosyaAdiVer()

yeniDosyaAdiKelimeleri = Split(ActiveDocument.FullName, ".")

yeniDosyaAdiKelimeleriSayisi = UBound(yeniDosyaAdiKelimeleri)

    For xcv = 0 To (yeniDosyaAdiKelimeleriSayisi - 1)

        sonDosyaAdi = sonDosyaAdi & yeniDosyaAdiKelimeleri(xcv) & "."

        yeniDosyaAdiVer = sonDosyaAdi

    Next

End Function

 

Sub TITCK_ic2pdf()
    With ActiveDocument
    sondurum = Replace(yeniDosyaAdiVer(), (.Path & "\"), "")
    'MsgBox (sondurum)
    sonPDFAdi = .Path & "\on-kelime-" & sondurum & "pdf"
    'MsgBox (.FullName & Chr(13) & sonPDFAdi)
    
      .ExportAsFixedFormat OutputFileName:=sonPDFAdi, _
      ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _
      OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
      Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
      CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
      BitmapMissingFonts:=True, UseISO19005_1:=False
    End With
End Sub

ve sonra kaydedip editörden çıkıyoruz.

co-scripts tag image
ID:271 | Okunma:1610