SpreadSheet ile raporlama hakkında.

Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Değerli Arkadaşlar
Merhaba
Şöyle bir talabim var:
Dosya açılınca ortaya çıkan UserForm5 (Veri Yönetimi Kayıt Formu) kapatıldıktan sonra, Excel tablosundaki SP1-SP2-SP3 ve parakende sayfalarında yer alan tablolardaki “D – E – J – N – O – P – Q – R – S – T – W – X” sütunlarını Form üzerine yerleştirilmiş olan SpreadSheet1 e aktarmak (Rpr2 butonu ile) ve bunu SpreadSheet1 menüsünde bulunan, “Export to Microsoft Excel” butonu ile yeni bir dosyaya aktarmak.(Zaten basınca exceli yeni bir kitap açıyor ama verileri o açılan excel kitabına aktarmak istiyorum ayrıca. Sanırım bu menü tuşu asıl bu amaca yönelik düşünülmüş) Bunu nasıl gerçekleştirebiliriz.

SpreadSheet ile ilgili aramalar yaparak bazı bilgiler aldım ama beceremedim o nedenle dosyamı ekliyorum.
İyi çalışmalar.
Saygılarımla
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
VBE'de; kodlarınızı korumaya almışsınız. İnceleme ve yardımcı olma şansımız yok.
 
Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Kusura bakmayın onu unutmuşum düzeltip tekrar ekliyorum.

Saygılarımla
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sayfadaki verileri, Spreadsheet''in activesheet'ine ilave temek için örnek bir kod aşağıda verilmiştir. Siz kendi örneğinize uyarlayınız. Bahsettiğiniz gibi komple sütunların spreadsheet'e alınması, işlem sürenizi uzatabilir.

Kod:
Spreadsheet1.ActiveSheet.Range("A1:F50").Value = _
        Sheets("Sayfa1").Range("A1:F50").Value
 
Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Anladım sayın fpc, çok saolun gösterdiğiniz yol için. Ancak sormak isterim, spreadSheet menüsündeki Export butonundan açılacak olan kitabın sheet1'ne mi aktaracak. Aksi halde ana veri tablosunun Sheet1 sayfasına aktarma yaparsa oradaki mevcut verilerin üzerine aktarma gerçekleşir.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Yukarıdaki örnek, kod bahsettiğiniz işlemin tam tersini gerçekleştirir. Yani, sayfadaki bilgileri okuyup, spreadsheet'e ilave eder.

Yapmak istediğiniz, yeni bir çalışma kitabı oluşturup, spreadsheet üzerindeki bilgileri, bu yeni açılan kitaba ilave etmekse;

Kod:
Set wb=Workbooks.add
wb.sheets(1).Range("A1:F50").Value= _
                           Spreadsheet1.ActiveSheet.Range("A1:F50").Value
Set wb=Nothing
bunu yapabilirsiniz.

Export (veya Excel'e ver) butonu ise; Yeni bir Excel Application yaratarak xml bir belge açıyor ve bilgileri oraya yazıyor. Yani, bu butona basmakla; sizin Excel çalışma sayfanızdaki bilgileri, kaybetmeniz (üzerine yazması) mümkün değil.

Burada verdiğim örnek ile Export tuşuna basmanız; aşağı yukarı aynı sonucu doğurur.
 
Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Sayın Fpc selamlar,
Yukarıdaki kod ile tablodaki verileri SpreadSheet içine alamadım, bu nedenlede Export işlemini de gerçekleştirme imkanı henüz olmadı. Gönderdiğim dosya üzerinden örneklemeniz mümkün olmaz mı?

Saygılarımla
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Userform5'in kod sayfasında; aşağıdaki değişiklikleri yapın. (Öncekileri silip, bunları yerleştirin)

CommandButton66'ın kodu aşağıdaki gibi olacak.
Kod:
Private Sub CommandButton66_Click()
Set wb = Workbooks.Add
For i = 1 To 12
    wb.Sheets(1).Cells(1, i) = Spreadsheet1.ActiveWindow.ColumnHeadings(i)
Next i
With Spreadsheet1.ActiveSheet
    wb.Sheets(1).Range("A2:L" & .Cells(1, 1).End(xlDown).Row).Value = .Range("A2:L" & .Cells(1, 1).End(xlDown).Row).Value
End With
Set wb = Nothing
End Sub
Userform'un Initialize kodları aşağıdaki gibi olacak.
Kod:
Private Sub UserForm_Initialize()
Dim i As Integer
Me.Caption = "SG VERİ YÖNETİMİ KAYIT FORMU"
For i = 1 To Worksheets.Count
    ComboBox1.AddItem Worksheets(i).Name
Next
ComboBox1.Value = ActiveSheet.Name
TextBox9.Value = Format(Date, "dd.mm.yyyy")
Dim a
ListView1.View = lvwReport
With ListView1.ColumnHeaders
    .Add , , "HAFTA", 55, 0
    .Add , , "KAYNAK", 75, 2
    .Add , , "FİRMA", 75, 2
    .Add , , "YETKİLİ", 150, 2
    .Add , , "TELEFON", 55, 2
    .Add , , "ADRES", 70, 2
    .Add , , "E-MAIL", 70, 2
    .Add , , "GÖRÜŞME TARİHİ.", 70, 2
    .Add , , "PROJE ADI", 150, 2
    .Add , , "BİTİŞ TARİHİ", 70, 0
    .Add , , "VERİLEN DÖKÜMAN.", 100, 2
    .Add , , "SEKTÖR", 70, 2
    .Add , , "AKTARILAN GRUP", 70, 2
    .Add , , "SATIŞ SORUMLUSU", 70, 0
    .Add , , "TEKLİF NO", 75, 2
    .Add , , "TEKLİF TUTARI", 75, 2
    .Add , , "KUR", 75, 2
    .Add , , "KDV", 75, 2
    .Add , , "GRÇ ORANI", 75, 2
    .Add , , "İNDİRİM", 50, 0
    .Add , , "YÜZDE", 50, 0
    .Add , , "AÇIKLAMA", 55, 2
    .Add , , "DURUM", 55, 2
    .Add , , "NEDEN", 70, 2
    .Add , , "SONUÇ", 70, 2
    End With
    ComboBox9.RowSource = "Range!a1:a6"
ComboBox3.RowSource = "Range!a7:a36"
ComboBox4.RowSource = "Range!b1:b32"
ComboBox8.RowSource = "Range!A37:A43"
ComboBox10.RowSource = "Range!a44:a52"
ComboBox2.RowSource = "Range!b37:b42"
ComboBox6.RowSource = "Range!b43:b48"
ComboBox11.RowSource = "Range!A53:A57"
ComboBox7.RowSource = "Range!A58:A59"
ComboBox12.RowSource = "Range!C1:C53"
ComboBox14.RowSource = "Range!C54:C68"
[COLOR=green]'-------- SPREADSHEET'e veri Yükleme ----------------[/COLOR]
Set ash = ThisWorkbook.ActiveSheet
sat = ash.Cells(65536, 4).End(xlUp).Row
With Spreadsheet1
     .DisplayPropertyToolbox = False
     With .ActiveWindow
          .DisplayColumnHeadings = True
          .ColumnHeadings(1) = ash.Range("D1")
          .ColumnHeadings(2) = ash.Range("E1")
          .ColumnHeadings(3) = ash.Range("J1")
          .ColumnHeadings(4) = ash.Range("N1")
          .ColumnHeadings(5) = ash.Range("O1")
          .ColumnHeadings(6) = ash.Range("P1")
          .ColumnHeadings(7) = ash.Range("Q1")
          .ColumnHeadings(8) = ash.Range("R1")
          .ColumnHeadings(9) = ash.Range("S1")
          .ColumnHeadings(10) = ash.Range("T1")
          .ColumnHeadings(11) = ash.Range("W1")
          .ColumnHeadings(12) = ash.Range("X1")
          .ViewableRange = "A1:L" & sat
     End With
     With .ActiveSheet
          .Range("A1:A" & sat).Value = ash.Range("D2:D" & sat + 1).Value
          .Range("B1:B" & sat).Value = ash.Range("E2:E" & sat + 1).Value
          .Range("C1:C" & sat).Value = ash.Range("J2:J" & sat + 1).Value
          .Range("D1:D" & sat).Value = ash.Range("N2:N" & sat + 1).Value
          .Range("E1:E" & sat).Value = ash.Range("O2:O" & sat + 1).Value
          .Range("F1:F" & sat).Value = ash.Range("P2:P" & sat + 1).Value
          .Range("G1:G" & sat).Value = ash.Range("Q2:Q" & sat + 1).Value
          .Range("H1:H" & sat).Value = ash.Range("R2:R" & sat + 1).Value
          .Range("J1:J" & sat).Value = ash.Range("S2:S" & sat + 1).Value
          .Range("I1:I" & sat).Value = ash.Range("T2:T" & sat + 1).Value
          .Range("K1:K" & sat).Value = ash.Range("W2:W" & sat + 1).Value
          .Range("L1:L" & sat).Value = ash.Range("X2:X" & sat + 1).Value
     End With
End With
Set ash = Nothing
[COLOR=green]'-----------------------------------------------------[/COLOR]
End Sub
 
Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Sayın Fpc selamlar,
çalışma için gösterdiğiniz ilgi, ayırdığınız zaman ve emekleriniz için sonsuz teşekkürler.

Ben uygulamayı programa aktardım ve çalıştı. Şu sorunlarla karşılaştım. Verileri, açılan bir Book'a aktarmak belki teorik olarak doğru ama aktarma gerçekleştiğinde veriler çizgileri olmayan hücre aralıkları gönderilen verilere uymayan bir görüntü ortaya çıkarması nedeni ile pek doğru olmadığını gördüm. Belki aktarımı daha önceden adı koyulmuş, içi tablo olarak antetleştirilmiş bir kitaba aktarılması daha doğru. Ben böyle bir excel kitabı hazırlasam ve adı Rapor 2 olsa ve sayfanın çizgilerini aralıklarını ayarlayıp onu set etsem. yukarıdaki kodlarda :Rapor2 .XLS ye akttarım yapacak şekilde nasıl bir değişikliğe gideriz. Ya da başka bir öneriniz var mı?
Saygılarımla
 
Katılım
18 Ocak 2007
Mesajlar
136
Excel Vers. ve Dili
2003 türkçe
Sayfadaki verileri, Spreadsheet''in activesheet'ine ilave temek için örnek bir kod aşağıda verilmiştir. Siz kendi örneğinize uyarlayınız. Bahsettiğiniz gibi komple sütunların spreadsheet'e alınması, işlem sürenizi uzatabilir.

Kod:
Spreadsheet1.ActiveSheet.Range("A1:F50").Value = _
        Sheets("Sayfa1").Range("A1:F50").Value
sayfa1'deki bilgileri değil de aktif olan sayfadaki bilgileri spreadsheet'e nasıl aktarabiliriz arkadaşlar.
teşekkürler
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Burada; iki seçenek karşımıza çıkıyor.

(1). Kodlara iki-üç satır daha ilave edip, şekillendirme yapmak

(2). Aktarım yapılacak kitabı önceden varolan bir şablona aktarmak... Bunun için bir xlt şablon hazırlayıp kaydedebilirsiniz.

Hangisini tercih ederseniz artık...

Marimar Cevap :
Kod:
Spreadsheet1.ActiveSheet.Range("A1:F50").Value = _
        ActiveSheet.Range("A1:F50").Value
şeklinde, kodu değiştirirseniz olur.​
 
Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Sayın Fpc
Merhaba,
Dün düzenlediğiniz
.......

With .ActiveSheet
.Range("A1:A" & sat).Value = ash.Range("D2:D" & sat + 1).Value

.......
şeklindeki kodlamaya bu kodlama yöntemi farklılık içermekte. Buna revize etmek, "İnitailze Kodlamasını tümden değiştirme gereğini doğurmaz mı?

Xlt uzantılı dosyada bir antet oluşturmak ya da bu dosyayı açmanın yolu nedir?

Saygılarımla
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sayın Fpc
Merhaba,
Dün düzenlediğiniz
.......

With .ActiveSheet
.Range("A1:A" & sat).Value = ash.Range("D2:D" & sat + 1).Value

.......
şeklindeki kodlamaya bu kodlama yöntemi farklılık içermekte. Buna revize etmek, "İnitailze Kodlamasını tümden değiştirme gereğini doğurmaz mı?
Bu söylediklerinizden hiçbirşey anlamadım. Hangi kodlama yönteminden bahsediyorsunuz ve initialize nerden çıktı?
 
Katılım
28 Haziran 2007
Mesajlar
206
Excel Vers. ve Dili
Excel 2003 İngilizce
Userform5'in kod sayfasında; aşağıdaki değişiklikleri yapın. (Öncekileri silip, bunları yerleştirin)

CommandButton66'ın kodu aşağıdaki gibi olacak.
Kod:
Private Sub CommandButton66_Click()
Set wb = Workbooks.Add
For i = 1 To 12
    wb.Sheets(1).Cells(1, i) = Spreadsheet1.ActiveWindow.ColumnHeadings(i)
Next i
With Spreadsheet1.ActiveSheet
    wb.Sheets(1).Range("A2:L" & .Cells(1, 1).End(xlDown).Row).Value = .Range("A2:L" & .Cells(1, 1).End(xlDown).Row).Value
End With
Set wb = Nothing
End Sub
Userform'un Initialize kodları aşağıdaki gibi olacak.
Kod:
Private Sub UserForm_Initialize()
Dim i As Integer
Me.Caption = "SG VERİ YÖNETİMİ KAYIT FORMU"
For i = 1 To Worksheets.Count
    ComboBox1.AddItem Worksheets(i).Name
Next
ComboBox1.Value = ActiveSheet.Name
TextBox9.Value = Format(Date, "dd.mm.yyyy")
Dim a
ListView1.View = lvwReport
With ListView1.ColumnHeaders
    .Add , , "HAFTA", 55, 0
    .Add , , "KAYNAK", 75, 2
    .Add , , "FİRMA", 75, 2
    .Add , , "YETKİLİ", 150, 2
    .Add , , "TELEFON", 55, 2
    .Add , , "ADRES", 70, 2
    .Add , , "E-MAIL", 70, 2
    .Add , , "GÖRÜŞME TARİHİ.", 70, 2
    .Add , , "PROJE ADI", 150, 2
    .Add , , "BİTİŞ TARİHİ", 70, 0
    .Add , , "VERİLEN DÖKÜMAN.", 100, 2
    .Add , , "SEKTÖR", 70, 2
    .Add , , "AKTARILAN GRUP", 70, 2
    .Add , , "SATIŞ SORUMLUSU", 70, 0
    .Add , , "TEKLİF NO", 75, 2
    .Add , , "TEKLİF TUTARI", 75, 2
    .Add , , "KUR", 75, 2
    .Add , , "KDV", 75, 2
    .Add , , "GRÇ ORANI", 75, 2
    .Add , , "İNDİRİM", 50, 0
    .Add , , "YÜZDE", 50, 0
    .Add , , "AÇIKLAMA", 55, 2
    .Add , , "DURUM", 55, 2
    .Add , , "NEDEN", 70, 2
    .Add , , "SONUÇ", 70, 2
    End With
    ComboBox9.RowSource = "Range!a1:a6"
ComboBox3.RowSource = "Range!a7:a36"
ComboBox4.RowSource = "Range!b1:b32"
ComboBox8.RowSource = "Range!A37:A43"
ComboBox10.RowSource = "Range!a44:a52"
ComboBox2.RowSource = "Range!b37:b42"
ComboBox6.RowSource = "Range!b43:b48"
ComboBox11.RowSource = "Range!A53:A57"
ComboBox7.RowSource = "Range!A58:A59"
ComboBox12.RowSource = "Range!C1:C53"
ComboBox14.RowSource = "Range!C54:C68"
[COLOR=green]'-------- SPREADSHEET'e veri Yükleme ----------------[/COLOR]
Set ash = ThisWorkbook.ActiveSheet
sat = ash.Cells(65536, 4).End(xlUp).Row
With Spreadsheet1
     .DisplayPropertyToolbox = False
     With .ActiveWindow
          .DisplayColumnHeadings = True
          .ColumnHeadings(1) = ash.Range("D1")
          .ColumnHeadings(2) = ash.Range("E1")
          .ColumnHeadings(3) = ash.Range("J1")
          .ColumnHeadings(4) = ash.Range("N1")
          .ColumnHeadings(5) = ash.Range("O1")
          .ColumnHeadings(6) = ash.Range("P1")
          .ColumnHeadings(7) = ash.Range("Q1")
          .ColumnHeadings(8) = ash.Range("R1")
          .ColumnHeadings(9) = ash.Range("S1")
          .ColumnHeadings(10) = ash.Range("T1")
          .ColumnHeadings(11) = ash.Range("W1")
          .ColumnHeadings(12) = ash.Range("X1")
          .ViewableRange = "A1:L" & sat
     End With
     With .ActiveSheet
          .Range("A1:A" & sat).Value = ash.Range("D2:D" & sat + 1).Value
          .Range("B1:B" & sat).Value = ash.Range("E2:E" & sat + 1).Value
          .Range("C1:C" & sat).Value = ash.Range("J2:J" & sat + 1).Value
          .Range("D1:D" & sat).Value = ash.Range("N2:N" & sat + 1).Value
          .Range("E1:E" & sat).Value = ash.Range("O2:O" & sat + 1).Value
          .Range("F1:F" & sat).Value = ash.Range("P2:P" & sat + 1).Value
          .Range("G1:G" & sat).Value = ash.Range("Q2:Q" & sat + 1).Value
          .Range("H1:H" & sat).Value = ash.Range("R2:R" & sat + 1).Value
          .Range("J1:J" & sat).Value = ash.Range("S2:S" & sat + 1).Value
          .Range("I1:I" & sat).Value = ash.Range("T2:T" & sat + 1).Value
          .Range("K1:K" & sat).Value = ash.Range("W2:W" & sat + 1).Value
          .Range("L1:L" & sat).Value = ash.Range("X2:X" & sat + 1).Value
     End With
End With
Set ash = Nothing
[COLOR=green]'-----------------------------------------------------[/COLOR]
End Sub

Sayın Fpc,
daha önceki yazışmalarda, yukardaki kodlamayı bana önermiştiniz. Şimdi sizin son olarak farklı bir sheete aktarım yapabilmemiz için gönderdiğiniz kodu, yukardaki gibi düzenlenmiş olan yapaıya nasıl adapte edeceğiz? onu demek istemiştim
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Eğer 11.mesajdaki kodu söylüyorsanız; ben, o kodu sizin için yazmadım ki :)

Marimar Cevap :

Kod:
Spreadsheet1.ActiveSheet.Range("A1:F50").Value = _ ActiveSheet.Range("A1:F50").Value

şeklinde, kodu değiştirirseniz olur​
.

Marimar rumuzlu arkadaşa verilen bir cevaptı. Daha önce size verdiğim kodlara bir ilave olmadı yani.

Büyük bir yanlış anlaşılma var sanırım aramızda :)
 
Üst