• DİKKAT

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

Belirli Kolonları XML e aktarma

Katılım
13 Şubat 2020
Mesajlar
34
Excel Vers. ve Dili
2019
Selamlar Arkadaşlar,

Malum excelde yazılım güncelleme vs olmuyor... Ürün tablomuz var ürün ismi, maliyeti vs bunlar hep aynı... Biz excelde değişiklik yapıyoruz (tasarım, içerik vs) neredeyse her 3 ayda bir.. fakat ürün kodu, ürün ismi ve maliyet vs değişmiyor.... hesaplama alanları değişiyor sadece... Biz buton yapıp XML e aktar dediğimizde ürün kodları,ürün isimleri ve maliyetleri vs XML e aktarsın istiyoruz... Yeni exceli açınca orada da xml den aktar olacak... oraya bastığımızda o xml deki verileri anyı şekilde yapıştıracak...

Ben şehir isim ve plaka olarak yaptım deneme için.


En azından bu şekilde her yeni excelde excelden excele kopyala yapıştır yapmamış oluruz...

Şimdiden Allah razı olsun destekleriniz için...

Saygılarımla,

(umarım böyle bişey mümkündür bilmiyorum)
 

ismailem

https://asrisaadetyolu.blogspot.com/
Katılım
5 Haziran 2012
Mesajlar
106
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
19-10-2023
Sub XML_Aktar()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Urunler")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Dim xmlDoc As Object, root As Object, urun As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")

Set root = xmlDoc.createElement("Urunler")
xmlDoc.appendChild root

Dim i As Long
For i = 2 To lastRow
Set urun = xmlDoc.createElement("Urun")

urun.appendChild xmlDoc.createElement("UrunKodu")
urun.LastChild.Text = ws.Cells(i, "A").Value

urun.appendChild xmlDoc.createElement("UrunAdi")
urun.LastChild.Text = ws.Cells(i, "B").Value

urun.appendChild xmlDoc.createElement("Maliyet")
urun.LastChild.Text = ws.Cells(i, "C").Value

root.appendChild urun
Next i

xmlDoc.Save ThisWorkbook.Path & "\Urunler.xml"
MsgBox "XML Aktarımı Tamamlandı", vbInformation

End Sub

Sub XML_Iceri_Aktar()

Dim xmlDoc As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")

xmlDoc.Load ThisWorkbook.Path & "\Urunler.xml"

Dim urunler As Object
Set urunler = xmlDoc.SelectNodes("//Urun")

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Urunler")

ws.Range("A2:C" & ws.Rows.Count).ClearContents

Dim i As Long
For i = 0 To urunler.Length - 1
ws.Cells(i + 2, 1).Value = urunler(i).SelectSingleNode("UrunKodu").Text
ws.Cells(i + 2, 2).Value = urunler(i).SelectSingleNode("UrunAdi").Text
ws.Cells(i + 2, 3).Value = urunler(i).SelectSingleNode("Maliyet").Text
Next i

MsgBox "XML'den Aktarım Tamamlandı", vbInformation

End Sub
 

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
588
Excel Vers. ve Dili
LTSC Pro Plus 2024 Türkçe
Altın Üyelik Bitiş Tarihi
15.06.2027
Merhabalar,

Öğrenmek için soruyorum.
Yeni exceli açınca orada da xml den aktar olacak... oraya bastığımızda o xml deki verileri anyı şekilde yapıştıracak...
Bunu nasıl yapacaksınız anlatabilir misiniz? Benimde listem var başka excel dosyalarında kullanmam lazım...
 

ismailem

https://asrisaadetyolu.blogspot.com/
Katılım
5 Haziran 2012
Mesajlar
106
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
19-10-2023
Personal xlsb dosyasını
%appdata%\Microsoft\Excel\XLSTART
klasörüne ekleyiniz. Windows Ara kutusuna %appdata%\Microsoft\Excel\XLSTART bunu yapıştırınız size klasörü açacaktır. bu dosyayı yapıştırınız.
 

netzone

Altın Üye
Katılım
10 Mayıs 2006
Mesajlar
840
Excel Vers. ve Dili
🅾🅵🅵🅸🅲🅴
⎝2024 64 Bit 𝙏𝙍⎠
🆆🅸🅽🅳🅾🆆🆂
⎝11 64 Bit 𝙏𝙍⎠
Altın Üyelik Bitiş Tarihi
12-09-2027
Merhabalar,

Öğrenmek için soruyorum.
Yeni exceli açınca orada da xml den aktar olacak... oraya bastığımızda o xml deki verileri aynı şekilde yapıştıracak...
Bunu nasıl yapacaksınız anlatabilir misiniz? Benimde listem var başka excel dosyalarında kullanmam lazım...
Merhaba,

Verilen koda bakıldığında 2 adet makro olduğu ve bunlardan 1'i dışarı aktarırken diğeri ise içeri aktarırken kullanılacağı görünüyor.
*Yeni açtığınız dosyanıza içeri aktar makrosunu eklemeniz ve dosya ile aynı yere kayıt etmeniz sonucu içeri aktarım başarılı bir şekilde gerçekleşir. Veya arkadaşımızın belirttiği gibi şablon olarak açılış dosyanızı düzenlediğinizde gerçekleşir.

Sayfa Adı: urunler
Xml bu yapıda kayıt edilecektir.
XML:
<Urunler>
<Urun>
  <UrunKodu>Ad</UrunKodu>
  <UrunAdi>Alan (km²)[15]</UrunAdi>
  <Maliyet>Nüfus (2021)[16]</Maliyet>
</Urun>
<Urun>
  <UrunKodu>Adana</UrunKodu>
  <UrunAdi>13844</UrunAdi>
  <Maliyet>2263373</Maliyet>
</Urun>
</Urunler>
İçeri aktardığınızda da A,B,C sütunları söz konusu dosyada olduğu gibi kayıt gelecektir.

Ad

Alan (km²)[15]

Nüfus (2021)[16]

Adana

13844​

2263373​


Söz konusu B sütunu atlamasını istiyorsanız paylaşılan kodda UrunAdi ve B sütununa ait olan satırların başına Tek tırnak koyarak açıklama haline getirip kontrol ediniz.

'urun.appendChild xmlDoc.createElement("UrunAdi")
'urun.LastChild.Text = ws.Cells(i, "B").Value

'ws.Cells(i + 2, 2).Value = urunler(i).SelectSingleNode("UrunAdi").Text

İyi çalışmalar.
 

relaxim

Altın Üye
Katılım
30 Ağustos 2009
Mesajlar
588
Excel Vers. ve Dili
LTSC Pro Plus 2024 Türkçe
Altın Üyelik Bitiş Tarihi
15.06.2027
İlginiz için teşekkürler.
1000 satırlık ürün listesi var. Kodu adı ebatları vb sütunlar var.
Excel olarak sipriş geldiğinde özet tablo ile verileri alıyorum. Tabloda sadece kodlar ve miktarlar var.
Ebadı kullanım miktari gibi bilgileri lazım oluyor düşeyara ile çekiyorum yada ilgili sayfayı kopyala yapıştır yapıyorum.
Oradan düşeyara ile getirtiyorum.
Bu konuyu görünce acaba bir tuşla ilgili verileri yada sayfayı getirtebilir miyim diye düşündüm.
Ürün listesi ve bilgileri olan sayfayı diğer excel kitaplarında lazım olunca kullanmanın kısa yolunu araştırıyorum.
Tabi ürün listesine zaman zaman eklemeler olacak.
Önerilerinizi bekliyorum. Forumdaki herkesin yeni yılını kutlarım.
Saygılar
 

ismailem

https://asrisaadetyolu.blogspot.com/
Katılım
5 Haziran 2012
Mesajlar
106
Excel Vers. ve Dili
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
19-10-2023
Sub UrunBilgiGetir()

Dim dict As Object: Set dict = CreateObject("Scripting.Dictionary")
Dim wb As Workbook, ws As Worksheet
Dim i As Long

Set wb = Workbooks.Open("C:\Veri\Urun_Master.xlsx", ReadOnly:=True)
Set ws = wb.Sheets("Urunler")

For i = 2 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
dict(ws.Cells(i, 1).Value) = Array(ws.Cells(i, 2).Value, ws.Cells(i, 4).Value)
Next i

wb.Close False

With ActiveSheet
For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If dict.exists(.Cells(i, 1).Value) Then
.Cells(i, 3).Value = dict(.Cells(i, 1).Value)(0)
.Cells(i, 4).Value = dict(.Cells(i, 1).Value)(1)
End If
Next i
End With

MsgBox "Ürün bilgileri getirildi"

End Sub
 
Katılım
13 Şubat 2020
Mesajlar
34
Excel Vers. ve Dili
2019
Excel sayfasını tasarladık fakat ürünleri bir türlü aktaramıyoruz....


Ürün Kodu :
Tedarikçi Kodu :
Ürün Açıklaması :

bunların 3 ünü bir aktarabilsem diğerlerini ben uyarlıycam da sanırım makroda hata yapıyorum....

Örnek dosyayı ekledim nerede hata var anlamadım. Yardımcı olursanız çok memnun olurum.
 
Katılım
6 Mart 2024
Mesajlar
341
Excel Vers. ve Dili
2010 TR & 2016 TR
Merhaba
LastRow değerini öğrenmek için referans olarak A sütununu alıyorsunuz
ama maalesef A sütunun da hiç veri olmadığı için hatalı referans oluyor.
benim önerim referans olarak B sütununu almanız

Hatalı referans : lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Doğru referans : lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
 
Katılım
13 Şubat 2020
Mesajlar
34
Excel Vers. ve Dili
2019
Tamam üstad akşam müsait bir zaman denyeceğim. Çok teşekkürler...Allah razı olsun
 
Katılım
13 Şubat 2020
Mesajlar
34
Excel Vers. ve Dili
2019
Selamlar,

Dışarı aktarma çok güzel çalışıyor dediğiniz gibi yaptım... Teşekkür ederim...

Fakat aktardıklarımı içeri aktaramıyorum...

Burada aralık ws.Range("B2:F100" & ws.Rows.Count).ClearContents yaptım..... acaba bundan mı hata veriyor. Aktarıldı diyor fakat xml deki verileri aktarmıyor.... Aktardıktan sonra exceldeki verileri siliyorum yenisi gelecekmi diye fakat mesaja rağmen aynen kalıyor yeni veriler gelmiyor ekrana

//////////////////////////////////////////////////////////////
Sub XML_Iceri_Aktar()

Dim xmlDoc As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")

xmlDoc.Load ThisWorkbook.Path & "\Urunler.xml"

Dim urunler As Object
Set urunler = xmlDoc.SelectNodes("//Urun")

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Urunler")

ws.Range("B2:F100" & ws.Rows.Count).ClearContents

Dim i As Long
For i = 0 To urunler.Length - 1
ws.Cells(i + 2, 1).Value = urunler(i).SelectSingleNode("UrunKodu").Text
ws.Cells(i + 2, 2).Value = urunler(i).SelectSingleNode("TedarikciKodu").Text
ws.Cells(i + 2, 3).Value = urunler(i).SelectSingleNode("UrunAciklamasi").Text
Next i

MsgBox "XML'den Aktarım Tamamlandı", vbInformation

End Sub

//////////////////////////////////////////////////////////////
 
Katılım
6 Mart 2024
Mesajlar
341
Excel Vers. ve Dili
2010 TR & 2016 TR
Merhaba

1. "Urunler" isimli sayfanızın var olduğunu var sayıyorum.

2. Urunler sayfasında önce B2:Fsonsatırno ya kadar olan her şeyi silmek için
ws.Range("B2:F" & ws.Rows.Count).ClearContents şeklinde yazmanız gerekmekte.​

3. xml dosyası oluştururken "UrunAciklaması" (sonda ı harfi var noktasız)
xml içeri aktarırken hatalı olarak "UrunAciklamasi" (sonda i harfi var nokta)​

C++:
Sub XML_Iceri_Aktar()

Dim xmlDoc As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")

xmlDoc.Load ThisWorkbook.Path & "\Urunler.xml"

Dim urunler As Object
Set urunler = xmlDoc.SelectNodes("//Urun")

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Urunler")

ws.Range("B2:F" & ws.Rows.Count).ClearContents

Dim i As Long
For i = 0 To urunler.Length - 1
ws.Cells(i + 2, 1).Value = urunler(i).SelectSingleNode("UrunKodu").Text
ws.Cells(i + 2, 2).Value = urunler(i).SelectSingleNode("TedarikciKodu").Text
ws.Cells(i + 2, 3).Value = urunler(i).SelectSingleNode("UrunAciklaması").Text
Next i

MsgBox "XML'den Aktarım Tamamlandı", vbInformation

End Sub
 
Katılım
13 Şubat 2020
Mesajlar
34
Excel Vers. ve Dili
2019
Selamlar...

Ne yaptıysam olmuyor.....

Dışarı aktarma çok güzel çalışıyor. fakat içeri aktarmayı bir türlü beceremedim...

Önce dışarı aktarıyorum xml dosyasına baktım herşey tamam....kodlar açıklama vs...

Sonra excelden ilk 3 satırı siliyorum hani bakalım yeni veirleri xml den çekiyormu diye. aktarım tammalandı diyor fakat hiçbir veri excele gelimyor....

https://www.dosyaupload.com/1BeE/Aktarma.xlsm

Dosyayı buraya yükledim....

nerede hata var bir türlü çözemedim dün akşam
 
Katılım
6 Mart 2024
Mesajlar
341
Excel Vers. ve Dili
2010 TR & 2016 TR
1. "Urunler" sayfasında "Verileri İçeri Aktar" butonuna yanlış makro atamışsınız "XML_Iceri_Aktar" makrosunu atayınız

2. "XML_Iceri_Aktar" makrosunda ws.Range("B2:F" & ws.Rows.Count).ClearContents kodlar hata verecek
çünkü B2:F arasında birleştirilmiş hücreler var B2:M kullanabilirsiniz
ws.Range("B2:M" & ws.Rows.Count).ClearContents

3.
yine i ı hatası var XML de "UrunAciklamasi" veriyi çekerken "UrunAciklaması"

Komple makroları ekledim ama
sayfaya verileri geri getirip yazacagınız konumlar yanlış ws.Cells(i + 2, 1).Value vb.
oldugu için düzgün sonuç alamayabilirsiniz, benden bu kadar kolay gelsin.

C++:
Sub Düğme11_Tıkla()

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Urunler")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

Dim xmlDoc As Object, root As Object, urun As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")

Set root = xmlDoc.createElement("Urunler")
xmlDoc.appendChild root

Dim i As Long
For i = 2 To lastRow
Set urun = xmlDoc.createElement("Urun")

urun.appendChild xmlDoc.createElement("UrunKodu")
urun.LastChild.Text = ws.Cells(i, "B").Value

urun.appendChild xmlDoc.createElement("TedarikciKodu")
urun.LastChild.Text = ws.Cells(i, "D").Value

urun.appendChild xmlDoc.createElement("UrunAciklamasi")
urun.LastChild.Text = ws.Cells(i, "F").Value

root.appendChild urun
Next i

xmlDoc.Save ThisWorkbook.Path & "\Urunler.xml"
MsgBox "XML Aktarımı Tamamlandı", vbInformation

End Sub

Sub XML_Iceri_Aktar()

Dim xmlDoc As Object
Set xmlDoc = CreateObject("MSXML2.DOMDocument")

xmlDoc.Load ThisWorkbook.Path & "\Urunler.xml"

Dim urunler As Object
Set urunler = xmlDoc.SelectNodes("//Urun")

Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Urunler")

ws.Range("B2:M" & ws.Rows.Count).ClearContents

Dim i As Long
For i = 0 To urunler.Length - 1
ws.Cells(i + 2, 1).Value = urunler(i).SelectSingleNode("UrunKodu").Text
ws.Cells(i + 2, 2).Value = urunler(i).SelectSingleNode("TedarikciKodu").Text
ws.Cells(i + 2, 3).Value = urunler(i).SelectSingleNode("UrunAciklamasi").Text
Next i

MsgBox "XML'den Aktarım Tamamlandı", vbInformation

End Sub
 
Katılım
13 Şubat 2020
Mesajlar
34
Excel Vers. ve Dili
2019
Çok teşekkür ederim, hücre birleştirmeyi kaldırcam evet hata veriyor.... normalde olmuyor fakat hücre birleşince sıkıntı çıkıyor.. İlgi ve destekleriniz için çok teşekkür ederim. Saygılar
 
Üst