1. Anasayfa
  2. Server 2012

Powershell İle Office Word Kullanımına Giriş


2

Bu ilk makalemiz de Powershell ile Microsoft Word üzerine çeşitli metinler gönderirken font ve stillerini nasıl değiştirebiliriz hakkında bilgi vereceğim. Powershell ile Microsoft Word uygulamasının beraber kullanmak için Powershell içerisinde COM Objesini yaratmamız gerekmektedir. Ben bu yazımız içerisinde Word 2013 versiyonu kullanıyor olacağım. Kullanmış olduğum methodlar sizin Office versiyonunuza göre değişiklik gösterebilir. COM Objeler için daha fazla bilgi almak isterseniz aşağıdaki adresten bakabilirsiniz.

http://en.wikipedia.org/wiki/Component_Object_Model

Powershell içerisinde COM Objesi yaratmak için aşağıdaki adımlar izlenir.

Herhangi bir COM Objesi yaratmak için Powershell içerisinde kullanacağımız Cmdlet “New-Object”‘. Office Word uygulamasını çağırmak için ise “New-Object” cmdlet içerisinde –ComObject parametresine Word.Application göndermektir. Aşağıdaki örnekte bu işlemi bir değişkene atayarak yapıyorum.

$MSWord = New-Object -ComObject Word.Application


Resim-1

COM Obje nesnemi oluşturduktan sonra etkin olsa bile bir konuyu unutmayalım, process oluşuyor fakat arka tarafta “Visible” değerini “$false” olduğu için uygulamayı görmemekteyiz. Processler üzerinden kontrol ediyorum uygulamam başlatılmış fakat ben görmemekteyim.


Resim-2

Eğer Word uygulamasını oluşturduktan sonra, gözükmesini istiyorsanız,

$MSWord.Visible = $true

Yukarıdaki şeklinde “Visible” değerini True olarak yazmanız gerekmektedir.

$MSWord = New-Object -ComObject Word.Application

$MSWord.Visible = $true


Resim-3

Artık, Word uygulamasını görebiliriz. Ama aslında dikkat ettiyseniz yazmaya başlamak için herhangi bir belge oluşturmadık. Bunun için “Documents.Add()”yöntemini çağırarak gerçekleştireceğiz. “$Documents” adında bir değişken oluşturdum ve “$MsWord.Documents.Add()” yöntemini değişkene atayıp yazımızın ilerleyen kısmında kullanıyor olacağım. “Selection” yöntemini seçerek yazı yazmaya başlayabilirsiniz.

$MSWord = New-Object -ComObject Word.Application

$MSWord.Visible = $true

$Document = $MSWord.Documents.Add()

$Selection = $MSWord.Selection


Resim-4

Word İçerisine Yazı Yazmak

Word içerisine yazı yazmak için “TypeText()” yönteminin içerisine değer göndermeniz yeterlidir.

$Selection.TypeText (“Merhaba Hasan”)


Resim-5

Paragraf İle Beraber Çalışmak

Powershell içerisinden göndereceğiniz metinleri paragraf kullanarak ekleyebilirsiniz. Paragraf eklemek için kullanacağımız yöntem (Method) ise TypeParagraph() çağırmamız yeterli olacaktır. Çağırdığımız bu yöntem ile biz Word içerisinde yeni bir paragraf oluşturmamızı sağlayacaktır. TypeText() yöntemi ile kullanım örneği aşağıdaki gibidir.

$Selection.TypeParagraph()

$Selection.TypeText(“Merhaba Hasan”)


Resim-6

8 ve 9 satırda dikkat ettiyseniz 2 kez “TypeParagraph()” yöntemi çağırılmış ve Word içerisinde iki kez paragraf bırakılmıştır.

Word İçerisindeki Stiller İle Çalışmak

Word içerisindeki hazır stilleri kullanarak gönderdiğiniz metinlerin görünüşlerini değiştirebilirsiniz. Bu kısımda kullanacağımız yöntem ise ($Selection.Style = “Yazıstiligiriniz“) şeklinde belirleyebiliyoruz. Word üzerindeki gördüğümüz stiller,


Resim-7

Yazmamız gereken sadece kullanmak istediğimiz stilin adını “$Selection.Style = “Yazıstiligiriniz”)
içerisine yazmak.

$Selection.Style = “Heading 1”

$Selection.TypeText(“Active Directory Audit ve Raporlama”)

$Selection.TypeParagraph()


Resim-8

Word İçerisindeki Yazı Tiplerini Keşfetmek

Bu kısım içerisinde aşamalı olarak yazı tipleri ( bold, italic ) ve son aşamada ise fontların renk değişimini göz atıyor olacağız.

“$Selection.Font” kullanarak yazı tiplerini görebilirsiniz. Dikkat edin “Bold,İtalic” tam bir sayı ile ifade ediliyor. Yani ben Word içerisine göndereceğim değer “1” olarak belirlersem o değerim “Bold” olarak ayarlanacaktır. Aynı şekilde “Italic” içinde bu senaryo geçerlidir.


Resim-9

$Selection.Font.Bold = 1

$Selection.TypeText(‘Bu yazımız Bold olarak ayarlanmıştır.’)

$Selection.TypeParagraph()

$Selection.Font.Bold = 0

$Selection.Font.Italic = 1

$Selection.TypeText(‘Bu yazımız Italic olarak ayarlanmıştır.’)


Resim-10

Not: Yukarıda “$Selection.Font.Bold = 0” değerinin belirtilmesinin sebebi sıradaki satırda gönderilen değerin “Bold” olarak ayarlanmamasıdır.

Son olarak Word içerisine gönderdiğimiz metinleri renklerini değiştirmek için yapacağımız işlemlerden bahsetmek istiyorum.

Yukarıda “$Selection.Font” çalıştırdığımız zaman “Bold, Italic” değerlerini gördük ve bunları değiştirmekten bahsettik. Listelenen değerler içerisinde “Color” değerini değiştirerek Font renkleri ile oynayabilirsiniz. Yukarıdaki örnekte Color değerinin karşısında “wdAutomaticColor” yazmaktadır. Yapmamız gereken sadece bu değeri değiştirmek. Buraya gelecek değerleri listelemek için yazmanız gereken;

[enum]::GetNames([microsoft.office.interop.word.wdcolor])


Resim-11

Yazı renklerini değiştirmek için,

$Selection.Font.Color = ‘wdColorSkyBlue’

$Selection.TypeText(‘Yazımız renk olarak <wdColorSkyBlue> ayarlanmıştır.’)

$Selection.TypeParagraph()

$Selection.Font.Color = ‘wdColorRed’

$Selection.TypeText(‘Yazımız renk olarak <wdColorRed> ayarlanmıştır.’)


Resim-12

Powershell ile Word içerisinde gördüğünüz gibi birçok işlemler yaptık. Word üzerinde yapılan bu işlemleri kaydetmek kulağa ne kadar hoş geliyor? Hatırlarsanız, yazımızın başında “$Document” adında bir değişken oluşturmuş ve onu yazımızın ilerleyen kısmında kullanacağımda bahsetmiştim. Evet $Document değişkeni içerisinden “SaveAs” yöntemini (method) kullanarak bunu yapmamız mümkün. Bunun öncesinde bu “SaveAs” methodu iki adet parametre göndermemiz gerekmektedir. Bunlar dosya yolu ve dosyanın kayıt edilen formatı olacaktır. Word üzerinden bildiğimiz gibi Farklı Kaydet yaparak birçok format ile kaydetme şansımız mevcut. Bu formatları listelemek için;

[Enum]::GetNames([microsoft.office.interop.word.WdSaveFormat])


Resim-13

Gördüğümüz gibi yukarıdaki sonuçta birçok format karşımıza çıkmaktadır. Kaydetmek istediğiniz formatın adını yazarak işlemi tamamlayabilirsiniz. Artık aşağıdaki kodu kullanarak dosyanızı kaydedebilirsiniz.

$SaveLocation = ‘C:\Users\Hasan GURAL\Desktop\PowershellwithWord.doc’

$Document.SaveAs([ref]$SaveLocation,[ref]$SaveFormat::wdFormatDocument)

$MSWord.Quit()


Resim-14

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Hasan Güral, Istanbul doğumlu ve uzun yıllardır bilişim sektöründe danışmanlıktan eğitmenliğe farkli pozisyonlarda görev almıştır. Üniversite eğitimiyle birlikte bilişim sektöründe Kibar Holding, Bilge Adam Bilgi Teknolojileri Akademisi ve PeakUp Bilgi Teknolojileri gibi farkli kurumlarda Kıdemli Danışman ve Eğitmen olarak sektöre yön veren projelerde yer almistir.Microsoft Azure alanında yapmış olduğu paylaşımlar ve katkılarından dolayı Microsoft Valuable Professional (Azure) unvanına hak kazanmıştır. Cloud teknolojilerinin otomasyon alaninda gelişmesiyle birlikte zamaninin bir çoğunu PowerShell, Event-Driven Orchestration, Infrastructure as a Code ve Configuration as a Code ile geçirmektedir.Kariyerine Ingiltere’de DevOps Engineer ve Automation Enthusiast rolü ile Cloud Rundle’da devam etmektedir.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (2)

  1. 26/01/2015

    Çok güzel bir makale, powershell’in yapabileceklerini görmek adına harika olmuş. Teşekkürler… :)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir