Board logo

標題: 求救:其檔案格式與副檔名所指定的格式不同 [打印本頁]

作者: hero_lin    時間: 2011-8-31 17:45     標題: 求救:其檔案格式與副檔名所指定的格式不同

公司SERVER內資料轉移至新的硬碟,結果很多EXCEL2007檔案都打不開了。
檔案大小約400K左右
出現訊息【其檔案格式與副檔名所指定的格式不同】。
請教如何解決?或是外面有幫別人解決修復的公司。
感謝
作者: gong    時間: 2011-8-31 18:02

不能打開檔案可能有很多原因
無OFFICE軟體
版本不對
附檔名不對
壞軌

還是請上傳檔案大家試試看吧
作者: jimmyhk    時間: 2011-9-4 02:34

回復 1# hero_lin


我近日在寫 VBA (我是初心者) 時亦有看到這個東西.

源起是我以 Excel 2003 寫了一個小程式,
內裡會把其中一張 Sheets 另存到一個新建的 excel 檔去.
以以下 VBA 碼
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=fname3
ActiveWorkbook.Close True

如以 Excel 2003 執行匯出的檔案是 abc.xls
是完全沒有問題的.
但如這句由 excel 2007 執行,
匯出的檔案檔名仍是 abc.xls
但使用 Excel 2007 開啟時就會有
"其檔案格式與副檔名不同.開啟檔案之前,請確認檔案未損毀, 且來自信任的來源.
你現在要開啟檔案嗎?"

於檢查該匯出的 Excel 檔案 (即 abc.xls),
發現於使用 Excel 2007 執行時它會自己變成 xlsx 格式匯出....
這個問題我仍未找到方法解決.

不過不知這個問題會否和你一樣~~~
作者: jimmyhk    時間: 2011-9-14 01:38

回復 3# jimmyhk


回覆一下近來的情況
我現在於 VBA 內加了以下的程序,
就解決了有關問題
  1. '第一組, 用作檢查現使用 Excel 版本
  2. Sub CheckExcelVersion()
  3.      verarr = Array("8.0", "9.0", "10.0", "11.0", "12.0", "14.0")
  4.      vername = Array("97", "2000", "2002", "2003", "2007", "2010")
  5.     For i = 1 To 6
  6.     If verarr(i - 1) = Application.Version Then
  7.     Sheets("Sheet1").Range("A501") = vername(i - 1)
  8.     Exit For
  9.     End If
  10.     Next i
  11. End Sub


  12. '第二組...
  13. ...
  14. ...
  15. If e_ver = "2007" Then 'e_ver
  16. ActiveWorkbook.SaveAs fname3, 56 '如果是 Excel 2007, 則 Save 為 xlsx 格式
  17. Else

  18. ActiveWorkbook.SaveAs fname3 '如果是 Excel2003/XP, 則 Save 為 xls 格式
  19. End If
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)