search

ACCESS VBAでExcelへのデータエクスポート:在庫計算データを正確に貼り付ける方法

ACCESS VBAでExcelへのデータエクスポート:在庫計算データを正確に貼り付ける方法

ACCESS VBAでEXCELにエクスポートについて フォームを作成し「在庫計算をエクセルにエクスポート」というボタンを作り、ボタンをクリックすると クエリで抽出されたデータが指定したexcelのシート及び指定したセルに貼り付けたいです。 「excelのファイルはデスクトップに存在し・平成24年度,aaaのエクセルのファイルを指定し ・在庫計算のシートを選択し・Aの5段目に貼り付けたい(1~4段目は既存のデータあり、DEFの列には計算式があります)」 下記の様にVBAを作成したのですが動作しません。 Private Sub コマンド7_Click() Call [“在庫計算”] Private Sub ExportExcel_DAO() Dim DB As Database Dim rst As Recordset Dim objExcel As Excel.Application Set DB = OpenDatabase(“C:******Desktop平成24年度,aaa.xlsx”) Set rst = DB.OpenRecordset(“在庫計算”, dbOpenTable) Set objExcel = New Excel.Application objExcel.Workbooks.Open (“平成24年度,aaa.xls”) objExcel.Worksheets(“在庫計算”).Select ‘RecordSetオブジェクトをExcelシートにコピー objExcel.Cells(A,5).CopyFromRecordset rst Set DB = Nothing Set rst = Nothing Set objExcel = Nothing MsgBox “終了” End Sub 上記のコードを作成してみたのですが、ボタンをクリックしても何も動作しません。 見よう見まねで作ったので私では解決に至りませんでした。 解決させたいのでお願い致します。 エクスポートするデータは値だけ出力したいです。まぁexcelの計算式に影響与えなければ関係無いですが。

この記事では、ACCESS VBAを用いてExcelファイルに在庫計算データをエクスポートする方法について解説します。具体的には、フォームにボタンを作成し、クリックすることでクエリで抽出されたデータを、指定したExcelファイルのシートとセルに貼り付ける方法を、具体的なコード例と修正ポイントを交えながらご説明します。Excelファイルへのデータ書き込み、VBAプログラミング、Accessデータベース操作といったキーワードに関連する知識が得られます。

問題点の分析と修正

ご提示いただいたコードにはいくつか問題点があります。まず、`OpenDatabase`関数のファイルパスが間違っている可能性があります。「C:******Desktop平成24年度,aaa.xlsx」の部分は、実際のファイルパスに修正する必要があります。ファイル名は「平成24年度,aaa.xlsx」とカンマが含まれているため、ファイルパス全体をダブルクォーテーションで囲む必要があります。また、`.xls`と`.xlsx`の拡張子の違いにも注意が必要です。Access 2010以降では、Excel 2007以降のファイル形式である`.xlsx`を使用する必要があります。

さらに、`objExcel.Cells(A,5).CopyFromRecordset rst`の部分も問題があります。`A`は変数として認識されず、エラーとなります。セル番号を指定するには、数値を直接入力する必要があります。例えば、A5セルに貼り付ける場合は`objExcel.Cells(5, 1).CopyFromRecordset rst`と記述します。

最後に、`コマンド7_Click`サブルーチンで`Call [“在庫計算”]`とありますが、これは正しくありません。「在庫計算」という名前の別のサブルーチンを呼び出そうとしているようですが、そのサブルーチンが定義されていないか、名前が間違っている可能性があります。この行は削除するか、適切なサブルーチンを呼び出すように修正する必要があります。

修正後のコード

以下は修正後のコードです。ファイルパスはご自身の環境に合わせて修正してください。また、エラー処理を追加することで、より堅牢なコードになっています。

Private Sub コマンド7_Click()
Call ExportExcel
End Sub

Private Sub ExportExcel()
Dim DB As Database
Dim rst As DAO.Recordset
Dim objExcel As Object
Dim strFilePath As String
Dim strFileName As String
On Error GoTo ErrHandler

' ファイルパスとファイル名を指定
strFilePath = "C:Users" & Environ(""UserName"") & ""Desktop"" ' デスクトップパスを取得

コメント一覧(0)

コメントする

お役立ちコンテンツ