質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

5314閲覧

Access VBA Docmd.TransfferSpreadsheet でクエリがエクスポートできない。

wakame01

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2019/04/13 04:05

編集2019/04/13 04:44

後述のコードの問題点を教えてください。宜しくお願い致します。

この部分でエラーが出ます。

VBA

1DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 2 varAc, varXls, True

エラーの内容は次の通りで、エクスポートすることができません。

「3011 : オブジェクト 'Q_児童名簿(地区・コード)' が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。'Q_児童名簿(地区・コード)' がローカル オブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。」

###試したこと・確認したこと

  • Acceessのクエリ「Q_児童名簿(地区・コード)」が存在していて、Accessでは実行できていること。
  • 出力先のExcelファイルをxls形式にして、acSpreadsheetTypeExcel9にするとエクスポートできる。

VBA

1Public Sub 児童名簿_地区別_出力() 2 3 Dim objExcel As Excel.Application 4 Set objExcel = New Excel.Application 5 Dim objWb As Excel.Workbook 6 7 Dim varXls As Variant 8 Dim varAc As Variant 9 10 varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xlsm" 11 varAc = "Q_児童名簿(地区・コード)" 12 13 Set objWb = objExcel.Workbooks.Open(FileName:=varXls, ReadOnly:=False, _ 14 Password:=PASSWORD_STRING) 15 16 17 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ 18 varAc, varXls, True 19 20 objWb.Save 21 objWb.Close 22 Set objWb = Nothing 23 objExcel.Quit 24 Set objExcel = Nothing 25 26End Sub

こちらのコードでは理想の動きをしました。理由は判りません。

VBA

1Public Sub 児童名簿_地区別_出力() 2 3 Dim objExcel As Excel.Application 4 Set objExcel = New Excel.Application 5 Dim objWb As Excel.Workbook 6 7 Dim varXls As Variant 8 Dim varAc As Variant 9 10 varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xls" 11 varAc = "Q_児童名簿(地区・コード)" 12 13 Set objWb = objExcel.Workbooks.Open(FileName:=varXls, ReadOnly:=False, _ 14 PASSWORD:=PASSWORD_STRING) 15 16 objWb.PASSWORD = "" 17 objWb.Save 18 objWb.Close 19 Set objWb = Nothing 20 21 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _ 22 varAc, varXls, True 23 24 Set objWb = objExcel.Workbooks.Open(FileName:=varXls, ReadOnly:=False, _ 25 PASSWORD:="") 26 objWb.PASSWORD = PASSWORD_STRING 27 objWb.Save 28 objExcel.Quit 29 Set objWb = Nothing 30 31 Set objExcel = Nothing 32 33End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Q_児童名簿(地区・コード) → Q_児童名簿_地区・コード

クエリ名に全角括弧が入っていたため、エラーを吐いていたようです。全角括弧を取り除いたところ予定通りの動作をしました。

投稿2019/04/13 11:00

wakame01

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エクスポート対象のexcelファイルを開いたまま、同じファイル名でエクスポートしようとしているからではないでしょうか?
何のためにエクスポート前にexcelファイルを開いているんでしょうか?

' Set objWb = objExcel.Workbooks.Open(FileName:=varXls, ReadOnly:=False, _ ' Password:=PASSWORD_STRING) DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _ varAc, varXls, True ' objWb.Save ' objWb.Close ' Set objWb = Nothing ' objExcel.Quit ' Set objExcel = Nothing

投稿2019/04/13 06:31

編集2019/04/13 06:44
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakame01

2019/04/13 08:39

excelファイルにパスワードを設定してあるので、開いた状態でないとエクスポートできないとのことです。
Y.H.

2019/04/13 16:08 編集

そうなんですね。不思議な環境ですね。私の環境では無理でした。 acSpreadsheetTypeExcel9 のコードのほうは ・「Excelで開いてパスワード解除しExcel 終了」→「TransferSpreadsheet でexport」→「Excelで開いてパスワード設定しExcel 終了」 acSpreadsheetTypeExcel12Xml では ・「Excelで開いて」→「TransferSpreadsheet でexport」→「Excel 終了」
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問