Sayfa 24/25 İlkİlk ... 1422232425 SonSon
Arama sonucu : 200 madde; 185 - 192 arası.

Konu: Excel Hakkında Herşey

  1. #185
    Duhul
    Oct 2010
    İkamet
    ANKARA
    Yaş
    52
    Gönderi
    10,108
    Blog Yazıları
    47

    Esas

    Sayın Objektif;
    Excel içinden CSV formatta kaydetme yöntemi kullanılabilir.
    Fakat bunun için öncelikli olarak tabloyu başka bir workbook nesnesine aktarıp o nesneyi kaydetmek lazım.
    Bu sayede aktif workbook değiştirilmemiş olur.

    İkinci yöntem ise direk csv dosya oluşturma yöntemi. Tercihim ikincisi.





    Bir UserForm oluşturuyorum: UserFormSET bunu startup içinden UserFormSET.Show ile ya da sheet üzerine ekleyeceğiniz bir butona tıklayarak çalıştırabilirsiniz.



    Kod:
    Option Explicit
    
    Private Sub ComboBoxRowID_Change()
        HeaderRowStartID = CInt(Me.ComboBoxRowID.SelText)
    End Sub
    
    Private Sub ComboBoxSheetNames_Change()
        Set SelectedWorksheet = Worksheets(Me.ComboBoxSheetNames.Text)
        SelectedWorksheet.Activate
    End Sub
    
    Private Sub CommandButtonBrowse_Click()
        If (Not GetDataFolder()) Then
            MsgBox ("Klasör seçilemedi..")
            Me.TextBoxFolderName.Text = ""
        Else
            Me.TextBoxFolderName.Text = SaveToFolder
        End If
    
    End Sub
    
    Private Sub CommandButtonSTART_Click()
        STARTSavingCSV
        Unload Me
    End Sub
    
    Private Sub CommandButtonTRY_Click()
        SaveAsCSV
    End Sub
    
    Private Sub ListBoxInterval_Change()
        TimeInterval = Me.ListBoxInterval.Text
    End Sub
    
    Private Sub UserForm_Initialize()
    Dim WS As Worksheet
        For Each WS In ThisWorkbook.Worksheets
            Me.ComboBoxSheetNames.AddItem (WS.Name)
        Next WS
        Me.ComboBoxSheetNames.ListIndex = 0
         
    Dim i As Integer
        For i = 1 To 10
            Me.ComboBoxRowID.AddItem (CStr(i))
        Next i
        Me.ComboBoxRowID.ListIndex = 0
    
        Me.ListBoxInterval.AddItem ("00:01:00")
        Me.ListBoxInterval.AddItem ("00:02:30")
        Me.ListBoxInterval.AddItem ("00:05:00")
        Me.ListBoxInterval.AddItem ("00:10:00")
        Me.ListBoxInterval.AddItem ("00:15:00")
        Me.ListBoxInterval.AddItem ("00:30:00")
        Me.ListBoxInterval.ListIndex = 2
        
    End Sub
    Bir module ekliyorum; Browse folder için;

    Kod:
    Option Explicit
    
    Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
    Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
    Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
    
    Type BrowseInfo
        hWndOwner      As Long
        pIDLRoot       As Long
        pszDisplayName As Long
        lpszTitle      As Long
        ulFlags        As Long
        lpfnCallback   As Long
        lParam         As Long
        iImage         As Long
    End Type
    
    'Browse Folder Constants
    Public Const OFN_HIDEREADONLY = &H4
    Public Const BIF_RETURNONLYFSDIRS = 1
    Public Const BIF_DONTGOBELOWDOMAIN = 2
    Public Const MAX_PATH = 260
    
    Public lngHwnd As Long
    Public blnHideReadOnly As Boolean
    
    Public Function cSHBrowseForFolder(Title As String) As String
    Dim lpIDList As Long
    Dim Path$
    Dim tBrowseInfo As BrowseInfo
        ''Title = "Select a folder."
        With tBrowseInfo
            .hWndOwner = Application.Hwnd
            .lpszTitle = lstrcat(Title, "")
            .ulFlags = BIF_RETURNONLYFSDIRS ''+ BIF_DONTGOBELOWDOMAIN
        End With
        lpIDList = SHBrowseForFolder(tBrowseInfo)
        If (lpIDList) Then
            Path = Space(MAX_PATH)
            SHGetPathFromIDList lpIDList, Path
            Path = Left(Path, InStr(Path, vbNullChar) - 1)
            cSHBrowseForFolder = Path
        End If
    End Function
    
    Public Function GetDataFolder() As Boolean
        SaveToFolder = ""
        SaveToFolder = cSHBrowseForFolder("Verilerin kaydedileceği klasörü seçin")
        If SaveToFolder = "" Then Exit Function
        GetDataFolder = True
    End Function
    Bir başka modül daha ekliyorum;

    Kod:
    Option Explicit
    
    Public SelectedWorksheet As Worksheet
    Public HeaderRowStartID As Integer
    Public SaveToFolder As String
    Public TimeInterval As String
    
    Public RowStartID As Long
    Public RowEndID As Long
    Public ColStartID As Long
    Public ColEndID As Long
    ''
    
    Function GetRowColDefinitions() As Boolean
    GetRowColDefinitions = False
        
    Dim colID As Long
        colID = 1
        
        While (Cells(HeaderRowStartID, colID) = "")
            colID = colID + 1
            If colID > 255 Then Exit Function
        Wend
        ColStartID = colID
        
        While (Cells(HeaderRowStartID, colID) <> "")
            colID = colID + 1
        Wend
        ColEndID = colID - 1
            
    Dim rowID As Long
        rowID = HeaderRowStartID
        RowStartID = rowID
        While (Cells(rowID, ColStartID) <> "")
            rowID = rowID + 1
        Wend
        RowEndID = rowID - 1
        
        GetRowColDefinitions = True
    End Function
    
    Sub SwapTableToCSV()
    
    Dim FName As String
        FName = SaveToFolder & "\" & SelectedWorksheet.Name & " " & Format(Now, "yyyy.mm.dd") & " "
        FName = FName & Format(Hour(Now), "00") & "_"
        FName = FName & Format(Minute(Now), "00") & "_"
        FName = FName & Format(Second(Now), "00") & ".csv"
        
    Dim csvFileNumber
        csvFileNumber = FreeFile
    Dim lineString As String
    
    Dim iRow As Long
    Dim jCol As Long
    
        Open FName For Output As #csvFileNumber
        For iRow = RowStartID To RowEndID
            lineString = ""
            For jCol = ColStartID To ColEndID
                lineString = lineString & SelectedWorksheet.Cells(iRow, jCol).Text
                If jCol < ColEndID Then lineString = lineString & ";"
            Next jCol
            Print #csvFileNumber, lineString
        Next iRow
        Close #csvFileNumber
    End Sub
    
    Public Sub SaveAsCSV()
        If (SaveToFolder = "") Then
            MsgBox ("Klasör seçilmedi..")
            Exit Sub
        End If
        
        If GetRowColDefinitions Then
            SwapTableToCSV
        End If
    End Sub
    
    Public Sub STARTSavingCSV()
        
        SaveAsCSV
    
    Dim starttime As String
        starttime = Now + TimeValue(TimeInterval)
        Application.OnTime starttime, "STARTSavingCSV"
        
    End Sub
    Sizin kullanıdığınız şekliyle WorkbookLoad, BeforeClose Eventlara adapte edilebilir.
    Yalnız Error Handling eklemek lazım..


    Dip Not: Aşağıdaki public tanımlamalar form içinde set edildikten boş bir sayfaya kaydedilip ana işi yapan metod içerisinde bu kayıttan okutulmalı..
    Kod:
    Public SelectedWorksheet As Worksheet
    Public HeaderRowStartID As Integer
    Public SaveToFolder As String
    Public TimeInterval As String
    
    Public RowStartID As Long
    Public RowEndID As Long
    Public ColStartID As Long
    Public ColEndID As Long
    Son düzenleme : INVENTOR; 10-02-2013 saat: 18:51.

  2. #186

    Esas

    Elinize sağlık çok teşekkür ederim yalnız kulunuzun excel bilgisi bu bilgileri işleyip yoğuracak kapasitede değil. Çok büyük bir rahatsızlık olmayacaksa bir excel dosyasına bunları kaydedip eklemeniz mümkün olabilir mi?
    Forum Kurallarını buraya tıklayarak okuyabilirsiniz

    Borsanın Altın Kuralları Md. 6: "
    Seans içinde karar vermeyin. Kararlarınızı, etkilenmeyeceğiniz bir ortamda verin. Seans anında görüşlerinize ters düşen hareketlerin planlarınızı etkilemesine izin vermeyin. Daha önce düşünmediğiniz yeni fikirler oluşturmayın. İyice incelenmeden yapılan hareketlerin genellikle zararla sonuçlandığı gözlenir."

    Forumun Altın Kuralı :
    Forumda okuduğunuz bilgileri fikir vermesi amacıyla ve mantık süzgecinden geçirerek değerlendirin. Hiç kimse sizi tanımadan size para kazandırmak heveslisi değildir. Hayatta karşılaşmadığınız ve adını soyadını dahi bilmediğiniz bir kişinin tavsiyesi ile senet almaya kalkışmayın, sonu %99 hüsran olacaktır.

    Not: Forumumuzda dini ve siyasi ile futbol taraftarlığı yazıları kabul edilmiyor.


  3. #187
    Duhul
    Oct 2010
    İkamet
    ANKARA
    Yaş
    52
    Gönderi
    10,108
    Blog Yazıları
    47

    Esas

     Alıntı Originally Posted by Objektif Yazıyı Oku
    Elinize sağlık çok teşekkür ederim yalnız kulunuzun excel bilgisi bu bilgileri işleyip yoğuracak kapasitede değil. Çok büyük bir rahatsızlık olmayacaksa bir excel dosyasına bunları kaydedip eklemeniz mümkün olabilir mi?
    Rica ederim sayın Objektif.
    Asıl sizin ellerinize sağlık, emekleriniz oldukça fazla.
    Site ile ilgili çalışanlara teşekkür ederim.

    Biraz çalıştım ve bir dosya hazırladım.

    Excel dosyayı indirme linki.. SaveAsCSV.rar
    Makro içeren Excel 97 çalışma kitabı.

    Bu kitapta yer alan sayfalara istediğinizi dahil edebilirsiniz, istediğiniz sayfayı (Worksheet) çıkartabilirsiniz.
    Sadece ilk sayfa olan "AutoSaveSettings" ismindeki sayfada herhangi bir değişiklik yapmayınız.
    Program ayarları bu sayfada yer almaktadır.

    Dosya açıldığında ilk olarak bu sayfa aktif duruma gelecek:


    "Görev Başlangıç Formunu Göster" tuşuna bastığınızda aşağıdaki form açılacak:


    Sayfalar: Çalışma kitabı içinde yer alan tüm sayfalar arası geçişler bir dropdown list içinden seçerek yapılabilmekte. Otomatik CSV dosya kaydının yapılacağı tablo bu list içinden seçtiğiniz sayfada yer alan tablo olacak.

    Tablo başlık bilgisinin bulunduğu satır: Bir CSV dosya içeriği; benim bildiğim kadarıyla; bir başlık bilgisi (header) ve o başlıkta yer alan kolon (columns) sayısı ile tanımlı. WEB üzerinden otomatik güncellenen ya da başka bir uygulamanın otomatik güncellediği sayfalarda başlık bilgisi sayfanın ilk satırında olmayabilir. Onun için kullanıcının bu uygulamaya başlık satırını tanımlaması gerek.
    Eğer başlık satırınız ilk 20 satır içinde değilse UserForm Initialize içindeki kodlardan ayarlayabilirsiniz..
    Kod:
        For i = 1 To 20 '(20 değerini artırabilirsiniz)
            Me.ComboBoxRowID.AddItem (CStr(i))
        Next i
        Me.ComboBoxRowID.ListIndex = 0
    Tablonun hangi kolondan başlayıp hangi kolonda sona erdiğine ve de tablonun toplam satır sayısına algoritma karar vermekte:
    İlk kolon: o satırda yer alan ilk boş olmayan hücre (cell - range object)
    Son kolon: o satırda yer alan boş olmayan son hücre
    Tablo satır sayısı: ilk kolonda yer alan boş olmayan son hücre.

    Otomatik kaydetme zaman aralığı: 30 saniye ile 2 saat aralığında seçim yapılabilir.
    UserForm Initialize içinde doldurulmakta. Kodlardan istediğiniz gibi ayarlayabilirsiniz.
    Kod:
        Me.ListBoxInterval.AddItem ("00:00:30")
        Me.ListBoxInterval.AddItem ("00:01:00")
        Me.ListBoxInterval.AddItem ("00:02:00")
        Me.ListBoxInterval.AddItem ("00:05:00")
        Me.ListBoxInterval.AddItem ("00:10:00")
        Me.ListBoxInterval.AddItem ("00:15:00")
        Me.ListBoxInterval.AddItem ("00:30:00")
        Me.ListBoxInterval.AddItem ("01:00:00")
        Me.ListBoxInterval.AddItem ("02:00:00")
        Me.ListBoxInterval.ListIndex = 3
    CSV dosyaların kaydedileceği klasörün belirlenmesi:
    Form üzerinde "Klasör belirleyin.." düğmesi ile C:\ ana dizini haricinde bir klasör belirleyin.


    Deneme Kaydı:
    Kodların tablo oluşturmakta bir sorunla karşılaşmadığını görmek için deneme yapın.



    Seçtiğiniz klasörde dosyanın oluşup oluşmadığını kontrol edin.


    Dosya isimleri:
    Dosya isminde;
    SeçilenÇalışmaSayfasıİsmi YIL(YYYY).AY(MM).GUN(DD) SAAT(hh)DAKİKA(mm)SANİYE(ss).csv
    formatı kullanıldı.

    Önemli not: CSV dosyalarda Liste ayıracı olarak (ListSeperator) noktalı virgü ( ; ) kullanılmıştır.

    Otomatik kaydetmeye başla:
    Deneme sonucu csv dosya istediğiniz şekilde oluşuyorsa otomatik kaydetme işine geçebilirsiniz.
    Otomatik kaydetme sürecinde kaydedilen sayfanın ismi ve başlık satırı numarası haricinde; başlık satırına kolon ekleyip çıkarmak da dahil; dosya üzerinde istediğiniz işlemi yapabilirsiniz.
    Dosya kapanışta (Workbook_BeforeClose içerisinden) kendini kaydedecektir.



    "Zamanlanmış Görevleri Durdur" düğmesine basarak aktif olan süreci durdurabilirsiniz.


    Excel dosya açık olduğu durumda ve görev aktif olduğu sürece belirlenen zaman aralığında sürekli olarak yeni csv dosya kaydetme işlemi devam edecektir.

    Excel dosyayı indirme linki.. SaveAsCSV.rar
    Makro içeren Excel 97 çalışma kitabı.

  4. #188

    Esas

    Binlerce kere teşekkür ederim, İngilizce sitelerde bulamayacağım kadar bilgili ve yardımseversiniz. Umarım bu iş için fazla zamanınızı ya da uykunuzu almamışımdır.

    Elinize sağlık tam olarak istediğim gibi olmuş. Şu an yaşanan tek problem her kayıtta farklı isim koyması.

    csv filename istenen tablo ismi + tarih + saat şeklinde. Tablo 1 2013.02.13.144838.csv gibi.

    Sadece tablo ismi olarak kalmalı ki binlerce dosya oluşmasın. Bunu da yapabiliriz değil mi ?
    Forum Kurallarını buraya tıklayarak okuyabilirsiniz

    Borsanın Altın Kuralları Md. 6: "
    Seans içinde karar vermeyin. Kararlarınızı, etkilenmeyeceğiniz bir ortamda verin. Seans anında görüşlerinize ters düşen hareketlerin planlarınızı etkilemesine izin vermeyin. Daha önce düşünmediğiniz yeni fikirler oluşturmayın. İyice incelenmeden yapılan hareketlerin genellikle zararla sonuçlandığı gözlenir."

    Forumun Altın Kuralı :
    Forumda okuduğunuz bilgileri fikir vermesi amacıyla ve mantık süzgecinden geçirerek değerlendirin. Hiç kimse sizi tanımadan size para kazandırmak heveslisi değildir. Hayatta karşılaşmadığınız ve adını soyadını dahi bilmediğiniz bir kişinin tavsiyesi ile senet almaya kalkışmayın, sonu %99 hüsran olacaktır.

    Not: Forumumuzda dini ve siyasi ile futbol taraftarlığı yazıları kabul edilmiyor.


  5. #189
    Duhul
    Oct 2010
    İkamet
    ANKARA
    Yaş
    52
    Gönderi
    10,108
    Blog Yazıları
    47

    Esas

    Rica ederim.

    Sadece "Tabloİsmi.csv" olarak: SaveAsCSVSingleFile

  6. Esas

    Benimde excel ile bir sorum olacaktı .

    Temettü oranları güncelleme için kullandığım excel ile

    Günlük hisse adı fiyat vs bilgisinin tutulduğu excel dosyam var .

    İki tane excel dosyasındaki a kolonlardaki adları eşitse .

    O günkü kapanış değerlerini alıp benim temettü excelimdeki değerleri güncellemesini istiyorum .

    Bunu nasıl yapabilirim .

    Excel bilgi yeterli olmadığı için oracle veritabanına verileri atıp çok kolay yapabiliıyorum ama excelde nasıl yaparım onu bilemiyorum .

    Yardımcı olacak arkadaşlara şimdiden teşekurler eder .

    İyi Çalışmalar dilerim .

  7. #191
    Duhul
    Sep 2009
    İkamet
    Ankara
    Gönderi
    1,040

    Esas

    Merhaba Pscyokinesis Hocam, anlattığınız tam olarak düşeyara() formülünün kullanımını tarif ediyor sanki. Ama eğer günlük dosya isimleri sürekli değişiyorsa bugün() gibi tarih formüllerinden faydalanarak her gün kullanılacak düşeyara() formülünü değiştirmek mümkün.

    Dosya isimleri ile ilgili bilgi verirseniz örnek üzerinden size bir formül yazabilirim.

    İyi haftasonları...

     Alıntı Originally Posted by Pscyokinesis Yazıyı Oku
    Benimde excel ile bir sorum olacaktı .

    Temettü oranları güncelleme için kullandığım excel ile

    Günlük hisse adık fiyat vs bilgisinin tutulduğu excel dosyam var .

    İki tane excel dosyasındaki a kolonlardaki adları eşitse .

    O günkü kapanış değerlerini alıp benim temettü excelimdeki değerleri güncellemesini istiyorum .

    Bunu nasıl yapabilirim .

    Excel bilgi yeterli olmadığı için oracle veritabanına verileri atıp çok kolay yapabiliıyorum ama excelde nasıl yaparım onu bilemiyorum .

    Yardımcı olacak arkadaşlara şimdiden teşekurler eder .

    İyi Çalışmalar dilerim .

  8. #192
    Duhul
    Oct 2010
    İkamet
    ANKARA
    Yaş
    52
    Gönderi
    10,108
    Blog Yazıları
    47

    Esas

    Topik neredeyse iki senedir sessiz kalmış.

    Yıllardır uygulamaların VBA arabirimini kullanırım fakat bu sorunu hiç yaşamamıştım.
    Office 2013 VBA menüleri uçmuş; Çince midir, Japonca mı farklı bir dil mi bilmiyorum, sorunu çözemedim bir türlü.
    Bir bilen vardır belki, bu menüleri nasıl geri getireceğim.


Sayfa 24/25 İlkİlk ... 1422232425 SonSon

Gönderi Kuralları

  • Yeni konu açamazsınız
  • Konulara cevap yazamazsınız
  • Yazılara ek gönderemezsiniz
  • Yazılarınızı değiştiremezsiniz
  •