VBA ile Word'e Excel Tablosu Ekleme
Microsoft Office Microsoft Word Microsoft, Microsoft Excel Kahraman Sözcük / / April 29, 2020
Son Güncelleme Tarihi:
VBA, birden çok Microsoft Office uygulaması arasında çok sayıda işi otomatikleştirmek için kullanabileceğiniz çok güçlü bir araçtır. VBA kullanarak otomatikleştirebileceğiniz yaygın bir etkinlik, bir Word tablosuna bir Excel tablosu eklemektir.
Visual Basic for Applications (VBA), birden çok Microsoft Office uygulaması arasında çok sayıda işi otomatikleştirmek için kullanabileceğiniz çok güçlü bir araçtır. VBA kullanarak otomatikleştirebileceğiniz yaygın bir etkinlik, bir Word tablosuna bir Excel tablosu eklemektir.
Bunu yapmanın iki yolu vardır. Birincisi, Excel'den mevcut bir aralığın düz bir kopyasını ve yapıştırmasını bir Word belgesindeki yeni bir tabloya otomatikleştirmektir. İkincisi, Excel'de hesaplamalar yapmak, Word'de yeni bir tablo oluşturmak ve sonuçları tabloya yazmaktır.
Deneyebilirsin makro kaydet ancak makrolar yalnızca Word içindeki görevleri otomatikleştirmenize izin verir. Bu makalede, Excel ve Word arasında bu eylemleri otomatikleştirmek için VBA kodunu nasıl yazacağınızı öğreneceksiniz.
VBA ile Bir Excel Aralığını Kopyalayın ve Word'e Yapıştırın
Her iki örnekte de örnek bir Excel elektronik tablosuyla başlayacağız. Bu örnek, çeşitli ürünler için satınalma siparişlerinin bir listesidir.
Bu çalışma sayfasındaki tüm hücre aralığını bir Word belgesine kopyalayıp yapıştırmak istediğinizi varsayalım. Bunu yapmak için, “Word'e Kopyala” düğmesini tıkladığınızda çalışacak bir VBA işlevi yazmanız gerekir.
seçmek Geliştirici menüden seçin ve Ekle Şeritteki Kontroller grubundan. Açılır listeden ActiveX Denetimleri altındaki Düğme denetimini seçin.
Ardından, sayfanın sağ tarafındaki komut düğmesini çizin. Düğmeyi sağ tıklayıp şunu seçerek başlığı "Word'e Kopyala" olarak değiştirebilirsiniz. Özellikleri. Altyazı metnini değiştirin; yazı tipi boyutunu ve stilini güncellemek için Yazı Tipi'ni kullanabilirsiniz.
Not: Görmüyorsan Geliştirici Excel menünüzde ekleyin. seçmek Dosya, Seçenekler, Şeridi Özelleştirve seçin Tüm Komutlar açılır. Sonra hareket et Geliştirici bölmesini sağa doğru kaydırın ve işlemi tamamlamak için Tamam'ı seçin.
Kopyalama ve Yapıştırma VBA Kodunu Yazma
Artık VBA kodu yazmaya başlamaya hazırsınız. Başlamak için yeni Word'e Kopyala düğmesine basarak kod düzenleyici penceresini açın.
Aşağıda gösterildiği gibi Commandbutton1_Click () adlı bir alt yordam görmelisiniz.
Aşağıdaki kodun her bir bölümünü kopyalamak istersiniz. Kodlamaya başlamadan önce, Word'ü VBA kullanarak bilgisayarınızda kontrol etmek için Microsoft Word başvuru kitaplığını etkinleştirmeniz gerekir.
Kod düzenleyicide şunu seçin: Araçlar menüden seçin ve Referanslar. Kullanılabilir Referanslar listesinde aşağı kaydırın ve etkinleştirin Microsoft Word 16.0 Nesne Kitaplığı.
Tamam'ı seçin, kodlamaya başlamaya hazırsınız. Kodun her bir bölümünü aynı anda inceleyeceğiz, böylece kodun ne yaptığını ve nedenini anlıyorsunuz.
İlk olarak, aralığı tutacak ve Word uygulamasını kontrol etmenize izin veren değişkenleri ve nesneleri oluşturmanız gerekir.
Dim tblRange Excel Olarak. Aralık
WordApp Olarak Kelime Dim. Uygulama
Dim WordDoc Kelime Olarak. belge
Dim WordTable Kelime Olarak. tablo
Sonraki kod satırı belirli bir hücre aralığını seçer ve VBA'daki bir Excel Aralığı nesnesine kaydeder.
Set tblRange = ThisWorkbook. Çalışma Sayfaları ( "Sayfa1") Menzil. ( "A2: G44")
Ardından, Word uygulamasının bilgisayarda zaten açık olup olmadığını kontrol etmek istiyorsunuz. Bunu yapmak için VBA GetObject komutuyla özel bir "sınıf" başvurusu kullanarak Word uygulamasına başvurabilirsiniz. Word henüz açılmamışsa, sonraki satır CreateObject işlevini kullanarak başlatır. “Sonraki Hata Devam Etti” satırı, ilk GetObject işlevindeki (Word henüz açık değilse) herhangi bir hatanın programdaki sonraki satırın yürütülmesini durdurmasını önler.
Hata Durumunda Devam Ettir Sonraki
Set WordApp = GetObject (class: = "Word. Uygulama")
WordApp Hiçbir Şey Değil Sonra WordApp = CreateObject (class: = "Word'ü ayarlayın. Uygulama")
Word uygulaması başlatıldığına göre, uygulamayı kullanıcıya görünür kılmak ve kullanmak üzere etkinleştirmek istiyorsunuz.
WordApp. Görünür = Doğru
WordApp. etkinleştirme
Ardından, Word uygulamasında yeni bir belge oluşturmak istiyorsunuz.
WordDoc = WordApp'ı ayarlayın. Belgeler. Ekle
Son olarak, hücre aralığını kopyalayıp Word belgesindeki yeni bir tabloya yapıştıracaksınız.
tblRange. kopya
WordDoc. Paragraflar (1). Aralık. PasteExcelTable _
LinkedToExcel: = Yanlış, _
WordFormatting: = Yanlış, _
RTF: = False
Yukarıdaki işlevdeki anahtarlar, kaynak Excel biçimlendirmesini (Word biçimlendirmesini değil) kullanarak, zengin metin biçimini kullanmadan bağlantılı olmayan bir tablo ekleyecektir.
Son olarak, belgeden daha geniş Excel aralıklarıyla başa çıkmak için, yeni tabloyu yeni Word belgenizin kenar boşluklarına sığacak şekilde otomatik olarak sığdırmanız gerekir.
Set WordTable = WordDoc. Masalar (1)
WordTable. AutoFitBehavior (wdAutoFitWindow)
Ve şimdi işiniz bitti! Dosyayı makro etkin bir Excel dosyası (.xlsm uzantısı) olarak kaydedin. Düzenleyiciyi kapatın, orijinal Excel dosyasını tekrar kaydedin ve kodunuzu çalışırken görmek için komut düğmenizi tıklayın!
Excel Sonuçlarını VBA ile Bir Word Tablosuna Yazma
Bu sonraki bölümde, Excel'deki değerlerle ilgili hesaplamalar yapan VBA kodunu yazacak ve bunları Word'de bir tablo.
Bu örnekte, 10 satırlık veri çekeceğiz, hesaplayacağız ve Word belgesindeki bir tabloya sonuçları yazacağız. Ayrıca, orijinal tablo dört sütun içerecek ve VBA kodu bu aralıktan ilk on veri satırını çekecektir.
Tıpkı son bölümde olduğu gibi, her bölümün her birini inceleyeceğiz, böylece kodun ne yaptığını ve nedenini anlıyorsunuz.
İlk olarak, verileri tutacak değişkenleri ve nesneleri oluşturun ve Word uygulamasına yazmanıza izin verin.
Dim tblRange Excel Olarak. Aralık
Dim WrdRange Kelime Olarak. Aralık
WordApp Olarak Kelime Dim. Uygulama
Dim WordDoc Kelime Olarak. belge
Dim WordTable Kelime Olarak. tablo
Dim intRows
Dim intColumns
Dim strDate As String
Dim strItem As String
Varyant Olarak Dim IntUnits
Varyant Olarak Dim intCost
Varyant Olarak Toplam Dim Dim
Ardından, Excel aralığından okumak istediğiniz toplam sütunları ve satırları ayarlayın.
intNoOfRows = 10
intNoOfColumns = 5
Henüz açık değilse, Word'ü açacak son bölümle aynı kodu tekrarlayın.
Hata Durumunda Devam Ettir Sonraki
Set WordApp = GetObject (class: = "Word. Uygulama")
WordApp Hiçbir Şey Değil Sonra WordApp = CreateObject (class: = "Word'ü ayarlayın. Uygulama")
WordApp. Görünür = Doğru
WordApp. etkinleştirme
WordDoc = WordApp'ı ayarlayın. Belgeler. Ekle
Sonraki dört satır, yeni açılan Word belgesinin içinde bir tablo oluşturur.
Set WrdRange = WordDoc. Aralık (0, 0)
WordDoc. Tablolar. WrdRange, intNoOfRows, intNoOfColumns ekleyin
Set WordTable = WordDoc. Masalar (1)
WordTable. Sınırlar. Etkinleştir = Doğru
Son olarak, aşağıdaki döngü bu eylemleri gerçekleştirir:
- Her satır için sipariş tarihini, kalemi, birimleri ve maliyeti değişkenlere yerleştirin
- Birim zaman maliyetini (toplam satış) hesaplayın ve bunu bir değişkende saklayın
- Her sütun için, değerleri son hücrede hesaplanan toplam satış da dahil olmak üzere Word tablosuna yazın
- Sonraki satıra geçin ve yukarıdaki prosedürü tekrarlayın
İşte bu kod şöyle görünür:
İ = 1 için intNoOfRows
J = 1 için intNoOfColumns'a
J = 1 ise
strDate = tblRange. Hücreler (i + 1, j).
strItem = tblRange. Hücreler (i + 1, j + 1).
intUnits = Val (tblRange. Hücreler (i + 1, j + 2). Değer)
intCost = Val (tblRange. Hücreler (i + 1, j + 3) .Değer)
intTotal = intUnits * intCost
End If
Senaryo j'yi seçin
Vaka = 1
WordTable. Hücre (i, j). Aralık. Metin = strDate
Vaka = 2
WordTable. Hücre (i, j). Aralık. Metin = strItem
Vaka = 3
WordTable. Hücre (i, j). Aralık. Metin = intUnits
Vaka = 4
WordTable. Hücre (i, j). Aralık. Metin = intCost
Vaka = 5
WordTable. Hücre (i, j). Aralık. Metin = intTotal
Olgu Başka
Bitiş Seçimi
Sonraki
Sonraki
İlk bölümdeki "Hücreler" işlevi, Excel dışındaki hücre değerleri. Hücreler (x, y) x satırında ve y sütununda hücrenin değerini çektiği anlamına gelir.
Son bölümdeki “Hücre” işlevi, aynı satır ve sütun atamalarını kullanarak Word tablosundaki hücrelere yazar.
Bu VBA kodunu kaydettikten ve çalıştırdıktan sonra, sonuçları yeni oluşturulan Word belgenizde görürsünüz.
Gördüğünüz gibi, Excel ve Word arasında bazı yararlı otomasyonlar oluşturmak çok karmaşık değil. Sadece bilgisayarınızda hem Excel hem de Word uygulamalarını oluşturabilen ve kontrol edebilen çeşitli “nesnelerin” nasıl çalıştığını anlamak meselesidir.