Merhaba,
Excel dosyam var bu dosyada stok ürünleri var. Bu ürünleri toplu olarak
Access e tablo olarak aktarmak istiyorum (Stok_Yeni)
ürünleri aktarırken dosyada aynı stoktan varsa güncelleme yapmasını (adet ve fiyat alanlarını), aynı stoktan yoksa eklemesini istiyorum.
bunu makroyla yapabiliyorum fakat makroda direk dosya yolu yazılı
Excel dosyasını alıyor benim istediğim dosya yolunu seçtirmek.
sitede buna benzer konular var fakat ofis 2003 olarak bulamadım.
Konuyla alakalı yardımlarınızı bekliyorum
arkadaşlar yardımcı olacak kimse yokmu,
sadece sadece
Excel dosyasını alıp (dosya yolunu seçerek) "Stok_Yeni" tablosu olarak
Access e kaydetsede olur bunu VB koduyla yapmasını istiyorum.
sayın estapan,
bahsettiğiniz talebinize yönelik olarak;
kendi adıma geçerli olmak sureti ile eklediğiniz örnek uygulamayı inceleme imkanım olmaması gerekçesi ile,ancak yazdıklarınızdan bilgi edinerek fikir vermek amacı ile,
'NOT 1
'önce;
'mevcutta var olacak olan Stok_Yeni adlı tabloyu
'yeni güncel hali ile aktarmak için
'içeriğini temizlemek üzere tüm kayıtları silmek uygun olacaktır düşüncesi ile
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Stok_Yeni"
DoCmd.SetWarnings True
'sonra da;
'ilgili Excel uygulamasından bahsi yapılan tüm verileri aktarmak için
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Stok_Yeni", CurrentProject.Path & "\" & "excel_dosyasinin_adi.xls", True, "aktarilacak_alan_blogu"
'NOT 2
'aktarilacak_alan_blogu yazılı kısım için;
'hangi hücrelerin yer alacağı alan bloğunu aktarmak istiyorsanız ya da en son hangi sütunda kayıtlar varsa o sütunun yer alacağı o alanı yazabilirsiniz
'ÖRNEK:
'A1:Z65000 gibi
yukarıda yazılı kodları kullanmak sureti ile deneyebilirsiniz.
bilginize...iyi çalışmalar,saygılar.
Sayın Atoz112
Öncelikle cevabınız için teşekkürler.
excel dosyasının adının yazılarak değilde seçerek aktarılmasını istiyorum. Çünkü
Excel dosya isimleri değişken olacak. Acaba kodları bu şekilde yazmanız mümkünmü.
Saygılar...
sayın estapan,
Alıntı:excel dosyasının adının yazılarak değilde seçerek aktarılmasını istiyorum. Çünkü Excel dosya isimleri değişken olacak. Acaba kodları bu şekilde yazmanız mümkünmü.
ifadenize yönelik olarak;
öncelikle,
eğer referanslarınızda (ALT + F11 tuşları ile kod sayfasına geçiniz ve üst menüden TOOLS - REFERENCES ifadesini seçiniz) Microsoft Office XX.X Object Library işaretli değilse bunu işaretleyiniz.
ardından,
Dim dialog As FileDialog
Dim filePath As String
Dim fileName As String
Set dialog = Application.FileDialog(msoFileDialogFilePicker)
With dialog
.AllowMultiSelect = False
.Show
filePath = .SelectedItems.Item(1)
fileName = Right$(filePath, Len(filePath) - InStrRev(filePath, "\"))
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Stok_Yeni"
DoCmd.SetWarnings True
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Stok_Yeni", fileName, True, "A1:M65000"
End With
yukarıda yazılı kodları kullanmak sureti ile deneyiniz.
bilginize...iyi çalışmalar,saygılar.
dosyayı seçerek alma işini hallettik. Fakat alanlarda şöyle bir pröblem var.
excelden alırken Stock_kod alanı sayı olarak geliyor. Biz bu alanın metin olmasını, Stok alanı metin geliyor bu alanında sayı olmasını istiyoruz.
bu sorunu nasıl halledebiliriz.
(Stock_Kod alanı stok_kartı alanındaki StokNO ile ilişkilendirileceği için bu alanı "Metin" olarak ayarlamamız gerekiyor.)
bu konudada yardımcı olrsanız çok makbule geçer.