[VBA] Excelde Ki Sayfa Ismini Kontrol Ettirme
#1
Visual Basic
  1. Excl.Sheets.Add.Name = Me.metin1 & "-" & Me.metin2




Herkese iyi akşamlar.

Excele tabloyu aktartırırken benim belirlediğim isimde excelde sayfa oluşturtmasını sağlıyorum. Ancak bu sayfa isminin excel kitabında olup olmadığını nasıl kontrol ettirebilirim. Eğer kitapta bu isimde bir sayfa varsa uyarı versin ve işlemi durdursun veya mevcut ismin sonuna her defasında  Me.metin1 & "-" & Me.metin2 (1) şeklinde artırarak sayı eklesin.

Bunu isteme sebebim;
Excel kitabında aynı isimde sayfa olduğunda hata veriyor ve aktarma işlemini gerçekleştirmiyor.

Teşekkür ederim iyi forumlar.



  Alıntı
Bu mesajı beğenenler:
#2
aşağıdaki kodu dener misiniz?
Visual Basic
  1. Private Sub CommandButton1_Click()
  2. SyfAdi = Me.TextBox1 & "-" & Me.TextBox2
  3. SyfAdiTmp = SyfAdi
  4. SyfNo = 0
  5. Do While WorksheetExists(SyfAdiTmp) = True
  6. SyfNo = SyfNo + 1
  7. SyfAdiTmp = SyfAdi & IIf(SyfNo = 0, "", "(" & SyfNo & ")")
  8. Loop
  9. Sheets.Add.Name = SyfAdiTmp
  10.  
  11. End Sub


aşağıdaki fonksiyon sayfa varlığını kontrol eder
Visual Basic
  1. Function WorksheetExists(ByVal shtName As String, Optional wb As Workbook) As Boolean
  2. Dim sht As Worksheet
  3.  
  4. If wb Is Nothing Then Set wb = ThisWorkbook
  5. On Error Resume Next
  6. Set sht = wb.Sheets(shtName)
  7. On Error GoTo 0
  8. WorksheetExists = Not sht Is Nothing
  9. End Function





  Alıntı
Bu mesajı beğenenler:
#3
(13-01-2021, 19:46)halily demiş ki: aşağıdaki kodu dener misiniz?
Visual Basic
  1. Private Sub CommandButton1_Click()
  2. SyfAdi = Me.TextBox1 & "-" & Me.TextBox2
  3. SyfAdiTmp = SyfAdi
  4. SyfNo = 0
  5. Do While WorksheetExists(SyfAdiTmp) = True
  6. SyfNo = SyfNo + 1
  7. SyfAdiTmp = SyfAdi & IIf(SyfNo = 0, "", "(" & SyfNo & ")")
  8. Loop
  9. Sheets.Add.Name = SyfAdiTmp
  10.  
  11. End Sub


aşağıdaki fonksiyon sayfa varlığını kontrol eder
Function WorksheetExists(ByVal shtName As String, Optional wb As Workbook) As Boolean
   Dim sht As Worksheet

   If wb Is Nothing Then Set wb = ThisWorkbook
   On Error Resume Next
   Set sht = wb.Sheets(shtName)
   On Error GoTo 0
   WorksheetExists = Not sht Is Nothing
End Function




Debug dediğimde Kırmızıya boyadığım alan hatalı olarak gösteriyor.



  Alıntı
Bu mesajı beğenenler:
#4
Siz bu kodu hangi programda kullaniyorsunuz?
Çalışmanızı ekleyin inceleyelim.



  Alıntı
Bu mesajı beğenenler:
#5
access de kullanıyorum Function Kodunuda module ekledim

kullandığım butondaki kodum aşağıdadır
Visual Basic
  1. Private Sub Excele_Aktar_Click()
  2.    DoCmd.SetWarnings False
  3.    
  4.    If IsNull(Me.text3) Then
  5.    If MsgBox("xxxxxxx", vbNo, "UYARI") = vbNo Then Exit Sub
  6.    Else
  7.  
  8.        If MsgBox("Bilgileriniz Excele Aktarılsın mı?", vbCritical + vbYesNo + vbDefaultButton1, "UYARI") = vbNo Then Exit Sub
  9.        MsgBox "xxxxxxxxxxxxxxxxxx", vbDefaultButton1, "UYARI!!!"
  10.        DoCmd.OpenQuery "srg_aaaaaaaa"
  11.  
  12. Dim rs As Excel.Application
  13. Dim KTP1 As Excel.Workbook
  14. Dim SYF As Excel.Worksheet
  15.    
  16.    
  17. Set Excl = New Excel.Application
  18. With Excl
  19.  
  20.       .Application.Visible = True
  21.       .UserControl = True
  22.  
  23. End With
  24.  
  25.        Set KTP1 = Excl.Workbooks.Open(CurrentProject.Path & "\aaaaa.xlsx")
  26.  
  27.        Set Rs2 = CurrentDb.OpenRecordset("tbl_aaaaaaa")
  28.      
  29.  
  30.        Excl.Sheets.Add.Name = Me.Text1 & "-" & Me.Text2
  31.  
  32. With SYF
  33.  
  34.  
  35. On Error Resume Next
  36.  
  37.  
  38. Dim i
  39.        i = 6
  40.  
  41.  
  42.        Do Until Rs2.EOF
  43.  
  44.        Excl.Cells(i, "A") = i - 5 'Sıra Numarası verir
  45.        Excl.Cells(i, "B") = Rs2(5) ' i ile sıralı döngü sağlanır. "A" Excelin sütun adı, rs(1) tablonun sütun adı
  46.        Excl.Cells(i, "C") = Rs2(6) & " / " & Rs2(8)
  47.        Excl.Cells(i, "D") = Rs2(8)
  48.        Excl.Cells(i, "E") = Rs2(9)
  49.        Excl.Cells(i, "F") = Rs2(10)
  50.        Excl.Cells(i, "G") = Rs2(7)
  51.  
  52.  
  53.        
  54.  
  55.        i = i + 1
  56.        Rs2.MoveNext
  57.            Loop
  58.            
  59.            Rs2.Close
  60.            
  61. Excl.Range("A2").Select
  62.  
  63. DoCmd.RunMacro "Makro2"
  64.  
  65.    End With
  66.    Excl.Visible = True
  67.   Set Excl = Nothing
  68.    DoCmd.SetWarnings True
  69.   End If
  70.  
  71. End Sub





  Alıntı
Bu mesajı beğenenler:
#6
Hocam Teşekkür ederim sorunu çözdüm. "ThisWorkbook" olarak tanımdalığımızda mevcut olan kitabın sayfalarını döngüye sokmuş oluyoruz.
Ancak ben buton komutunda da dikkat edersiniz kitabı kod marifeti ile açtırıyorum. Dolayısı ile mevcut kitap olmak yerine değişiklikle gelen kitap durumunda oluyor. Kodu kullanacak arkadaşlar bu duruma dikkat etmeli.

Buna bağlı olarakda "ThisWorkBook" komutu yerine "ActiveWorkbook" olarak belirtilmesi gerekiyor.

Modüle ekleyeceğimiz kodumuz aşağıda ki gibi olması gerekiyor.

Visual Basic
  1. Function WorksheetExists(ByVal shtName As String, Optional wb As Workbook) As Boolean
  2.    Dim sht As Worksheet
  3.  
  4.    If wb Is Nothing Then Set wb = ThisWorkbook
  5.    On Error Resume Next
  6.    Set sht = wb.Sheets(shtName)
  7.    On Error GoTo 0
  8.    WorksheetExists = Not sht Is Nothing
  9. End Function



Bu paylaştığınız kodun işlemine de değinelim çünkü 2 farklı istekde bulunmuştum.

Bu kodlar excel kitabında oluşturmak istediğiniz sayfanın adı, excel kitabında var olan bir sayfa ise, sayfa isminin sonuna (1) şeklinde arttırmak sureti ile yazarak sayfayı oluşturtuyor.

Teşekkür ederim iyi forumlar.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Raporda Sayfa Altbilgisine Toplam Aldırma hegu 6 481 08-12-2025, 10:27
Son Mesaj: hegu
  Alt Rapordaki Sayfa Toplamını Alma tekinuy 6 476 08-10-2025, 22:26
Son Mesaj: tekinuy
  Bir Belgenin Yazdırılmış Olması Durumunu Kontrol Etmek Hk? adnnfrm 7 863 03-02-2024, 03:24
Son Mesaj: dsezgin
  Internet Bağlantı Kontrol zilli 19 9.377 26-01-2024, 14:43
Son Mesaj: ates2014
  Excelde 70mb Olan Veri Access 1000mb Oluyor !!! adnnfrm 1 420 26-11-2023, 11:36
Son Mesaj: dsezgin
  [FONKSiYON] Raporda Seçenekli Duruma Göre Sayfa Renklendirme Ahmet51 14 1.191 29-06-2022, 10:33
Son Mesaj: Ahmet51
  [FORM] Belli Bir Değer Göre Kaydı Saydırma Ve Kayıt Kontrol evidi 2 616 07-10-2021, 22:19
Son Mesaj: evidi
  [VBA] Tablo Bağlımı Değilmi Kontrol Etme hedefkaya 1 550 19-05-2020, 04:46
Son Mesaj: dsezgin

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar):