• DİKKAT

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

Excel 2016 ve Excel 2013 Uyumsuzlukları hak.

  • Konbuyu başlatan Konbuyu başlatan Filose
  • Başlangıç tarihi Başlangıç tarihi
Katılım
22 Ekim 2012
Mesajlar
311
Excel Vers. ve Dili
Office 2016 Türkçe
Herkese Merhaba,

Excel 2016 ile yaptığım bazı makrolar diğer bilgisayarımda olan excel 2013'de hata veriyor. Bu sorunu nasıl çözebilirim bilmiyorum.

Bazen, excel 2016'da kaydedilen makroyu siliyorum ve excel 2013'de yeniden yazıyorum ve sorun çözülüyor. Tabiki bu zor ve zaman alıyor. Acaba başka bir yol varmı? Tabiiki excel sürümü her iki bilgisayarda aynı olursa sorun olmaz.

Herkese teşekkür eder saygılar sunarım.
 
Nasıl bir hata veriyor?
 
Merhaba Korhan Bey,

Hatayı işyerindeki bilgisayarda (excel 2013) verdi. "Dosya bozulmuş kaydedilemiyor" hatasını verdi. Ancak excel 2016'da hiçbir hata yok. Aşağıdaki 2 örnekte makro 2016'da yazıldı hiç bir hata yok.

Ama 2013 çalışmayarak yukarıdaki gibi hata verdi.

Sub AKTAR_SMMM()
Set l = Sheets("Liste"): Set a = Sheets("Smmm")
If a.[C89].End(3).Row > 5 Then
With a.Range("C9:AF" & a.[C89].End(3).Row)
.ClearContents: .UnMerge
End With: End If
For satır = 9 To l.[L89].End(3).Row
If l.Cells(satır, "L") > 0 Or l.Cells(satır, "L") > 0 Then
sat = WorksheetFunction.Max(9, a.[C89].End(3).Row + 1)
If l.Cells(satır, "L") > 0 And l.Cells(satır, "L") = "" Then
fsat = satır - 1
Else: fsat = satır: End If
a.Range(a.Cells(sat, "C"), a.Cells(sat, "AF")).Merge
a.Cells(sat, "B") = sat - 8: a.Cells(sat, "C") = l.Cells(fsat, "L")
End If: Next
End Sub

----------------------

Sub AKTAR_FILOSE()
Set l = Sheets("Liste"): Set a = Sheets("Duyuru")
If a.[CA89].End(3).Row > 5 Then
With a.Range("CA8:DE" & a.[CA89].End(3).Row)
.ClearContents: .UnMerge
End With: End If
For satır = 9 To l.[CV89].End(3).Row
If l.Cells(satır, "CV") > 0 Or l.Cells(satır, "DC") > 0 Then
sat = WorksheetFunction.Max(6, a.[CC89].End(3).Row + 1)
If l.Cells(satır, "CV") > 0 And l.Cells(satır, "L") = "" Then
fsat = satır - 1
Else: fsat = satır: End If
a.Range(a.Cells(sat, "CA"), a.Cells(sat, "CB")).Merge
a.Range(a.Cells(sat, "CC"), a.Cells(sat, "CT")).Merge
a.Range(a.Cells(sat, "CV"), a.Cells(sat, "CZ")).Merge
a.Range(a.Cells(sat, "DA"), a.Cells(sat, "DE")).Merge
a.Cells(sat, "CA") = sat - 5: a.Cells(sat, "CC") = l.Cells(fsat, "L")
a.Cells(sat, "CV") = l.Cells(satır, "CV"): a.Cells(sat, "DA") = l.Cells(satır, "DC")
End If: Next
End Sub
 
Tekrar merhaba Korhan Bey,

Ekli dosyadaki hatayı veriyor.
 

Ekli dosyalar

  • Hata.jpg
    Hata.jpg
    34.8 KB · Görüntüleme: 12
Kodda ":" ile tek satır yazma metodu dışında göze çarpan bir durum görünmüyor. Bu yazım şeklinin editörün kod satırlarını yorumlamasını zorlaştırdığını okumuştum. Ancak problem bu değil tabiki.

Excel, neleri kaldırdığını/onardığını listeleyen bir xml dosyası üretiyor olmalı. Oradan yola çıkılabilir. Bu, ileti penceresi şeklinde gelmiyorsa onardıktan sonra sol tarafta onarılan dosyanızın ismini görürsünüz. Oradaki combodan "onarımı göster" benzeri bir seçenek olmalı.
 
Zeki Bey ilginize teşekkür ederim

Bir çok şey denedim olmadı. Şimdilik çözümü aynı dosyaya excel 2013 de kod yazıp kaydediyorum ki her iki tarafta da çalışsın diye.

Dediğiniz gibi kullandığım kodlar ise önemlilik arz eden bir durumu yok. Tabiki bu benim basit görüşüm. Ama şunu biliyorum 2016 da yazılan 3. mesajdaki kodlar, excel 2013 de yukarıdaki hatayı veriyor. Aynı kodları 2013 de yeniden yazıyorum ve hata yok çalışıyor.

Tekrar ilginize teşekkür eder saygılar sunuyorum.

İyi çalışmalar dilerim.
 
Kodda ":" ile tek satır yazma metodu dışında göze çarpan bir durum görünmüyor.
Bu yazım şeklinin editörün kod satırlarını yorumlamasını zorlaştırdığını okumuştum. Ancak problem bu değil tabiki.
...........
Merhaba.

Sayın GÜRSOY'dan fikrini öğrenmek istediğim husus;
yukarıda mavi renklendirdiğim kısım ile ilgilidir.

Sayın Filose'nin belirttiği kodların ikinci kısmı (Sub AKTAR_FILOSE()....),
sanırım yine Sayın Filose'nin açtığı aşağıdaki konu başlığına verdiğim cevaptaki kod.

Bir sayfadan diğer sayfaya Makro ile aktar BOŞ SATIRLAR hariç

Kullandığım office sürümü 2013.

Bir'den fazla satırda yazılabilecek bazı kod satırlarını,
sadece görsel amaçlı olarak " : " karakteri ile ayırarak tek satıra alma işlemini,
verdiğim cevaplarda sıkça yapıyorum ve şimdiye kadar hiçbir sorunla da karşılaşmadım.
Bildiğiniz bir husus varsa belirtir misiniz? öğrenmek isterim.
.
 
2013 versiyonda kodları adım adım çalıştırıp hata veren satırı tespit edebilirsiniz. Bunun dışında Zeki beyin belirttiği gibi excel kaydetme işleminde dosyayı onarmaya çalışıyor. Evet dediğinizde yaptığı onarımları listeler. O liste incelenip çözüm yoluna gidilebilir.
 
Merhaba Korhan Bey,

İlk dediğiniz çözüm yolunu daha öncede burada forum köşesinde okumuştum. Ancak KODLARI ADIM ADIM ÇALIŞTIRMAYI bilmiyorum. Döngü arasını (For Next) ve End, Sub arasındaki kodları kast ediyorsunuz sanırım. Bilgisizliğime bağışlayın lütfen.

İlginiz için tekrar teşekkür ederim.

Sağlıkla kalın.
 
Merhaba Korhan Bey,

İlk dediğiniz çözüm yolunu daha öncede burada forum köşesinde okumuştum. Ancak KODLARI ADIM ADIM ÇALIŞTIRMAYI bilmiyorum. Döngü arasını (For Next) ve End, Sub arasındaki kodları kast ediyorsunuz sanırım. Bilgisizliğime bağışlayın lütfen.

İlginiz için tekrar teşekkür ederim.

Sağlıkla kalın.
Merhaba.

Sanırım Sayın AYHAN müsait değil.
-- Excel belgenizi açın ve kod'un veri yazdığı sayfayı aktif hale getirin,
-- ALT+F11 tuşlarına basarak VBA ekranını görüntüleyin.
-- Excel ekranı ile VBA ekranını, monitörünüzde aynı anda görebilecek şekilde konumlandırın,
(bu sayede; kod'un hangi satırının, sayfada ne işlem yaptığını excel sayfasında göreceksiniz)
-- VBA ekranında ilgili kod blokunun başlık satırına (Sub AKTAR_FILOSE() satırı) fareyle bir kez tıklayın.
-- F8 tuşuna aralıklarla basmaya devam edin,
(kod'un, o sırada işlem yaptığı satır sarı zeminli hale gelir)
-- kod hata verirse; bir uyarı alırsınız ve kod'un çalışması sonlandırılır
(kod'un hangi satırda hata verdiğini gözlemleye çalışın)
-- bunu fark edemezseniz de belgeyi o haliyle kaydederek kapatın ve foruma ekleyin isterseniz.
.
 
Ömer Bey çok teşekkürler, deneyeceğim. Sanırım sorunu bulacağım.
Sağlık ve esenlik dilerim.
 
Geri
Üst