• ベストアンサー

Access2010でExcelエクスポート

通貨型のフィールドに、「\535,211,114,112」を入力して、 DoCmd.TransferSpreadsheet acExport, 5, "テーブル1", "C:\Test.xls", True, "" を行うと、Excelに「450691311687.48」が出力されます。 ※Excelのバージョンは2010です。 この事象について、詳しい方がおられましたら、ご教授ください。 以上、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

こちらでも再現してしまいました。 WinXP SP3 & Office2010(試用版) 倍精度浮動小数点型なら誤変換?は発生せず。 時間が取れないので通貨型の誤変換のしきい値?は探していません。 Office2002では発生せず。 MougさんとかだとDEEPな方々が多いのと、 此処のようにスレッドが流され放しにならないので、おススメかもです。 http://www.moug.net/index.html

micoyanx
質問者

お礼

nicotinism様 お忙しい中、返答下さり、ありがとうございました。 私だけかと思い、不安になっておりました。 フィールドの型を十進型にする手もあったのですが、デグレートテストが膨大になるので、エクスポートクラスを作成して対処するつもりです。 ざくっと流した結果、期待通りの値が出力されてましたので、来週はこのクラスのテストをして、対応するつもりです。 本当にありがとうございました。 以下、ExportClass Option Compare Database Private xlsApl As Excel.Application Private xlsBook As Excel.Workbook Private xlsSheet As Excel.Worksheet Private Sub Class_Initialize()   Set xlsApl = CreateObject("Excel.Application")   xlsApl.DisplayAlerts = False End Sub Private Sub Class_Terminate()   xlsApl.Quit   Set xlsApl = Nothing End Sub Public Sub OpenBook(xlsPath As String)   Set xlsBook = xlsApl.Workbooks.Open(xlsPath) End Sub Public Sub Export(queryName As String, Optional sheetName As String = "")   Dim rs As Recordset   Dim i As Integer   If sheetName = "" Then     sheetName = queryName   End If   Set rs = CurrentDb.OpenRecordset(queryName, dbOpenSnapshot)   For i = 1 To xlsBook.Sheets.Count     If xlsBook.Sheets(i).Name = sheetName Then       xlsBook.Sheets(sheetName).Delete       Exit For     End If   Next i   Set xlsSheet = xlsBook.Sheets.Add   For i = 0 To rs.Fields.Count - 1     xlsSheet.Cells(1, i + 1).Value = rs.Fields(i).Name   Next   xlsSheet.name = sheetName   xlsSheet.Cells(2, 1).CopyFromRecordset rs   rs.Close   Set rs = Nothing   Set xlsSheet = Nothing End Sub Public Sub CloseBook()   xlsBook.Save   xlsBook.Close   Set xlsBook = Nothing End Sub

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

No1です。この現象については以下にあります。 http://support.microsoft.com/kb/417633/ja http://www.nbcom.co.jp/PC-Support/FAQ/acc/tr/acc102004tr002.shtml ただ、上記の方法で訂正されなければ、No1の方法で。

micoyanx
質問者

お礼

piroin654様 お忙しい中、返答下さり、ありがとうございました。 今回は、書式ではなく、予期せぬ値で出力されてしまう事象に困っておりました。 書式については、新たな知識として蓄えさせて頂きます。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

エクスポートした後、Excelのセルの書式設定で 小数点以下の桁数を0にすれば表示が訂正されます。

micoyanx
質問者

お礼

piroin654様 お忙しい中、返答下さり、ありがとうございました。 今回は、書式ではなく、予期せぬ値で出力されてしまう事象に困っておりました。 書式については、新たな知識として蓄えさせて頂きます。