Kopyalama ve taşıma işlemlerinde şu metodlar kullanılabilir:

 

Hücre içeriğini kopyalamak için

Excelnesnesi.Range("Kaynak Sütun:Kaynak Satır").Copy(Excelnesnesi.Range("Hedef Sütun :Hedef Satır"))

Şeklinde bir yöntem kullanılır. 

 

Hücre içeriğini taşımak için

Excelnesnesi.Range("Kaynak Sütun:Kaynak Satır").Cut(Destination:= Excelnesnesi.Range ("Hedef Sütun :Hedef Satır"))

Şeklinde bir yöntem kullanılır. 

 

İşlemler bittikten sonra hafızayı temizlemek için

        Excelnesnesi.CutCopyMode = False

Şeklinde bir komut satırı kullanılır.

 

Hücre, satır, sütun kopyalama ve taşıma işlemlerine dair örnek uygulama yapalım Form üzerine bu işlemler için kullanacağımız cmdhucrekopyala, cmdsatirkopyala, cmdsutunkopyala, cmdsayfayakopyala, cmdhucretasi adıyla 5 adet komut butonu ekliyoruz. Kodumuz da şu şekilde olacak:

 

Public Class Form1

    Dim xl

    'Excell nesnesi tanımlıyoruz

    Dim range

    'Range nesnemizi tanımlıyoruz

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'Excel nesnesini oluşturuyoruz

        xl = CreateObject("Excel.Application")

        'Yeni bir çalışma kitabı ekliyoruz

        xl.Workbooks.add()

        'Excel sayfasını görüntülüyoruz

        xl.application.visible = True

        '1 nolu çalışma sayfasını aktif ediyoruz            

        xl.worksheets(1).Activate()

        'A1 hücresine değer yazıyoruz       

        xl.cells.Range("$A$1") = "15"

        xl.cells.Range("$A$2") = "20"

        xl.cells.Range("$B$1") = "25"

        xl.cells.Range("$B$2") = "30"

    End Sub

    Private Sub satirkopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles satirkopyala.Click

        '1 nolu satırı 4 nolu satıra kopyaladık

        xl.Range("1:1").Copy(xl.Range("4:4"))

    End Sub

   

    Private Sub hucrekopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hucrekopyala.Click

        'A1 hücresini E4 hücresine kopyaladık

        xl.Range("$A$1").Copy(xl.Range("$E$4"))

    End Sub

 

    Private Sub sutunkopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sutunkopyala.Click

        'A sütununu F sütununa kopyaladık

        xl.Range("A:A").Copy(xl.Range("F:F"))

    End Sub

 

    Private Sub hucretasi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hucretasi.Click

        'A1 ve B1 hücrelerini keserek D1 hücresine taşıyoruz

        xl.range("A1" & ":B" & 1).Cut(Destination:=xl.range("D" & 1))

        'clipboard'u temizleyelim

        xl.CutCopyMode = False

    End Sub

 

    Private Sub cmdsayfayakopyala_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsayfayakopyala.Click

        Dim i

        '1 nolu satırdaki 10 sütun içerisinde arama yaparak hücre             

        ‘içerisindeki değer 10'dan büyük ise 2 nolu çalışma

        ‘sayfasına kopyalıyor

        For i = 1 To 10

            If CInt(xl.cells(i, 1).value) > 10 Then

                xl.rows(i & ":" & i).copy(xl.worksheets(2).range(i & ":" & i))

            End If

        Next i

    End Sub

End Class

 

Proje dosyamızın linki:

http://www.volkanaktas.com/PrgDosya/vba/excelkopyalatasi.rar

Etiketler : VB.Net VBA Excel
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Seçim işlemleri için Select metodu kullanılır.

 

Satır seçmek için

        Excelnesnesi.Rows("Sütun adı ").Select()

şeklinde bir yöntem kullanılabilir.

Sütun seçmek için

        Excelnesnesi.Columns("Sütun adı ").Select()

şeklinde bir yöntem kullanılabilir.

Hücre seçmek için

        Excelnesnesi.Cells.Range("$Sütun adı $Satır numarası ").Select()

şeklinde bir yöntem kullanılabilir.

 

Bunların dışında Excel hücresine erişim konusunda belirttiğimiz erişim metodlarını kullanmamız da mümkündür.

 

Seçme işlemlerine dair bir örnek uygulama yapalım. Form üzerine 3 adet buton ekliyoruz.

 

Public Class Form1

    Dim xl

    'Excell nesnesi tanımlıyoruz

    Dim range

    'Range nesnemizi tanımlıyoruz

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles satırsec.Click

        xl.worksheets(1).Activate()

        '1 nolu satırı seçtik

        xl.Rows("1:1").Select()

    End Sub

 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'Excel nesnesini oluşturuyoruz

        xl = CreateObject("Excel.Application")

        'Yeni bir çalışma kitabı ekliyoruz

        xl.Workbooks.add()

        'Excel sayfasını görüntülüyoruz

        xl.application.visible = True

        '1 nolu çalışma sayfasını aktif ediyoruz           

        xl.worksheets(1).Activate()

        'A1 ve B1 hücrelerine değer yazıyoruz

        xl.cells(1, 1).value = "1.değer"

        xl.cells(1, 2).value = "2.değer"

        'Hücre isimlendirmede diğer bir yöntemde range nesnesidir 

        xl.cells.Range("$C$1") = "Deneme"

    End Sub

 

    Private Sub sutunsec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles sutunsec.Click

        xl.worksheets(1).Activate()

        'C sütununu seçtik 

        xl.columns("C").select()

    End Sub

 

    Private Sub hucresec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles hucresec.Click

        xl.worksheets(1).Activate()

        'C1 hücresini seçtik 

        xl.cells.range("$C$1").select()

        'Ya da 

        'xl.cells(1, 3).select()

    End Sub

End Class

 

 

Örneğimizde de görüldüğü gibi hücre adreslerini yazarken örneğin C1 hücresini belirtmek için   xl.cells(1, 3)  ifadesi kullanılabileceği gibi range nesnesi kullanılarak xl.cells.Range("$C$1") ifadesi de kullanılabilir.

Proje dosyasının linki:

http://www.volkanaktas.com/PrgDosya/vba/excelsecme.rar

Etiketler : VB.Net VBA Excel
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Örneğimiz için form üzerine bir adet komut butonu ekleyelim ve şu kodları yazalım:

 

Public Class Form1

    Dim xl

    'Excell nesnesi tanımlıyoruz

    Dim range

    'Range nesnemizi tanımlıyoruz

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        If CInt(xl.Range("$A$1").value) > 10 Then

            xl.Range("$A$1").Font.Color = QBColor(2)

        Else

            xl.Range("$A$1").ClearFormats()

        End If

    End Sub

 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        'Excel nesnesini oluşturuyoruz

        xl = CreateObject("Excel.Application")

        'Yeni bir çalışma kitabı ekliyoruz

        xl.Workbooks.add()

        'Excel sayfasını görüntülüyoruz

        xl.application.visible = True

        '1 nolu çalışma sayfasını aktif ediyoruz           

        xl.worksheets(1).Activate()

        'A1 hücresine değer yazıyoruz       

        xl.cells.Range("$A$1") = "15"       

    End Sub

End Class

 

xl.Range("$A$1").Font.Color = QBColor(2) komut satırında QBColor(2) komutunu kullanarak hücrenin yazı rengini yeşil olarak değiştirdik. QBColor komutunun aldığı tüm renk parametreleri şunlardır:

  

QBCOLOR ()

 

0

Siyah

8

Gri

1

Mavi

9

Açık Mavi

2

Yeşil

10

Açık Yeşil

3

Cyan

11

Açık Cyan

4

Kırmızı

12

Açık Kırmızı

5

Eflatun

13

Açık Eflatun

6

Sarı

14

Açık Sarı

7

Beyaz

15

Açık Beyaz

 

Projemizin linki:

http://www.volkanaktas.com/PrgDosya/vba/excelkosullubicimlendirme.rar

Etiketler : VB.Net VBA Excel
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Excel ile ilk uygulamamızda bir excel hücresine değer yazma uygulaması yapalım. Öncelikle form üzerine bir adet komut butonu ekleyelim. Kod olarak da şunları yazalım:

 

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim xl

        xl = CreateObject("Excel.Application") 'Excel nesnesi oluşturuyoruz

        xl.Workbooks.add() 'Yeni bir çalışma kitabı ekliyoruz

        xl.application.visible = True 'Excel sayfasını görüntülüyoruz

        xl.worksheets(1).Activate() '1 nolu çalışma sayfasını aktif ediyoruz

        xl.cells(1, 1).value = "Deneme" 'A1 hücresine değerimizi yazıyoruz

    End Sub

End Class

 

Programımızı çalıştırdığımızda A1 hücresine Deneme yazıldığını görürüz.

xl.cells(1, 1) ifadesinde ilk değer satırı, ikinci değer ise sütunu belirtmektedir.

 

Projenin dosyasının linki:

http://www.volkanaktas.com/PrgDosya/vba/exceldegeryaz.rar

Etiketler : VB.Net VBA Excel
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Örneğimizde programlarımızda msagent nesnesi ile ofis yardımcılarını kullanacağız. Bir Windows Application açıp ToolBox'ta sağ tıklayıp Choose Items seçeneğini tıklayalım. COM komponentlerinden Microsoft Agent Control komponentini ekleyelim.

Agent Load

1.Şekil: Microsoft Agent Control komponentinin eklenmesi

Biz örneğimizde genie isimli ofis yardımcısını kullandık bu ve daha fazla ofis yardımcısını http://www.microsoft.com/msagent/downloads/user.asp#character  adresinden seçerek indirebilirsiniz.

Daha sonra form üzerine bir text kutusu bir tane de komut butonu ekleyelim.

Agent Form

2.Şekil: Tasarım formu

ToolBox'ımıza Microsoft Agent Control komponenti eklenecektir. Sürükleyip formumuzun üzerine bırakalım. Yukarıdaki şekilde görülen şapkalı adam resmi Agent kontrolümüzdür.

Daha sonra kodumuzu aşağıdaki gibi yazalım;

Public Class Form1

    Dim Genie As AgentObjects.IAgentCtlCharacter

    Const DATAPATH = "genie.acs"

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Genie.Show()

        Genie.Speak(TextBox1.Text)

        Genie.Hide()

    End Sub

 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        AxAgent1.Characters.Load("Genie", DATAPATH)

        Genie = AxAgent1.Characters("Genie")

        Genie.LanguageID = &H409

        TextBox1.Text = "Hello World!"

    End Sub

End Class

 

Proje dosyasının linki:

http://www.volkanaktas.com/PrgDosya/vba/msagent.rar

 

Bu ve diğer karakterlerle ilgili kullanabileceğiniz diğer animasyon ve işlemler için

http://download.microsoft.com/download/2/1/8/2183fc41-9313-4624-9e9e-25d26d0f7e19/docs.zip linkindeki yardım dosyasını kullanabilirsiniz.

Kaynak:MSDN

 

Etiketler : VB.Net VBA
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Bir veri tabanından alınan verileri word’a aktarma işlemini yapacağız. Formumuza bir adet text kutusu, bir adet de komut butonu ekleyelim. Daha sonra text kutusunun özelliklerinden data bindings bölümündeki advanced seçeneğine tıklayalım. Açılan pencerede binding bölümünden Add Project Data Source seçeneğine tıklayalım.

Gelen pencerede Database seçeneğini seçip next düğmesine basalım.

 

New Connection düğmesini tıklayalım.

 

Gelen pencerede Microsoft Access Database seçeneğini seçip Continue düğmesine basalım.

 

Gelen pencereden veritabanımızı seçelim ve OK butonuna basalım.

 

Karşımıza ana pencere veri tabanımızın türü, ismi ve yolu yazılı olarak gelecektir. Burada next düğmesine tıklayalım.

Karşımıza veri tabanının projede local olarak yer almasını isteyip istemediğimizi soran bir pencere gelecektir. Bu soruya evet diyelim.

Karşımıza oluşturduğumuz connection string’i kaydetmek isteyip istemediğimizi soran bir pencere gelir.

Gerekli ismi verip Next düğmesine tıkladığımızda karşımıza dataset içerisinde hangi tablo ve alanların kullanılacağının seçildiği bir pencere gelir. Burada kullanmak istediğimiz tablo ve alanları seçerek finish düğmesine basarak veri tabanı bağlama işlemini bitirmiş oluruz.

Formumuzu açıp bir adet komut butonu ekleyelim. İlgili alanı formumuza eklemek için Data menüsünden Show Data Sources ile projemize eklediğimiz veri tabanındaki alanların görüntülendiği Data Sources penceresini görüntüleriz.

Buradan soru alanını fare ile formumuza sürükleyip bıraktığımızda bir label ve text kutusu otomatik olarak oluşturularak gerekli veri bağlantıları kurulacaktır. DataSource penceresinde ki her nesneyi, sağlanan seçenekleri kullanarak sürükle bırak yöntemi ile forma taşıyabilirsiniz.

 

Şimdi kod yazımına geçebiliriz.  

Öncelikle,"System.Data.OleDB" ad uzayını programımıza dahil etmemiz gerekmektedir bunun için kod editörümüzün en üst satırına(ilk satır) aşağıdaki kod satırını yazalım;

 

Imports System.Data.OleDb

 

Daha sonra butonumuzun Click olayına aşağıdaki kod ile "OleDbConnection" nesnesi oluşturalım;

 

 

Dim sorgulama As String = "SELECT DISTINCT soru FROM sorubank"

 

        Dim baglantim As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\vba\vbdotnet\mdb2word\sorubank.mdb;")

 

 

         Bu işlemden sonra,"OleDbConnection" nesnesini kullanarak "yeninesne" isminde  bir "OleDbCommand" oluşturalım ve ikinci satırda veritabanı bağlantımızı aktif hale getirelim;

 

 

Dim yeninesne As New OleDbCommand(sorgulama, baglantim)

 

 baglantim.Open()

 

 

         Şimdi,"verioku" isimli bir "OleDataReader" tanımlayalım bir sonraki satırda "OleDbCommand" nesnesinin "ExecuteReader" metodunu kullanarak tablo yapısını oluşturalım.

 

 

Dim verioku As OleDbDataReader

 

verioku = yeninesne.ExecuteReader()

 

 

         Son olarak "OleDbDataReader" nesnesinin "Read" metodunu kullanarak veritabanımızın önceden belirtmiş olduğumuz tablosundaki veriyi alalım ve yine "OleDbDataReader" nesnesinin "GetString" metodunu kullanarak metin kutusu içerisine yerleştirelim ve veritabanı baglantımızı pasif hale getirerek işlemimizi sonlandıralım.

 

 

 

 While verioku.Read()

 

      TextBox1.Text = TextBox1.Text & verioku.GetString(0) _

 

         & ControlChars.CrLf

 

End While

verioku.close()

 

baglantim.close()

 

 

Sonuç olarak kodumuz şu şekilde olacak:

 

Imports System.Data.OleDb

Public Class Form1

 

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim j As Byte

        Dim sorgulama As String = "SELECT DISTINCT soru FROM sorubank"

 

        Dim baglantim As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\vba\vbdotnet\mdb2word\sorubank.mdb;")

 

        Dim yeninesne As New OleDbCommand(sorgulama, baglantim)

 

        baglantim.Open()

 

        Dim verioku As OleDbDataReader

 

        verioku = yeninesne.ExecuteReader()

        j = 0

        While verioku.Read()

            j = j + 1

            SoruTextBox.Text = SoruTextBox.Text & "S-" & j & ")" & verioku.GetString(0) & ControlChars.CrLf

 

        End While

 

        verioku.Close()

 

        baglantim.Close()

    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim objWord As Object

        Dim objDocument As Object

        Dim yol As String

 

        objWord = CreateObject("Word.Application")

        objDocument = objWord.Documents.Add

 

        objWord.Visible = True

 

        objDocument.Range.InsertBefore(SoruTextBox.Text)

 

        yol = Application.LocalUserAppDataPath

        objDocument.SaveAs(yol & "\sorular" & ".doc")

 

        ChDir(yol)

 

        objDocument.Close()

        objWord.Quit()

 

        objDocument = Nothing

        objWord = Nothing

        MsgBox("Sorular WORD'a aktarıldı!")

 

    End Sub

End Class

Proje dosyasının linki (İçerisinde veri tabanı dosyası da mevcuttur):

http://www.volkanaktas.com/PrgDosya/vba/mdb2word.rar

Etiketler : VB.Net VBA
Kategoriler : VB.Net VBA
Yorumlar : 0 Yorum Yorum Yaz

Örneğimiz bir klasördeki word belgeleri içinde istediğimiz bir kelimeyi aratıp o kelime bulunduğunda belgeyi açarak bulunduğu yeri işaretliyor. Örneğimizi referans kullanma yöntemi ile yaptım. Dolayısı ile Project menüsünden Add Reference seçeneği ile gelen pencereden COM başlığı altından Microsoft Word 11.0 Object Library seçeneği seçip OK tuşuna basıyoruz.

 

Daha sonra formumuza bir adet drivelist nesnesi, bir adet dirlist kontrolü, bir adet filelist kontrolü, iki adet de komut butonu ekleyelim. Ekran tasarımı şu şekilde olacak:

 

Kod ise şu şekilde:

 

Public Class Form1

 

    Private Sub cmdiptal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdiptal.Click

        End

    End Sub

 

    Private Sub DirListBox1_Change(ByVal sender As Object, ByVal e As System.EventArgs) Handles DirListBox1.Change

        FileListBox1.Path = DirListBox1.Path

    End Sub

    Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged

        DirListBox1.Path = DriveListBox1.Drive

    End Sub

 

    Private Sub cmdtamam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdtamam.Click

        Try

            Dim aranan, belge

            Dim WordApp As Microsoft.Office.Interop.Word.Application 'word uygulamasını tanımlıyoruz

            Dim WordDoc As Microsoft.Office.Interop.Word.Document 'word belgesini tanımlıyoruz

 

            aranan = InputBox("Aranan metni giriniz", "Arama")

            If aranan = "" Then Exit Sub

 

            Me.Hide()

 

            WordApp = CreateObject("Word.Application") 'Word uygulamasını oluşturuyoruz

            WordApp.Visible = True 'word belgesini görünür yapıyoruz

            belge = Dir(FileListBox1.Path & "\*.doc")  'seçilen klasördeki word belgelerini aratıyoruz

            While belge <> ""

                'Klasördeki word belgelerini sırayla açıyoruz

                WordDoc = WordApp.Documents.Open(FileListBox1.Path & "\" & belge)

 

                WordApp.Selection.HomeKey(Unit:=6) 'Belgemizi sonuna kadar seçiyoruz

                'Daha önceden tanımlanmış olan bulma parametrelerini temizliyoruz

                WordApp.Selection.Find.ClearFormatting()

 

                With WordApp.Selection.Find

                    'Bulma parametrelerini tanımlıyoruz

                    .Text = aranan

                    .Forward = True

                    .Wrap = 0

                    .Format = False

                    .MatchCase = False

                    .MatchWholeWord = False

                    .MatchWildcards = False

                    .MatchSoundsLike = False

                    .MatchAllWordForms = False

                End With

 

                'Bulma işlemini başlatıyoruz

                WordApp.Selection.Find.Execute()

                If WordApp.Selection.Find.Found = True Then

                    Exit Sub

                End If

                belge = Dir()

                'Eğer bulunamadı ise belgeyi kapatıyoruz

                If WordApp.Selection.Find.Found = False Then

                    WordDoc.Close() 'Word belgesini kapatıyoruz

                End If

            End While

            If WordApp.Selection.Find.Found = False Then

                WordDoc.Close() 'word belgesini kapatıyoruz

                MsgBox("Aranan metin bulunamadı")

            End If

            WordApp.Quit() 'Word uygulamasını kapatıyoruz

 

            WordDoc = Nothing 'Word belgesini bellekten siliyoruz

            WordApp = Nothing 'Word uygulamasını bellekten siliyoruz

        Catch

            MsgBox("Aranan yazı veya dosya bulunamadı")

            Exit Sub

        End Try

    End Sub

End Class

 

 

selection.HomeKey(Unit:=6, Extend:=0) ifadesi seçimi belgenin başına taşımak ya da genişletmek için kullanılır ve kullanımı şu şekildedir:

   ifade.HomeKey(Unit, Extend)

 

Şu değerler bu ifade içerisinde kullanılabilir.

Eğer   Extend yerine wdExtend ya da 1 yazılırsa seçim genişletilir, wdMove ya da  0 yazılırsa seçim taşınır.

 

Unit ise üzerinde işlem yapılacak birimi belirler ve şu değerleri alabilir:

wdUnits tipleri

Sabit                                            Değer

wdCell                                      12

wdCharacter                              1

wdCharacterFormatting               13

wdColumn                                 9

wdItem                                    16

wdLine                                     5

wdParagraph                             4

wdParagraphFormatting              14

wdRow                                     10

wdScreen                                  7

wdSection                                 8

wdSentence                              3

wdStory                                    6

wdTable                                   15

wdWindow                                11

wdWord                                    2

 

Biz örneğimizde wdStory ya da 6 rakamını kullandık

WdFindWrap işlemi ise aranan metin bulunamazsa ne yapılacağını belirler

 

WdFind tipleri

SAbit                                 Value                     Anlamı

wdFindAsk                   2                      Aramaya devam edilip edilmeyeceği kullanıcıya sorulur.

wdFindContinue          1                      Aramaya belgenin başından veya sonundan devam edilir.

wdFindStop                                   0                                     Arama işlemi bitirilir.

 

Son olarak proje dosyasının linkini vereyim:

http://www.volkanaktas.com/PrgDosya/vba/wordarama.rar

Etiketler : VB.Net VBA
Kategoriler : VB.Net VBA
Yorumlar : 1 Yorum Yorum Yaz
Arama
  Ara
Takvim
<September 2010>
SMTWTFS
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
Tag Bulutu