listbox 2. kolon verisi

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Merhaba,
userform üzerinde bulunan bir listboxta 2 adet kolonum var.
1. kolona belirli bir klasördeki tüm csv dosyalarımın listesini aşağıdaki kodla (başında yıldız olan satırlar olmadan) getiriyorum. Sorunsuz.
2. kolona (tabii ki her dosyanın isminin kendi satırına, o dosyanın) A2 hücresinin ";" işaretinden önceki sayıyı getirmek istiyorum.
Listbox'un additem özelliğinde yazılacak veriyi hangi sütuna yazacağını nasıl belirleyebiliriz, yardımcı olur musunuz?
Teşekkürler.

Kod:
On Error Resume Next
Dim evn As Object
cc = "D:\alınan\tedarik"
Set evn = CreateObject("scripting.filesystemobject")
Set klasor = evn.GetFolder(cc)
For Each dosyalar In klasor.Files
    A = Split(dosyalar.Name)
        For i = 0 To UCase(A)
            ComboBox1.AddItem A(i)
            ListBox1.ColumnCount = 2
            ListBox1.ColumnWidths = "200,25"
            ListBox1.AddItem A(i)
   **         Workbooks.Open ("D:\alınan\tedarik\" & A(i))
   **         bul = Application.WorksheetFunction.Find(";", Cells(2, 1), 1)
   **         'listbox'un 2. sütunu = Left(Cells(2, 1), bul - 1)
   **         Workbooks.Close ("D:\alınan\tedarik\" & A(i)) False
            
        Next
Next
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
CSV dosyalarından bir kaç tanesini örnek olarak yüklerseniz, duruma bakabiliriz....

.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Merhaba Haluk bey,
2 tane örnek ekteki şekilde.
örnek1
örnek2
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
CSV dosyalarınız bende Excel'de açılıyor ama sütunlara dağıtılmış şekilde ......

Onları "Text - Metin" dosyası olarak değerlendirip, bir ara birşeyler yaparım, ya da başka birisi o zamana kadar size bir çözüm bulur.

Bu arada; mesajınızdaki "....başında yıldız olan satırlar olmadan " ifadenizi anlamadım. Dosyalarda yıldızlı bir satır göremedim.

Diğer taraftan, sizin istediğiniz; ListBox'da dosya isimleri ve "No" alanındaki değerlerin (196 ve 197) listelenmesini istiyorsunuz.... diye anlıyorum.

Mutabık mıyız?

.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
CSV dosyalarınız bende Excel'de açılıyor ama sütunlara dağıtılmış şekilde ......

Onları "Text - Metin" dosyası olarak değerlendirip, bir ara birşeyler yaparım, ya da başka birisi o zamana kadar size bir çözüm bulur.

Bu arada; mesajınızdaki "....başında yıldız olan satırlar olmadan " ifadenizi anlamadım. Dosyalarda yıldızlı bir satır göremedim.

Diğer taraftan, sizin istediğiniz; ListBox'da dosya isimleri ve "No" alanındaki değerlerin (196 ve 197) listelenmesini istiyorsunuz.... diye anlıyorum.

Mutabık mıyız?

.
Başında yıldızlar olan satırları sadece soru sorarken yapmak istediğime dair fikir versin anlamında koymuştum @Haluk bey. Dosyada bu yüzden yoklar.
Diğer konularda tamamen mutabıkız.
İlginize çok teşekkürler.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,644
Excel Vers. ve Dili
Pro Plus 2021
Kod:
    ListBox1.ColumnCount = 2
    ListBox1.ColumnWidths = "200,25"

    Dim pth$, FSO As Object, dosyalar As Object, sourceFile As Object, line$, say%

    pth = "D:\alınan\tedarik"
    Set FSO = CreateObject("Scripting.FilesystemObject")


    For Each dosyalar In FSO.GetFolder(pth).Files
        ComboBox1.AddItem dosyalar.Name
        ListBox1.AddItem dosyalar.Name
        say = 0
        Set sourceFile = FSO.OpenTextFile(dosyalar, 1)
        Do While Not sourceFile.AtEndOfStream
            say = say + 1
            line = sourceFile.ReadLine
            If say = 2 Then
                ListBox1.List(ListBox1.ListCount - 1, 1) = Split(line, ";")(0)
                Exit Do
            End If
        Loop
        sourceFile.Close
    Next
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Sayın @veyselemre üstadım, çok teşekkür ederim. Gayet güzel çalışıyor.
Saygılar.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Biraz özel işlerim vardı, konuyla ancak yeni ilgilenebildim ama sağolsun @veyselemre arkadaşım yardımcı olmuş.

Bununla birlikte, ADO/SQL kullanılarak hazırladığım alternatif ektedir...

.
 

Ekli dosyalar

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Sayın @Haluk üstadım, ilginiz ve değerli vaktiniz için teşekkür ederim, saygılar.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Teşekkürler.....

Bu arada bir noktayı da belirteyim; yukarıda 4 No'lu mesajımda, sizin "CSV" dosyalarınızı "TXT" uzantılı olarak çevirdikten sonra kullanacağımı söylemiş ve 8 No'lu mesajımdaki dosyayı da ona göre hazırlamıştım.

Eğer isterseniz, eklediğim dosyada aşağıdaki satırda kırmızı ile belirttiğim revizyonu yatıktan sonra kendi "CSV" dosyalarınız üzerinde deneyebilirsiniz. Hiç bir sorun olmadan, gayet güzel çalışır....

Rich (BB code):
    myFile = Dir(ThisWorkbook.Path & Application.PathSeparator & "*.csv", vbDirectory)
.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
@Haluk bey, çok teşekkür ederim. Harika çalışıyor.
Saygılar.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Yine .csv ile ilgili olduğu için öncelikle size sormak istedim @Haluk bey,

bu liste içerisinden seçtiğim bir dosyada aşağıdaki kod silsilesi ile bazı işlemler yaptırıp kaydederek kapatıyorum. Hiçbir sorun, hata vs yok.
Yalnız çok ilginç bir şekilde, öncesinde noktalı virgül olan ayraçlar, işlem sonrası virgüle dönüşüyor.

Kodlarda kapat kısmını silip kapattırmayıp incelediğimde dosya gayet güzel bir tablo halinde. Manuel olarak (farklı kaydet ile) kaydettiğimde hiçbir problem yok, noktalı virgül şeklinde kalıyor.
Denediğim ama işe yaramayan (virgüle çeviren) kod şu:

Workbooks(ComboBox1.Value).Close True

Sorunun aşağıdaki fotodaki soru olduğunu keşfettim. Bu soruya evet dedirtecek bir kod var mıdır?

229964
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sorun sanırım Excel ayarlarınız ve Windows bölgesel ayarlarınız Türkçe olduğundan kaynaklanıyor.

Normalinde, CSV dosyaları "Comma Seperated Values" olduğu için virgülle ayrılan değerler içeren dosyalardır. Eğer ayraç olarak virgül yerine başka karakter, örneğin ";" kullanılınca, o zaman ortaya böyle enteresan durumlar çıkıyor.

Sorduğunuz soruya gelirsek; kodun tamamını görmediğim için bilemiyorum ama örneğin, aşağıdaki satırı, işe yaramadığını belirttiğiniz satırdan önce yazıp;

Kod:
application.displayalerts = false
sonrasında ise;

Kod:
application.displayalerts = true
yazıp, bir deneme yapın. Olur mu, bilmiyorum....

.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,644
Excel Vers. ve Dili
Pro Plus 2021
Kod:
ActiveWorkbook.SaveAs Filename:="test.csv", FileFormat:=xlCSV, local:=True
ActiveWorkbook.Close False
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Sorun sanırım Excel ayarlarınız ve Windows bölgesel ayarlarınız Türkçe olduğundan kaynaklanıyor.

Normalinde, CSV dosyaları "Comma Seperated Values" olduğu için virgülle ayrılan değerler içeren dosyalardır. Eğer ayraç olarak virgül yerine başka karakter, örneğin ";" kullanılınca, o zaman ortaya böyle enteresan durumlar çıkıyor.

Sorduğunuz soruya gelirsek; kodun tamamını görmediğim için bilemiyorum ama örneğin, aşağıdaki satırı, işe yaramadığını belirttiğiniz satırdan önce yazıp;

Kod:
application.displayalerts = false
sonrasında ise;

Kod:
application.displayalerts = true
yazıp, bir deneme yapın. Olur mu, bilmiyorum....

.
Şu anda kodlarımda sizin verdiğiniz kodlar mevcut. Ancak sonucu virgüle çeviriyor maalesef.
Yine de teşekkür ederim.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
527
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
Üst