• DİKKAT

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

Veri aktarma?

Katılım
16 Ekim 2007
Mesajlar
166
Excel Vers. ve Dili
EXCEL 2003 TR
Merhaba;

STOK sayfasında C sütunundaki ürünlere çift tıklayınca ALIŞ sayfasının ilk boş satırına (B19 dolu ise B20) gönderebiliyorum.

Burada benim yapmak istediğim Q1 hücresindeki seçime (alış ya da satış) göre C sütunundaki stok listesinde üzerine çift tıkladığım ürünün ilgili sayfadaki B sütununun ilk boş satırına (B19 dolu ise B20)'ye yazmasını istiyorum.

İlginize şimdiden teşekkürler...
 

Ekli dosyalar

Dosyanız ektedir.:cool:
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim sat As Long, sat2 As Long, sh As Worksheet
sat = Cells(65536, "C").End(xlUp).Row
If Intersect(Target, Range("C2:C" & sat)) Is Nothing Then Exit Sub
On Error GoTo 10
Cancel = True
Set sh = Sheets(CStr(Range("Q1").Value))
sat2 = sh.Cells(65536, "B").End(xlUp).Row + 1
If sat2 >= 65533 Then
    MsgBox Range("Q1").Value & " İsimli sayfada satır doldu.Kyıt girilmedi", vbCritical, "UYARI"
    Exit Sub
End If
sh.Cells(sat2, "B").Value = Target.Value
10
End Sub
 

Ekli dosyalar

Yokmu derdime çare olan bir kod..

Merhaba Evren bey. birde şu dosyaya baksanız. dünden beri uyku uyuyamıyorum.bunu acil bir şekilde halletmem lazım ama ben yapamıyorum :(

ya kapalı olan dosyadan veriyi dolaylı olarak almama bir çare bulun ya da Açık.xls açıldığında arka planda gizli bir şekilde Kapalı.xls i açtıracak bir çare bulun. Çünkü Açık.xls kitabına aldığım verileri mecburen Dolaylı() kullanarak almalıyım ama Kapalı.xls açık olmazsada #başv! hatası alıyorum. Örnekte daha iyi anlarsınız. Bir el atıverin rica ediyorum.

Saygılar.
 

Ekli dosyalar

Kod:
Function KapalidanAl(Yol As String, Sayfa As String, Hucre As String) As String
'www.excelvba.net
Dim Bag As ADODB.Connection
Dim KS As ADODB.Recordset
Dim Sorgu As String
Dim Alinan As String
Set Bag = New ADODB.Connection
Set KS = New ADODB.Recordset
Sorgu = "Select * From [" & Sayfa & "$" & Hucre & ":" & Hucre & "]"
Bag.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & Yol & ";" & "Extended Properties=""Excel 8.0;HDR=No"";"
Set KS = Bag.Execute(Sorgu)
If Not KS.EOF Then
    Alinan = KS.GetString
    KapalidanAl = Left(Alinan, Len(Alinan) - 1)
End If
Bag.Close
Set KS = Nothing
Set Bag = Nothing
End Function

Arkadaşlar internette istediğim şeye yakın bir kod buldum ancak bu kodu yalnızca bir hücre değerini almakta kullanabiliyorum yani örnek dosyada bulunana göre konuşursam bu kodla kapalı dosyadan 'C:\[Kapali.xls]Sayfa1'!$D$4 değerini alabiliyorum ama ben TOPLA('C:\[Kapali.xls]Sayfa1'!$A$1:$A$3) değerini almak istiyorum ama yapamıyorum. Bari buna birileri yardım edebilirse çok memnun olacağım. iki gündür uğraşıyorum bunu yapabilmek için.

Saygılarımla. . .
 

Ekli dosyalar

Kod:
TOPLA('C:\[Kapali.xls]Sayfa1'!$A$1:$A$3) değerini almak istiyorum ama yapamıyorum. Bari buna birileri yardım edebilirse çok memnun olacağım. iki gündür uğraşıyorum bunu yapabilmek için.

Saygılarımla. . .[/QUOTE]

Öyle desenize.Konuyu öyle karmaşık anlatıyorsunuz ki kimse çözmeye yanaşmıyor.Bende dahil.
Aşağıdaki kod işinizi görür.:cool.
[CODE]Sub kapali_topla()
Dim i As Byte, tpl As Double
On Error Resume Next
For i = 1 To 3
    tpl = tpl + Application.ExecuteExcel4Macro("'C:\[Kapali.xls]Sayfa1'!R" & i & "C1")
Next
MsgBox "A1:A3 toplamı : " & tpl
End Sub
 
evren bey çok teşekkür ediyorum ama benim amacım toplam almak değildi. Bunu örnek olsun diye söylemiştim. yani Topla() formülünde bir hücre aralığı kullanılıyor değil mi? veya düşeyarada yine bir hücre aralığı belirtilecektir yani tablo dizini örn: A1:E100 gibi. işte ben bu kod ile sadece bir hücre değerini alabiliyorum. A1 veya E100 ama ben istiyorum ki kapalı olanda iki sütun aralığını aldırayım. Yada bu iş böyle olmayacak siz bana özel mesajla telefon numaranızı yollasanızda hem tanışmış olsak hemde ben sizi arayıp derdimi anlatsam :)

Çok önemli bir durum olduğu için yani olabilirse tabi telefonla anlatmam çok memnun olurum.

Saygılar...
 
evren bey çok teşekkür ediyorum ama benim amacım toplam almak değildi. Bunu örnek olsun diye söylemiştim. yani Topla() formülünde bir hücre aralığı kullanılıyor değil mi? veya düşeyarada yine bir hücre aralığı belirtilecektir yani tablo dizini örn: A1:E100 gibi. işte ben bu kod ile sadece bir hücre değerini alabiliyorum. A1 veya E100 ama ben istiyorum ki kapalı olanda iki sütun aralığını aldırayım. Yada bu iş böyle olmayacak siz bana özel mesajla telefon numaranızı yollasanızda hem tanışmış olsak hemde ben sizi arayıp derdimi anlatsam :)

Çok önemli bir durum olduğu için yani olabilirse tabi telefonla anlatmam çok memnun olurum.

Saygılar...
Toplamı alınacak 2 sütun aralığı neresidir.Hangi sütunlardır?
Kodu hemen o şeklde düzenleyebilirim.:cool:
 
Evren Bey toplam alma falan yok. Ben Toplam alma örnek olsun diye söyledim. Amacım tam anlamıyla şu.

Kapalı olan 4 adet dosyam var. Bunlar; Kasa, Nakliye, Akaryakıt ve Taşeron hesabı diye xls dosyaları. Bunların kayıtları günlük girilerek tutuluyor ancak Kasa da giriş yaparken harcamalar sınıflara ayrılıyor. Muhtelif ise m, gıda ise g gibi harflerle belirtiliyor. Akaryakıta daha gelemedim bile. neyse işte ben bu 4 dosyayı bir üst dizinde tek bir excel de göstermek istiyorum ve bunuda bir şekilde düşeyara formülünü kullanarak yapıyorum ancak bu bahsettiğim 4 xls dosyalarımın hepsinin içerisinde 12 sayfa bulunuyor ve bunlarda her ay için ayrı sayfa oluyor.

Ben genel xls dosyamdada 12 ayrı sayfa açıp tek tek dökümünü alabiliyorum ama bu seferde xls dosyamın boyutu 50 mb oluyor. Bu dosya şantiyelerden Merkez büromuza günlük aktarılıyor ve patronumuz bu benim hazırlayacağım Genel.xls dosyasından herşeyi görmek istiyor ama bir şantiyenin Genel.xls i 50 mb olursa ve 4 ayrı şantiyemiz olduğunu düşünürsek işi zora koşarız.

Bu nedenle bende Genel.xls de tek bir sayfada Ay'ı seçtirerek hücreye veri alınacak Ayın adını yazdırıp ordan da dolaylı() formülünü kullanarak Ocak ise Ocak, Şubat ise Şubat verilerini aldırıyorum ama bunu yapabilmesi için bildiğiniz gibi veri alınan kasa.xls ve diğerleride açık olması lazım. Çünkü kapalı olunca Dolaylı() fonksiyonu #BAŞV! hatası veriyor. Benim yapmaya çalıştığım bu 4 xls dosyam kapalı iken Genel.xls de aldığım verileri görebilmek.

Yani uzun lafın kısası bu kapalıdanal() KTF si ile tek bir hücreyi alabiliyoruz ancak benim işime hücre aralığını alma yarar. Yani düşeyara(1;'C:\[Kapali.xls]Sayfa1'!$A$1:$A$3;1) veya TOPLA('C:\[Kapali.xls]Sayfa1'!$A$1:$A$3) gibi fonksiyonları kapalı dosyadan alabilmek istiyorum ama bunu Dolaylı() fonksiyonu ile yapmam gerekiyor.

Umarım bu sefer derdimi dile getirebilmişimdir.

Tam olarak nasıl bir çalışma yaptığımı daha iyi anlatmak için örneği gerçeğine en yakın hale getirdim evren bey. bir incelerseniz çok sevinirim.
 

Ekli dosyalar

Son düzenleme:
illa fonksiyonmu olsun.
Buton ile olsa işinize yaramazmı?
Ayrıca yukarıda verdiğiniz düşeyeara fonksiyonu yanlış.:cool:
 
benim excel bilgimle ancak o kadar düşey arayabiliyorum evren bey :) belki şu anda benim yaptığım uygulamaları siz görseniz höh.! dersiniz ama düşeyaradaki yanlışlık nerede? onuda anlayamadım. düşeyaradığım sayfanın kenarına g ve m ler için dikkat ettiyseniz birer sütunluk bir formülle sayıları girdirip o sayıları düşey aratıp sonrada karşılığındaki değerleri yazdırıyorum. Yanlışlık yok ama fazla dolambaçlı derseniz haklısınız ama bende dediğim gibi bildiğim excel ile ancak bu kadarını yapabiliyorum. sizin gibi olabilseydim şimdi burada iki gündür aç ve uykusuz çareler ararmıydım :)

Fonksiyonla olursa benim için daha iyi olur çünkü fonksiyon biliyorum. yani ilerde bir ekleme olayı olsa müdahele edebilirim ama buton olursa sanırım kodlar girer devreye ve bende bilmediğim için müdahele edemem. Sizi yormak gibi olmazsa kafanızda tassarladığınız şey ne ise yollayın.

oda olmazsa sizdn ricam bana şu aşağıdaki kodla bn Açık.xls ile birlikte diğer sayfalarımı açtırıyorum ama açtıktan sonra o açılan sayfaların gizlenmesini, daha sonrada Açık.xls kapatılınca gizlendikleri yerden kendilerini kaydedip kapanmalarını sağlayabilirseniz ben bildiğim yoldan gerisini halledebilirim. bunu yaparsak böylece kapalı olan dosyalarımız açılacak ve benim dolaylı() ile aldığım değerlerde görünecektir diye düşünüyorum. umarım anlatabilmişimdir.
 
Ben dosyanıza bakmadım.Oradaki düşeyara fonksiyonları için demedim.Üstte verdiğiniz mesajdaki düşeyara fonksiyonu yanlış.Onu söylemiştim.
Orada aranılacak ölçüt belirtilmemişti.:cool:
 
Evren hocam ben çözümü buldum.

Kod:
Sub auto_open()
Application.ScreenUpdating = False
Dim ds, dc, f, s
Set ds = CreateObject("Scripting.FileSystemObject")
Set f = ds.GetFolder(ThisWorkbook.Path & "\dosya")
Set dc = f.Files
For Each dosya In dc
Workbooks.Open dosya
Workbooks("Açık").Activate
Next
Application.ScreenUpdating = True
Windows("a").Visible = False
Windows("b").Visible = False
Windows("c").Visible = False
Windows("d").Visible = False
End Sub

Sub auto_close()
Application.DisplayAlerts = False
Workbooks("a").Close True
Workbooks("b").Close True
Workbooks("c").Close True
Workbooks("d").Close True
End Sub

Bu kodla klasörümdeki 4 excel dosyasını açtırıp gizletiyorum. ancak sizden son bir ricam olacak.

gizli sayfalardan birini buton yardımı ile açtırabilirim ama sonra bu açılan sayfayı kapatacak olursak, Açık.xls i kapattığımızda yukarıdaki kod hata vermektedir. Sebebi ise ben auto_close ile sadece kapattırabildim. Bu kapatma komutunu dosyanın kapalı olup olmadığına bakarak yaptırabilirseniz çok sevinirim. Böylece dosya kapatırkenki sorunumda çözülecektir. Şimdiden teşekkürler ve saygılar sunarım.
 
Son düzenleme:
Teşekkürler Evren Bey tam istediğim gibi olmuş
Emeğinize sağlık...
 
Geri
Üst