ACCESS TransferSpreadsheetの使い方
ACCESSとExcelの間でデータをやり取りする時に使用するのが、TransferSpreadsheetメソッドです。
インポート、エクスポートの両方で利用でき、非常に利便性の高いものになります。
今回はTransferSpreadsheetの使い方をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
目次
構文
TransferSpreadsheetは以下の構文で使用します。
TransferSpreadsheet (変換型, Excelファイル形式, ACCESSのテーブルの名称, Excelのファイル名, 最初の行をフィールド名として扱うか否か, Excelのセルの範囲)
引数が多いですが、一つずつ説明します。
変換型
ACCESSに対してExcelファイルをインポートするのか、エクスポートするのかを選択します。
引数 | 内容 |
acImport (既定値) | インポート |
acExport | エクスポート |
acLink | リンク |
Excelファイル形式
Excelのファイル形式を選択します。基本は数値が一番大きいものを選んでおけば最新のファイル形式になります。
引数 | 内容 |
acSpreadsheetTypeExcel12Xml | Microsoft Excel 2010/2013/2016 XML 形式 (.xlsx、.xlsm、.xlsb) |
acSpreadsheetTypeExcel12 | Microsoft Excel 2010 形式 |
acSpreadsheetTypeExcel9 | Microsoft Excel 2000 形式 |
ACCESSのテーブルの名称
ExcelからACCESSへのインポート先、もしくはACCESSからExcelへのエクスポート元のテーブル名を指定します。
Excelのファイル名
ACCESSへインポートするExcelのファイル名、もしくはACCESSからエクスポートするExcelのファイル名を指定します。
最初の行をフィールド名として扱うか否か
ExcelファイルをACCESSのテーブルにインポートする際、Excelファイルの最初の行をACCESSのフィールド名として扱うか否かを設定します。
引数 | 内容 |
True | Excelファイルの最初の行をフィールド名として扱う |
False | Excelファイルの最初の行を通常のデータとして扱う |
Excelのセルの範囲
インポート時のみ利用します。Excelシートのセルの範囲または範囲の名前を文字列式で指定します。指定しないと、ワークシート全体がインポートされます。
TransferSpreadsheetの使用例
では、TransferSpreadsheetの使用例をいくつか示します。
TransferSpreadsheetはVBAで使用しますので、最も多いのはフォームに入力、出力のボタンを作成し、そのボタンのクリック時イベントに設定する場合でしょう。
ここではエクスポートの事例をご紹介します。例えば以下のようなフォームでボタンにイベントを設定します。
デザインビューで見るとこちらになります。
出力ボタンのクリック時イベントにイベントプロシージャを設定してあります。
ここで設定されているプロシージャは下記の通りです。
Dim FileName As String
Private Sub 売上明細出力ボタン_Click()
If vbOK = MsgBox("ACCESSファイルと同じ場所にEXCELデータで出力します。" & vbCrLf & "同名のファイルは上書きされますのでご注意ください。", vbExclamation + vbOKCancel, "売上明細出力") Then
FileName = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & "売上明細.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "EXP_売上明細", FileName, True
End If
End Sub
まず、TransferSpreadsheetだけを実行すると、ユーザーがファイル出力されたことに気づきにくいので、メッセージを出すことをお勧めします。
最初の
vbOK = MsgBox("ACCESSファイルと同じ場所にEXCELデータで出力します。" & vbCrLf & "同名のファイルは上書きされますのでご注意ください。", vbExclamation + vbOKCancel, "売上明細出力")
の部分でメッセージを表示して、ファイル出力することをユーザーに理解させます。
そのうえで、
FileName = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & "売上明細.xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "EXP_売上明細", FileName, True
でTransferSpreadsheetを使ってファイルを出力します。
先に、FileName変数にファイル名を格納しています。
この場合は、ACCESSファイルが置いてあるディレクトリと同じ場所にファイルを出力するように、FileNameにディレクトリパスとファイル名を格納しています。
あとはDoCmd.TransferSpreadsheetで出力するだけです。
以上、TransferSpreadsheetの使い方をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。