XLS uzantili dosyayi acinca verilerin bir kismi bozuluyor

Katılım
12 Mart 2009
Mesajlar
119
Excel Vers. ve Dili
Office 365 - Ingilizce
Merhaba,

Haftalik olarak bize gonderilen bir SQL raporu var fakat rapor XLS formatinda ve actigimiz zaman asagidaki hatayi veriyor:

The file format and extension of 'DSZS497.xIs' don‘t match. The file could be corrupted or unsafe. Unless you trust its source, don't
open it. Do you want to open it anyway?


Evet diyip dosyayi acabiliyoruz fakat dosyanin icindeki verilerin bazilari asagidaki gibi bozuluyor:

14:1F07
14:8A7A
14:24A7
3.996527778
4.890972222

14:283D41
14:283D41

Bu bozulmus olan hucreleri hic bir sekilde duzeltemiyoruz. Fakat XLS formatindaki dosyanin uzantisini TXT olarak degistirirsek, notepad ile acinca veriler bozulmuyor ancak bu kez de bambaska bir formatta gorunuyor:

SQL> @/exashare/dba_mnl/0525497/reporting.sql
<br>
<p>
<table border='1' width='90%' align='center' summary='Script output'>
<tr>
<th scope="col">
Client Org
</th>
<th scope="col">
ClientTop
</th>
<th scope="col">
SubUnit
</th>
<th scope="col">
Subunit
</th>
<th scope="col">
Su
</th>
<th scope="col">
Subunit E
</th>
</tr>
<tr>
<td>
Bung
</td>
<td>
14:3554A5
</td>
<td>
UA-ET
</td>
<td>
14:359995
</td>
<td>
UA
</td>
<td>
31-DEC-99
</td>
</tr>
<tr>
<td>
Bung
</td>
<td>
14:3554A5
</td>
<td>
UA-Khim
</td>
<td>
30-JUN-22
</td>
</tr>
</table>
<p>
SQL&gt; SPOOL OFF
<br>


Notepad den tum veriyi secip kopyaliyorum ve Excel de A sutununu secip yapistir diyorum, ayni veriler yine bozuluyorlar. Bu sebeple asagidaki macro ile XLS dosyasini acip icindeki tum ( : ) isaretlerini ( ': ) seklinde degistirip TXT olarak kaydedebiliyorum. Bu text dosyasindaki veriyi kopyalayip Excelde A sutununa yapistirinca veriler bozulmuyor. Eger bul-degistir kullanip tum listeden ( ' ) isaretini kaldirirsam yine veriler bozuluyor. Bu sebeple yeni bir sutun olusturup =SUBSTITUTE(B2,"'","") formulu ile veriler bozulmadan ( ' ) isaretini kaldirabiliyorum.

Kod:
Sub Converttotxt()

Dim sBuf As String
Dim sTemp As String
Dim iFileNum As Integer
Dim sFileName As String


sFileName = "C:\Users\" & Environ("UserName") & "\Desktop\Automation\0525497test.xls"

iFileNum = FreeFile
Open sFileName For Input As iFileNum

Do Until EOF(iFileNum)
    Line Input #iFileNum, sBuf
    sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum

sTemp = Replace(sTemp, ":", "':")


iFileNum = FreeFile
sFileName = "C:\Users\" & Environ("UserName") & "\Desktop\Automation\" & "\Completed_" & Format(Now, "yyyymmdd") & ".txt"
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum
 
   MsgBox "Completed!"
End Sub
Takildigim kisim ise macro ile TXT dosyasindan verileri kopyalayip Excelde A sutunu altina yapistirmanin bir yolunu bulamadim. Manuel olarak kopyala yapistir yaptigimda her veri olmasi gereken sutun altinda oluyor fakat denedigim bir kac macroda sonuc ayni TXT dosyasindaki gibi oluyor (tum veri A sutunu altinda ve yukaridaki ornekteki gibi).

Verileri elle kopyala yapistir yaptigimiz sekilde calisacak bir kod bilen arkadasimiz varsa yardimini rica ediyorum.

Simdiden cok tesekkurler
Ferdi
 
Katılım
12 Mart 2009
Mesajlar
119
Excel Vers. ve Dili
Office 365 - Ingilizce
Guncelleme:

Veriyi TXT dosyasindan kopyalayip Excele yapistiran bir macro buldum fakat ne yazik ki orijinal dosyada 168661 satir oldugu halde sadece 52431 satiri kopaliyor. Sanirim bir limit var...

Kod:
Sub thetry()
Dim fileToOpen As Variant

Application.ScreenUpdating = False


fileToOpen = "C:\Users\XXXXX\Desktop\Automation\0525497.txt"
If fileToOpen <> False Then

Workbooks.OpenText fileName:=fileToOpen, _
DataType:=xlDelimited, Tab:=True
End If
fileToOpen = Split(fileToOpen, "\")
fileToOpen = fileToOpen(UBound(fileToOpen))

Windows(fileToOpen).Activate


ActiveWorkbook.Sheets(1).Cells.Copy


Application.DisplayAlerts = False
ActiveWorkbook.Close


Dim wb As Workbook

Workbooks.Add
Set wb = ActiveWorkbook
wb.Activate

Columns("A:A").Select
    ActiveSheet.Paste


Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Ustalar muhakkak bı cozum ureteceklerdir ama en net çözum yazılımcılara ulaşıp çıktıyı xlsx olarak istemek olacaktır. Benzer sorunu bir çok kez yaşadıktan sonra yazılımcılara ulaşıp çıktı formatını değiştirttim. Tabi aynı kurumsa bu kolay ama başka kurumsa ustaların çözümleriyle idare edeceksiniz.
 
Üst