Visual Basıc 6, Msflexgrid'e Excel'den Veri Çekme

04/02/2021, 19:09

ikayserili

Merhaba

Benim sorum; Visual Basıc 6'da Msflexgrid'e Excel'den Veri Çekme ilgili. Baya bi araştırdım bununla ilgili türkçe bi kaynak bulamadım.
https://accesstr.net/konu-msflexgrid-dek...#pid176977 konusunda bahsettiğim şekilde, Bir excelde sutün sutün yazılı olan koordinatları programa okutmam lazım. Yardımcı olabilirmisiniz lütfen ?
birde bununla alakalı bir sorum olacak. Galiba bu sitede okudum.
Vb'de Excel kütüphanesi seçilecek galiba. X bilgisayarda microsoft ofis Excel kurulu değişse çalışmama durumu varmı ? Kurulu olması gerekiyor diye bişey okudum. Bazı kullanıcılar Başka Excel programları kullanıyor. buda sorun olabilir.

birde extradan çok küçük sorum olacak:
'-----------
Function verisayisi()
Dim vsayi As Integer
Open "c:\veri.txt" For Input As 1
Do While True
If Not EOF(1) Then
Input #1, a, b, c
List1.AddItem a
vsayi = List1.ListCount
Else
Close #1
MSFlexGrid1.Rows = vsayi + 1
Exit Function
End If
Loop
End Function


Private Sub Command1_Click()
Dim v1, v2, v3 As Double
Dim satir, sutun As Integer
verisayisi
Open "c:\veri.txt" For Input As 1
satir = 1
sutun = 0
Do While True
If Not EOF(1) Then
Input #1, v1
Input #1, v2
Input #1, v3
MSFlexGrid1.Row = satir
MSFlexGrid1.Col = sutun
MSFlexGrid1.Text = v1
MSFlexGrid1.Col = sutun + 1
MSFlexGrid1.Text = v2
MSFlexGrid1.Col = sutun + 2
MSFlexGrid1.Text = v3
satir = satir + 1
sutun = 0
Else
Close #1
Exit Sub
End If
Loop
End Sub

'--------------
Bu kodlarla TXT dosyasını okutuyorum. Burada Open "c:\veri.txt" For Input As 1 kodundan dolayı ufak bir sıkıntım var.
burada okunacak dosyayı kullanıcıya seçtirmek istesek ?
1) CommonDialog mu kullanmamız gerekli ?

2) Bu OCX bazı bilgisayarlarda olmayabiliyor. Farklı bir yol varmı ?
04/02/2021, 21:18

atoykan

Merhaba Sayın @ikayserili

(04/02/2021, 19:09)ikayserili yazdı: https://accesstr.net/konu-msflexgrid-dek...#pid176977 konusunda bahsettiğim şekilde, Bir excelde sutün sutün yazılı olan koordinatları programa okutmam lazım.
konusundaki sorunuz excelden veri almakla alakalı değil, griddeki hücreleri formatlamak ile alakalı. Elma ile armudu karıştırmayalım. Excelden veri almak başka birşey, hücreleri formatlamak bambaşka birşey. Şayet exceldeki veriyi grid'e alamıyorsanız üzerinde ciddi ciddi çalışmanız gerekmekte.
VB'de Excel ile çalışmak için evet öncelikle referanslardan Microsoft Office Interop Excel'i eklemelisiniz ve diğer kullanıcılarda da Excel yüklü olmak zorunda.
txt dosyanızı kullanıcıya seçtirmek istiyorsanız OpenFileDialog kullanmanız ve *.txt;*.rtf gibi filtrelemeniz daha doğru olur.

Sitemiz kurallarına aykırı lakin sorunuza burada çok uzun uzun cevap yazmak da mümkün olmadığından bu linkteki videoyu dikkatle inceleyin. 



Evet ne yazıkki İngilizce ve üstelik son derece kötü bir İngilizce ancak amaca hizmet eder grid'e excelden nasıl veri alacağınız, OpenFileDiaolog nasıl kullanacağınız, nasıl filtreleme yapacağınıza ilişkin çok net ve basit kodlar olması nedeni ile paylaşıyorum. Diline anlatıma değil video içeriğine kodlamaya odaklanır ve incelerseniz sorularınıza yanıt bulacağınız kanaatindeyim.
06/02/2021, 16:12

ikayserili

(04/02/2021, 21:18)atoykan yazdı: Merhaba Sayın @ikayserili

(04/02/2021, 19:09)ikayserili yazdı: https://accesstr.net/konu-msflexgrid-dek...#pid176977 konusunda bahsettiğim şekilde, Bir excelde sutün sutün yazılı olan koordinatları programa okutmam lazım.
konusundaki sorunuz excelden veri almakla alakalı değil, griddeki hücreleri formatlamak ile alakalı. Elma ile armudu karıştırmayalım. Excelden veri almak başka birşey, hücreleri formatlamak bambaşka birşey. Şayet exceldeki veriyi grid'e alamıyorsanız üzerinde ciddi ciddi çalışmanız gerekmekte.
VB'de Excel ile çalışmak için evet öncelikle referanslardan Microsoft Office Interop Excel'i eklemelisiniz ve diğer kullanıcılarda da Excel yüklü olmak zorunda.
txt dosyanızı kullanıcıya seçtirmek istiyorsanız OpenFileDialog kullanmanız ve *.txt;*.rtf gibi filtrelemeniz daha doğru olur.

Sitemiz kurallarına aykırı lakin sorunuza burada çok uzun uzun cevap yazmak da mümkün olmadığından bu linkteki videoyu dikkatle inceleyin. 



Evet ne yazıkki İngilizce ve üstelik son derece kötü bir İngilizce ancak amaca hizmet eder grid'e excelden nasıl veri alacağınız, OpenFileDiaolog nasıl kullanacağınız, nasıl filtreleme yapacağınıza ilişkin çok net ve basit kodlar olması nedeni ile paylaşıyorum. Diline anlatıma değil video içeriğine kodlamaya odaklanır ve incelerseniz sorularınıza yanıt bulacağınız kanaatindeyim.
Cevabınız ve ilginiz için teşekkür ederim öncelikle.
ben yazılımcı değilim. elektrikçiyim o yüzden sorumu tam anlatamamış olabilirim. Ama video'daki yapmak istediğim şey.
yalnız ben vb6 istedim siz vb.net paylaşmışsınız. yinede teşekkür ederim. biraz araştırmadan sonra ekteki kod'ları buldum. iyi günler. iyi çalışmalar.
09/02/2021, 23:47

ikayserili

(04/02/2021, 19:09)ikayserili yazdı: Function verisayisi()
Dim vsayi As Integer
Open "c:\veri.txt" For Input As 1
Do While True
If Not EOF(1) Then
Input #1, a, b, c
List1.AddItem a
vsayi = List1.ListCount
Else
Close #1
MSFlexGrid1.Rows = vsayi + 1
Exit Function
End If
Loop
End Function


Private Sub Command1_Click()
Dim v1, v2, v3 As Double
Dim satir, sutun As Integer
verisayisi
Open "c:\veri.txt" For Input As 1
satir = 1
sutun = 0
Do While True
If Not EOF(1) Then
Input #1, v1
Input #1, v2
Input #1, v3
MSFlexGrid1.Row = satir
MSFlexGrid1.Col = sutun
MSFlexGrid1.Text = v1
MSFlexGrid1.Col = sutun + 1
MSFlexGrid1.Text = v2
MSFlexGrid1.Col = sutun + 2
MSFlexGrid1.Text = v3
satir = satir + 1
sutun = 0
Else
Close #1
Exit Sub
End If
Loop
End Sub

'--------------
Merhaba
ihtiyaçtan dolayı yukarıdaki kodlarla alakalı olarak, sütün sayısını 4'e çıkarmam gerekti.
malum kodlara c'nin yanına d ve v3'ün yanına v4'ü ve ayrıca
MSFlexGrid1.Col = sutun + 3

MSFlexGrid1.Text = v4

gibi eklemeleri yaptım. programı çalıştırdığımda,
10/02/2021, 00:12

ikayserili

Function verisayisi()
Dim vsayi As Integer
Open "c:\veri.txt" For Input As 1
Do While True
If Not EOF(1) Then
Input #1, a, b, c
List1.AddItem a
vsayi = List1.ListCount
Else
Close #1
MSFlexGrid1.Rows = vsayi + 1
Exit Function
End If
Loop
End Function


Private Sub Command1_Click()
Dim v1, v2, v3 As Double
Dim satir, sutun As Integer
verisayisi
Open "c:\veri.txt" For Input As 1
satir = 1
sutun = 0
Do While True
If Not EOF(1) Then
Input #1, v1
Input #1, v2
Input #1, v3
MSFlexGrid1.Row = satir
MSFlexGrid1.Col = sutun
MSFlexGrid1.Text = v1
MSFlexGrid1.Col = sutun + 1
MSFlexGrid1.Text = v2
MSFlexGrid1.Col = sutun + 2
MSFlexGrid1.Text = v3
satir = satir + 1
sutun = 0
Else
Close #1
Exit Sub
End If
Loop
End Sub

'--------------
Merhaba
ihtiyaçtan dolayı yukarıdaki kodlarla alakalı olarak, sütün sayısını 4'e çıkarmam gerekti.
malum kodlara c'nin yanına d ve v3'ün yanına v4'ü ve ayrıca
MSFlexGrid1.Col = sutun + 3

MSFlexGrid1.Text = v4

gibi eklemeleri yaptım. programı çalıştırdığımda,


Format 1) "koordinatlar arası ayırıcı ifade virgül"
hjhj,668575.97,4267305.26,1415.44
bu dosyayı okumakta sorun olmamaktadır.

tekrar çalıştırdıktan sonra 2ci denememde

Format 2) "koordinatlar arası ayırıcı ifade boşluk"
aaa 668575.97 4267305.26 1415.44
bu dosyayı okumamaktadır kodlar hata vermektedir. Hata Verdiği kısım:
Input #1, a, b, c, d

kodlarının bulunduğu kısımdır. kodları incelediğimde:
a) 4267305.26
b) 1415.44
c) aaa 668575.97 4267305.26 1415.44
d) BOŞ uyarısı çıkıyor.
şeklinde oluyor. bu hatayı nasıl düzeltebilirim ?



not: kodları visual basıc 6 olarak yardımcı olursanız sevinirim. "vb.net" bilmiyorum.
not: aynı sorunun devamı olduğu için yeni konu açmak istemedim.