TreeView'i Menü olarak kullanma!!!

Katılım
19 Ocak 2005
Mesajlar
940
Excel Vers. ve Dili
İŞ : Microsoft Office Excel 2003
EV : Microsoft Office Excel 2003
Arkadaşlar öncelikle iyi çalışmalar dilerim. İlk kez kullandığım nesnelerden biri olan TreeView'i bir nevi Menü olarak kullanmak istiyorum. Ancak bu menüde seçim yapıldığı zaman belirlemiş olduğum Userform ların aktif hale gelmesini istiyorum. Bu konuda benzer örnek kodlar buldum bunu anlattığım şekilde nasıl düzenliyebilirim?
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kod:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    With Node
        If .Children = False Then
          Select Case Node.Index
            Case 2: UserForm2.Show
            Case 3: UserForm3.Show
            Case 4: UserForm4.Show
          End Select
        End If
    End With
End Sub

Private Sub UserForm_Initialize()
    Dim oNode As Node
    With TreeView1
            Set oNode = .Nodes.Add(, , "W" & z, ThisWorkbook.Name)
            oNode.Expanded = True
            .Nodes.Add "W" & z, tvwChild, , "UserForm2"
            .Nodes.Add "W" & z, tvwChild, , "UserForm3"
            .Nodes.Add "W" & z, tvwChild, , "UserForm4"
    End With
End Sub
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
ocamsul ellerine sağlık, çok güzel olmuş ve benimde çok işime yarayacak.

Ben bu fikir üzerine biraz daha kendime geliştirme yapmaya çalıştım ancak başarılı olamadım.

Benim derdim;

Treeview ile istenilen sheet e gidildiğinde o sheeti otomatik olarak maille yollayabilmek. Bunun için ekteki çalışmayı yaptım ama nedense çalışmıyor.

Daha doğrusu treeview ile gidilen sheeti workbooktan ayırıyor ancak içine bizim formun bulunduğu sayfayı yapıştırıyor ve maillede yollamıyor.

Ekte dosya var ve benim kodlarım var. Mail adındaki butona tanımladım. İlgilenen bir arkadaş olursa çok makbule geçecek.

iyi akşamlar
 
Son düzenleme:
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
Anemos daha öncede sen çözüm getirdiğin için senden yardım istesem. Mail gönderme işlemini yaptırmamız mümkünmü? Tabi yardım edebilecek diğer arkadaşlarda olursa çok sevinirim
 
Katılım
19 Ocak 2005
Mesajlar
940
Excel Vers. ve Dili
İŞ : Microsoft Office Excel 2003
EV : Microsoft Office Excel 2003
SN: anemos, üsdat çok teşekkür ederim. Tam olarak buydu. Sağolun.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
anemos ilgilendiğin için teşekkürler. Ancak zaten benim gönderdiğim dosyada commandbuton içerisine eklediğim mail gönderme kodu diğer dosyalarımda sorunsuz çalışıyor.

Bu dosyada çalışmama sebebi tamamen treewiev ile seçtiğim sheete gittiğinde o sheeti seçili saymaması. Birde makronun treewiev dosyasında olması ve gidilen workbook u kumanda edememesi sorunu var.

Dosyayı açıp denedinizmi bilmiyorum ama kod kendince doğru çalışıyor. Ancak istediğim sheeti mail içerisine koyup göndermede yukarıdaki engellere takılıyor.

Yardımcı olabileceğiniz bir konu ise ve yardımcı olabilirseniz gerçekten çok sevinirim
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
ben excelde bir sürü dosya açık çalışmak zorunda olanlardanım ve bu program gerçekten mail atabilirsem işime çok yarayacak. Yukarıda göndermiş olduğum dosyam ve sorum ile ilgili yardımcı olabilirseniz sevinirim
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
Arkadaşlar ne kadar uğraştımsa boşa çıktı bir türlü treeview kullanarak gittiğim sheeti mail atmayı başaramadım. Benim için çok büyük kolaylık olabilecek bu durum için lütfen yardım edin.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sorunuzun anlaşılması açısından soruyorum
siz ağaç nesnesinde seçili çalışmasayfasını yeni bir kitap olarak kaydedip... elmek.xls olarak göndermek mi istiyorsunuz?
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
öncelikle ilgilendiğiniz için teşekkürler.

aynen sizin söylediğiniz gibi olacak. Hatta ben göndermiş olduğum dosyanın içerisine bir kod eklemiştim. Ağaç nesnesinden gidilmiyor olsaydı o kod çalışıyordu. Ben ağaç nesnesinden seçtiğimde ise bir türlü o çalışmasayfasını görmüyor.

Belki başka bir kodla veya benim koduma ilave bir yazılımla bu işi başarabileceğimizi düşünüyorum.

Yardım ederseniz sevinirim
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
hsayar bu konuda bir çözüm bulunabilirmi? Yardımcı olabilirmisiniz?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
bende acemiyim önce öğrenip sonra yaparınm bir şeyler arşatırıyorum.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Düzeltilmiştir.... trewiwv de sayfayı aktif eden satır kapalı kalmış.
Gönderildi mesajı eklendi.

Kod:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    With Node
        If .Children Then
        Else
            If Workbooks(.Parent.Text).Windows(1).Visible Then
                Workbooks(.Parent.Text).Sheets(.Text).Activate
            Else
                MsgBox "HATA"
            End If
        End If
    End With
End Sub
Kod:
Private Sub UserForm_Initialize()
   Dim g, h, oMappe As Workbook, oNode As Node, z
  With TreeView1
      For Each g In Workbooks
          z = z + 1
           Set oMappe = g
         Set oNode = .Nodes.Add(, , "W" & z, oMappe.Name)
          oNode.Expanded = True
          For Each h In oMappe.Sheets
             Set oNode = .Nodes.Add("W" & z, tvwChild, , h.Name)
           Next h
   Next g
  End With
End Sub
Kod:
Private Sub CommandButton2_Click()
'******************************************************
'* Sadece Aktif sayfayı MS Outlook ile yollamak için  *
'* yapılmış bir çalışmadır                            *
'* Micosoft Outlook X.0 referansı eklenmelidir !      *
'* Burası Excel vadisi ...                            *
'* Raider ®                                           *
'* Subat 2005                                         *
'******************************************************
'<<<<<<<<<<<<<<<<<<<<<<<KONTROLLER>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    'Aktif internet ba&#287;lant&#305;s&#305; varm&#305; kontrol et.
    If TestInternetConnection = False Then
        MsgBox "BA&#286;LANTI YOK": Exit Sub
    End If
    
    'Micosoft Outlook X.0 referans&#305; yoksa ekler....
    Dim bool As Boolean
    strRefPath = "C:\Program Files\Microsoft Office\OFFICE11\msoutl.olb" 'ADO
    bool = False
    For Each ref In ThisWorkbook.VBProject.References
        If ref.fullPath = strRefPath Then bool = True
    Next
    If bool = False Then ThisWorkbook.VBProject.References.AddFromFile (strRefPath)
    
    'Nesne Kontrol
    For Each nsn In Controls
    If TypeName(nsn) = "TextBox" Then  ' NESNENIN ADI YAZILACAK
        If nsn.Value = "" Then
            aa = Replace(nsn.Name, "txt", "lbl")
            MsgBox Controls(aa).Caption & " Textboxu Bo&#351; B&#305;rak&#305;lamaz!"
            nsn.SetFocus: Exit Sub
        End If
    End If
    Next nsn
    'MsgBox "kontroller tamamland&#305;.":    Exit Sub
'<<<<<<<<<<<<<<<<<<<<<<<&#304;&#350;LEMLER>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Dim OutApp As Outlook.Application
    Dim NewMail As Outlook.MailItem
    Dim ShName As String, WbName As String
    Dim i As Integer
   ' Aktif Sayfay&#305; yeni kitaba kopyala ve kapat
    ShName = ActiveSheet.Name:                  Sheets(ShName).Copy
    WbName = "C:\" & ShName & ".xls":           ActiveWorkbook.SaveAs WbName
    Workbooks(ShName & ".xls").Close SaveChanges:=True

   'Olu&#351;turulan kitab&#305;  e-mail ile g&#246;nder
    Set OutApp = New Outlook.Application
    Set NewMail = CreateItem(olMailItem)
    
    StrKime = txtKime.Value
    strKonu = txtKonu.Value
    strMsj = txtMsj.Value
    
    With NewMail
        .To = StrKime '"xxxxx@hotmail.com"
        .Subject = strKonu '"Deneme"
        .Body = strMsj '"Bu e-mail deneme amac&#305;yla g&#246;nderilmi&#351;tir."
        .Attachments.Add WbName
        .Save
        .Send
    End With
    
    'Tamamland&#305; mesaj&#305;:
    MsgBox StrKime & " adresine" & ShName & " sayfas&#305; g&#246;nderildi."
    'olu&#351;turulmu&#351; de&#287;i&#351;&#351;ken ve dosyalar&#305; sil....
    Set NewMail = Nothing:    Set OutApp = Nothing
    Kill WbName
End Sub
&#351;u anda dosya ekleyemiyorum.

siz &#246;nce 3 lbl, 3 texbox ekleyin

name lerinide

a&#351;a&#287;&#305;daki gibi d&#252;zenleyin
lblKime / txtKime
lblKonu / txtKonu
lblMsj / txtMsj




sonra bir modul ekleyip a&#351;a&#287;&#305;daki kodlar&#305; yap&#305;&#351;t&#305;r&#305;n

Kod:
Option Private Module
Declare Function InternetCheckConnection Lib "wininet.dll" _
        Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, _
        ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
       
Declare Function InternetGetConnectedStateEx Lib "wininet.dll" _
       (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, _
        ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
'
Dim RunWhen As Double
Const RunWhat = "CheckInternetState"
'
Sub Auto_Open()
    Call CheckInternetState
End Sub
'
Sub StartTimer()
    RunWhen = Now + TimeSerial(0, 5, 0)
    Application.OnTime earliesttime:=RunWhen, Procedure:=RunWhat, Schedule:=True
End Sub
'
Sub StopTimer()
    On Error Resume Next
    Application.OnTime earliesttime:=RunWhen, Procedure:=RunWhat, Schedule:=False
End Sub
'
Sub Auto_Close()
    Call StopTimer
End Sub
'
Sub CheckInternetState()
Dim RetVal As Long
Dim strConn As String * 255
   ' Range("A1") = Empty
   ' Range("B1") = "Checking ...."
    If TestInternetConnection = True Then
     '   Range("A1") = TestInternetConnection
        RetVal = InternetGetConnectedStateEx(RetVal, strConn, 254, 0)
     '   Range("B1") = strConn
        Call StopTimer
        Exit Sub
    End If
    'Range("A1") = TestInternetConnection
    'Range("B1") = "No connection !"
    Call StartTimer
End Sub
'
Function TestInternetConnection() As Boolean
    'Adapted from :
    'KPD-Team 2001
    'URL: http://www.allapi.net/
    If (InternetCheckConnection("http://www.allapi.net/", &H1, 0&) = 0) Then
        TestInternetConnection = False
    Else
        TestInternetConnection = True
    End If
End Function

NOT: benim &#351;imid farketti&#287;im ve a&#351;amad&#305;&#287;&#305;m bir sorun var:
xxxx@yyy.zzz elmek g&#246;nderildikten sonra outloku ba&#351;lat demeden elmekler adrrese teslim edilmiyor.
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,354
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Yap&#305;da "TestInternetConnection" fonksiyonu mevcut de&#287;il.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sonunda dosyay&#305;da ekledim..... mod&#252;l&#252;de ekledim.
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
hsayar iki g&#252;nd&#252;r &#351;ehir d&#305;&#351;&#305;nda oldu&#287;um mesaj&#305;n&#305; yeni g&#246;rd&#252;m. Ger&#231;ekten &#231;ok u&#287;ra&#351;m&#305;&#351;s&#305;n te&#351;ekk&#252;rler. Program&#305; denedim ancak tam olarak isteneni yapt&#305;ramad&#305;m. Mail g&#246;nderirken formun oldu&#287;u sheeti g&#246;nderiyor. Ben ise treview dan se&#231;ti&#287;im sheeti g&#246;ndermek istiyorum. Bu programla bunu ba&#351;aram&#305;yorum. Birde art&#305;k treeview se&#231;ilen sheete gitmiyor. Sende de bu sorun oluyormu bilmiyorum?

Belki bu mesaja bakan arkada&#351;lar merak ediyorlard&#305;r sorunu k&#305;saca anlatmak istiyorum;

treeview kullanarak se&#231;ilen sheete gitmek ve i&#231;eri&#287;i g&#246;rmek, o gidilen sheeti istersek maille (ms outlook) g&#246;nderebilmek (yeni mail a&#231;arak, i&#231;erisine dosyay&#305; yap&#305;&#351;t&#305;rmak &#351;eklindede olabilir. Subject, body k&#305;s&#305;mlar&#305; filan sonradan doldurulabilinir).

Benim ilk yollad&#305;&#287;&#305;m dosyada mail g&#246;nderme kodu var ancak Treeview ile istedi&#287;imiz sheete gidebiliyoruz ancak gitti&#287;imiz sheeti se&#231;ili hale getiremiyorum. Getirsek bile , kod treeview kay&#305;tl&#305; oldu&#287;u dosyada oldu&#287;undan se&#231;ili dosyaya mail g&#246;nder komutunu verdiremiyorum.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
ilk &#246;nce a&#351;a&#287;&#305;daki kodlar&#305; de&#287;i&#351;tirin

Kod:
Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    With Node
        If .Children Then
        Else
            If Workbooks(.Parent.Text).Windows(1).Visible Then
                Workbooks(.Parent.Text).Sheets(.Text).Activate
            Else
                MsgBox "HATA"
            End If
        End If
    End With
End Sub
olmazsa 4. mesajdaki kodlar&#305;n t&#252;m&#252;n&#252; kopyalay&#305;n yeniden yap&#305;&#351;t&#305;r&#305;n. bende farkettim sadece kodlar&#305; yazd&#305;m. dosya eklemedim.
 
Katılım
24 Haziran 2005
Mesajlar
142
Excel Vers. ve Dili
excel 2003 ing
kodlar&#305; de&#287;i&#351;tirdim ve art&#305;k program &#231;al&#305;&#351;&#305;yor. Harikas&#305;n hsayar, ellerine sa&#287;l&#305;k.

g&#252;zel bir g&#252;n dilerim
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
est... forumdan &#246;&#287;rendiklerimiz....
 
Üst