2016-04-13 46 views
1

Excel dosyalarından (yüzlerce veya binlerce dosya) SQL sorgusu kullanan bir Excel tablosuna veri topluyorum.Excel VBA türleri dönüştürme hatası

Sorun:

nasılsa Excel dosyalarındaki tüm sayılar tarihi formatında depolanır (ADO Fields (i) .Type = 7) ve sayısal biçim ex ile onları geri dönüştürülürken. myVar = cDbl(recordset.Fields(8).Value) Sonucu o zamandan büyük bir sonuç alırım.

Bu hata 60'dan küçük numaralar için geçerlidir (eskiden 01.03.1900 önce).

Yaygın sorun olmalı, ancak nasıl düzeltileceğine dair herhangi bir fikrim bulamadım.

+1

Bu doğru görünmüyor. Sayaç = Sayaç + 1’den önce görebildiğim kadarıyla “Dim' için Sayaç yok”. Yani, ilk aşamada 0'dır ve bu nedenle ilk "ReDim" 1'den 0'a ve sonra 1'den 1'e gider. Dizininizi karıştırıyor olabilir miydiniz? Varsayılan olarak VBA, 'Seçenek Tabanı 0 'kullanır. Yani, 'ReDim Preserve o_Summ (0 To Counter) 'ya da Sayaç 1'e (döngüden önce),' 'Long' olarak Dim'ye ve' ReDim Preserve o_Summ (Counter)' (sadece elemanların belirtilmesi ve nerede başlanacağı veya bitmeyeceği durumlar. – Ralph

+1

Kodunuz anlamsız mı? Fso.GetFolder (Path) döngüsü, iç rs.eof döngüsüne hiçbir şey eklemiyor. – Jules

cevap

0

Sadece bu sorunu merak ediyor ve sorunu buluyor. Lotus 1-2-3'te bir hata var, çünkü 1900'ün bir yıl olduğu ve Excel'in bu sorunu kasıtlı olarak https://support.microsoft.com/en-us/kb/214326 kopyaladığı varsayılıyor. excel üzerinde

Ben tarih için hücre biçimini değiştirmek:

  • 59 Feb 28 olarak 1900

  • 60 29 olarak Şubat 1900 ADO alanın değeri Ancak

her ikisi de 28 Şubat 1900 olarak görüntülenir ve iki değere de dönüştürüldüğünde her iki değer de 60'tır.

Bu sorunu çözmek için düşünebilmemin tek yolu veri çalışma sayfanızı açmak, hücre formatını genel olarak değiştirmek.

DÜZENLEME: Test Veri enter image description here