質問編集履歴

3 コードの追加

wakame01

wakame01 score 12

2019/04/13 13:44  投稿

Access VBA Docmd.TransfferSpreadsheet でクエリがエクスポートできない。
後述のコードの問題点を教えてください。宜しくお願い致します。
この部分でエラーが出ます。
```VBA
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
                             varAc, varXls, True
```
エラーの内容は次の通りで、エクスポートすることができません。
__「3011 : オブジェクト 'Q_児童名簿(地区・コード)' が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。'Q_児童名簿(地区・コード)' がローカル オブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。」__
###試したこと・確認したこと
- Acceessのクエリ「Q_児童名簿(地区・コード)」が存在していて、Accessでは実行できていること。
- 出力先のExcelファイルをxls形式にして、acSpreadsheetTypeExcel9にするとエクスポートできる。
```VBA
Public Sub 児童名簿_地区別_出力()
 
   Dim objExcel As Excel.Application
   Set objExcel = New Excel.Application
   Dim objWb As Excel.Workbook
   
   Dim varXls As Variant
   Dim varAc As Variant
   varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xlsm"
   varAc = "Q_児童名簿(地区・コード)"
 
   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
                               
End Sub
```  
 
こちらのコードでは理想の動きをしました。理由は判りません。  
 
```VBA  
Public Sub 児童名簿_地区別_出力()  
 
   Dim objExcel As Excel.Application  
   Set objExcel = New Excel.Application  
   Dim objWb As Excel.Workbook  
     
   Dim varXls As Variant  
   Dim varAc As Variant  
 
   varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xls"  
   varAc = "Q_児童名簿(地区・コード)"  
 
   Set objWb = objExcel.Workbooks.Open(FileName:=varXls, ReadOnly:=False, _  
                                       PASSWORD:=PASSWORD_STRING)  
     
   objWb.PASSWORD = ""  
   objWb.Save  
   objWb.Close  
   Set objWb = Nothing  
     
   DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _  
                             varAc, varXls, True  
 
   Set objWb = objExcel.Workbooks.Open(FileName:=varXls, ReadOnly:=False, _  
                                       PASSWORD:="")  
   objWb.PASSWORD = PASSWORD_STRING  
   objWb.Save  
   objExcel.Quit  
   Set objWb = Nothing  
     
   Set objExcel = Nothing  
                                 
End Sub  
```
  • VBA

    4283 questions

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

  • Access

    1074 questions

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

2 試したこと・確認したことの記述内容を修正

wakame01

wakame01 score 12

2019/04/13 13:09  投稿

Access VBA Docmd.TransfferSpreadsheet でクエリがエクスポートできない。
後述のコードの問題点を教えてください。宜しくお願い致します。
この部分でエラーが出ます。
```VBA
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
                             varAc, varXls, True
```
エラーの内容は次の通りで、エクスポートすることができません。
###試したこと・確認したこと
- 出力先のExcelファイルをxls形式にして、acSpreadsheetTypeExcel9にするとエクスポートできる。
```VBA
Public Sub 児童名簿_地区別_出力()
 
   Dim objExcel As Excel.Application
   Set objExcel = New Excel.Application
   Dim objWb As Excel.Workbook
   
   Dim varXls As Variant
   Dim varAc As Variant
   varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xlsm"
   varAc = "Q_児童名簿(地区・コード)"
 
   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
                               
End Sub
```
  • VBA

    4283 questions

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

  • Access

    1074 questions

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

1 コードのtypo

wakame01

wakame01 score 12

2019/04/13 13:07  投稿

Access VBA Docmd.TransfferSpreadsheet でクエリがエクスポートできない。
後述のコードの問題点を教えてください。宜しくお願い致します。
この部分でエラーが出ます。
```VBA
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
                             varAc, varXls, True
```
エラーの内容は次の通りで、エクスポートすることができません。
__「3011 : オブジェクト 'Q_児童名簿(地区とコード)' が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。'Q_児童名簿(地区とコード)' がローカル オブジェクトでない場合は、ネットワークの接続を確認するか、サーバー管理者に問い合わせてください。」__
###試したこと・確認したこと
- Acceessのクエリ「Q_児童名簿(地区とコード)」が存在していて、Accessでは実行できていること。
- 出力先のExcelファイルをxls形式にして、acSpreadsheetTypeExcel9にするとエクスポートできる。
```VBA
Public Sub 児童名簿_地区別_出力()
 
   Dim objExcel As Excel.Application
   Set objExcel = New Excel.Application
   Dim objWb As Excel.Workbook
   
   Dim varXls As Variant
   Dim varAc As Variant
   varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xlsm"  
   varAc = "Q_児童名簿(地区・コード)"
   varXls = Application.CurrentProject.Path & "\temp\" & "児童名簿(地区別).xlsm"
   On Error Resume Next
   
 
   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
                               
End Sub
```
  • VBA

    4283 questions

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

  • Access

    1074 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る