İlginizi Çekebilir
  1. Ana Sayfa
  2. Server 2012
  3. Powershell İle Office Word Kullanımına Giriş

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

Bu ilk makalemiz de ile Microsoft üzerine çeşitli metinler gönderirken font ve stillerini nasıl değiştirebiliriz hakkında bilgi vereceğim. Powershell ile Microsoft uygulamasının beraber kullanmak için Powershell içerisinde COM Objesini yaratmamız gerekmektedir. Ben bu yazımız içerisinde 2013 versiyonu kullanıyor olacağım. Kullanmış olduğum methodlar sizin 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”‘. 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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

Hasan Güral, Profesyonel olarak 5 senedir bilişim sektöründe çalışmaktadır. Üniversite eğitimiyle birlikte sektörde sistem uzmanı pozisyonunda görev yaptı. Halen Bilge Adam Bilgi Teknolojileri Akademisi'nde Danışman olarak çalışmaktadır. Microsoft ürün ailesi ve network altyapıları ile ilgilenmektedir.

Yorum Yap

Yorumlar (2)

  1. 4 sene önce

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