• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

excel "veri al" özelliğini değişkenle nasıl kullanırım?

Katılım
19 Ocak 2009
Mesajlar
56
Excel Vers. ve Dili
excell 2003 Türkçe
Merhaba Ustalarım

Excellin veri al özelliğini bir makroya kaydederek gerekli düzenlemeler ile ihtiyacım doğrultusunda düzenlemeye çalışıyorum. Ekteki dosyada örneği mevcuttur.

Yapmak istediğim verilen tarih aralıklarında ve seçilen makinaya göre "veri al" makrosunu çalıştırmak. Bunun için aşağıdaki gibi değişken tanımlıyorum.
Dim x As String
Dim a As Date
Dim b As Date
ancak aşağıdaki satırda bunları bağlayamıyorum. Çalışmıyorlar yada hata veriyorlar.
"RE (`'2008$'`.F3='K TAŞLAMA') AND (`'2008$'`.F4>{ts '2009-04-09 00:00:00'} And `'2008$'`.F4<{ts '2009-04-16 00:00:00'})")

"K taşlama" yerine combobox taki seçili bir makina adı ( x değişkeni)
Mevcut tarihler yerine "B4" ve "C4" hücrelerine yazılan tarihleri (a ve b değişkeni) ne göre çalışmasını istiyorum.

Umarım çok fazla şey istemiyorumdur ve bana yardım edebilirsiniz..
 

Ekli dosyalar

Merhaba,

Commandbutton1.Click olayındaki kodunuzu aşağıdakiyle değiştirirseniz sorununuz çözülecektir.

Kod:
Private Sub CommandButton1_Click()
[COLOR=blue]Dim SQL As String[/COLOR]
    
    Range("A7").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.ClearContents
'
[COLOR=blue]SQL = "SELECT `'2008$'`.`*****TAKİP SİSTEMİ`, `'2008$'`.F3, `'2008$'`.F4, `'2008$'`.F5, "
SQL = SQL & "`'2008$'`.F6, `'2008$'`.F7, `'2008$'`.F8, `'2008$'`.`GENEL VERİM`, `'2008$'`.F10"
SQL = SQL & vbCrLf
SQL = SQL & "FROM `'2008$'` `'2008$'`"
SQL = SQL & vbCrLf
SQL = SQL & "WHERE (`'2008$'`.F3='" & ComboBox1.Value & "') "
SQL = SQL & "AND (`'2008$'`.F4>{ts '" & Year(Range("B4").Value) & "-"
SQL = SQL & Month(Range("B4").Value) & "-" & Day(Range("B4").Value) & " 00:00:00'} "
SQL = SQL & "AND `'2008$'`.F4<{{ts '" & Year(Range("C4").Value) & "-"
SQL = SQL & Month(Range("C4").Value) & "-" & Day(Range("C4").Value) & " 00:00:00'} "
[/COLOR]'
    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=Excel Dosyaları;DBQ=H:\***\****\****\****\****\*****Takip Sistemi.xls;Defaul"), Array( _
        "tDir=H:\T***\****\****\****\****\*****Takip Sistemi;DriverId=790;MaxBufferSize=2048;PageTimeout=5;")), Destination:=Range("A7"))
[COLOR=blue]        .CommandText = SQL[/COLOR]
        .Name = "Excel Dosyaları kaynağından sorgula"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
    Columns("C:C").Select
    Selection.NumberFormat = "m/d/yyyy"
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    Columns("I:I").Select
    Selection.NumberFormat = "0.00%"
    ActiveWindow.SmallScroll Down:=-12
    
    Range("a7").Value = "NO"
    Range("b7").Value = "MAK. ADI"
    Range("c7").Value = "TARİH"
    Range("d7").Value = "İŞ ADI"
    Range("e7").Value = "ADET"
    Range("f7").Value = "İŞİ VEREN"
    Range("g7").Value = "TAHMİN"
    Range("H7").Value = "GERÇEKLEŞEN"
    Range("I7").Value = "VERİM"
    
    Columns("A:A").EntireColumn.AutoFit
    Columns("e:e").EntireColumn.AutoFit
    Columns("g:g").EntireColumn.AutoFit
    Columns("h:h").EntireColumn.AutoFit
    Range("a1").Select
End Sub



Notlar:

1- Sadece sorunuzla ilgili kısımları kontrol edip düzenledim (Mavi olarak işaretlenen satırlar), kodun diğer kısımlarında hata v.s. var mı kontrol etmedim (SQL sorgusunu yaptığınız dosyaya sahip olmadığım için kodu çalıştırmam mümkün değil).

2- SQL string'ini oluşturduğum satırları sadece forumda kolay okunabilsin diye birkaç satır olarak düzenledim. Sonuca etki eden bir durum değil yani.
 
Eline sağlık hocam. Bu tırnak işaretleri yok mu :)
Şimdi verdiğiniz kodları uygulayarak dosyamı çalıştırdım. Ancak tek bir sorun var. Tarihler çalışmıyor. Nedeni de sanırım. b4 hücresindeki 01.04.2009 formatlı olan tarihi aşağıdaki kodun 2009-4-1 şeklinde getiriyor olması olabilir. Aradaki "0" ları alamadığı için hata veriyor. Herhangi bir ayarla bunu düzeltebilir miyiz? Bu düzeltmeyle işim son noktaya ulaşıyor :)
Tekrar teşekkürler

& Year(Range("B4").Value) & "-" & Month(Range("B4").Value) & "-" & Day(Range("B4").Value) & " 00:00:00'}
 
Sorunumu küçük bir hile çözdüm. Tarih hücresini ayrı hücrelere aşağıdaki formül ile yönlendirip kaynak olarak bunları gösterdim oldu. :)

Yardımınız için tekrar Teşekkür ederim...

=EĞER(GÜN(C4)<10;"0"&(GÜN(C4));GÜN(C4))
=EĞER(AY(B4)<10;"0"&(AY(B4));AY(B4))
 
Geri
Üst