朝会発表テーマ

(Access VBA)TransferSpreadsheetメソッドと出力形式について

レジュメ

1.メソッドの仕様

・TransferSpreadsheetメソッドは、Access VBAに標準で用意されている命令の一つ。
・このメソッドを使用すると、エクセルの内容をテーブルに取り込んだり、逆にテーブルの内容をエクセルに出力したりすることができる。

DoCmd.TransferSpreadsheet メソッド (Access)

TransferSpreadsheet メソッドは、Visual Basic で”TransferSpreadsheet/ワークシート変換” アクションを実行します。

引数
名前データ型説明
TransferTypeAcDataTransferType変換の種類を指定します。既定値は acImport です。
SpreadsheetTypeAcSpreadSheetTypeインポート元、エクスポート先、またはリンク先のワークシートの種類を指定します。
TableNameバリアント型 (Variant)(省略)
FileNameバリアント型 (Variant)(省略)
HasFieldNamesバリアント型 (Variant)(省略)
Rangeバリアント型 (Variant)(省略)
UseOAバリアント型 (Variant)(省略)
公式リファレンスより抜粋(*1)
名前説明
acSpreadsheetTypeExcel7Microsoft Excel 95 形式
acSpreadsheetTypeExcel8Microsoft Excel 97 形式
acSpreadsheetTypeExcel9Microsoft Excel 2000 形式
acSpreadsheetTypeExcel12XmlMicrosoft Excel 2010 XML 形式
第二引数SpreadsheetTypeに指定できる定数(公式リファレンスより抜粋(*2))

2.出力形式による出力結果の違い (裏面も参照)

・メソッドの第二引数を変更すると、出力されるエクセルの形式を変更できる。
・出力するエクセルの形式によって、微妙に異なる表示となる。

→文字化けが発生するエクセル形式がある
→エクセル形式によってフォントサイズが異なる
→エクセル形式によって選択されているセルの位置が異なる

(*1)「DoCmd.TransferSpreadsheet メソッド (Access)」

DoCmd.TransferSpreadsheet メソッド (Access)
Office VBA リファレンス トピック

(*2)「AcSpreadSheetType 列挙 (Access)」

AcSpreadSheetType 列挙型 (Access)
Office VBA リファレンス トピック

出力結果

出力するテーブルTBL_TESTの内容

テーブルTBL_TESTの内容をエクセル出力するプログラム

・上の行から順に、95形式、97形式、2000形式、2010形式で出力するように指定。

出力結果(Excel 2013で開いた直後の状態を撮影)

・(左上)1_出力データ(95形式).XLS  ・・・文字化けが発生している。
・(右上)2_出力データ(97形式).XLS
・(左下)3_出力データ(2000形式).XLS
・(右下)4_出力データ(2010形式).XLSX  ・・・フォントの大きさが他の3つのそれと異なる。中途半端な位置のセルが選択されている。

※(右下)4_出力データ(2010形式).XLSXのセル位置についての補足事項
・出力したエクセルを削除して新しく出力しなおしても、セルC5の位置が選択されている。
・テーブルのデータ行、列の増減でもセルC5の位置は変化しない
・新規にエクセルを開いたときにはセルA1が選択される。

コメント