Watanabe-45 さんの引用:
Q1.「xlsm」である理由ですが、アクセスエクスポートデータ以外の部分で、一部をVBA処理するための仕様となります。
Q2.管理者にも確認しましたが、office parsonal2019と単体のaccess2010となります。
Access2010、TransferSpreadsheetは上書きできないのが仕様
https://excelshogikan.com/tips/tips220.html
Access 2010 では、既存のファイルに書き出せない様です。
テストとして、エクスポート先に、存在しないファイルを指定し実行してみるとどうなるでしょう?
エラーとならないなら、既にファイルが存在しているのでエラーとなっている。
エラーとなってしまうなら
引用:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "エクセルポート元クエリ3", srchXls, True, "エクセルポート先エクセルシート3"
TransferSpreadsheet の第2引数 SpreadsheetType
について、
AcSpreadSheetType 列挙型 (Access)
https://learn.microsoft.com/ja-jp/office/vba/api/access.acspreadsheettype
acSpreadsheetTypeExcel12Xml
10
Microsoft Excel 2010/2013/2016 XML 形式 (.xlsx、.xlsm、.xlsb)
となっています。
更に 2010形式の
acSpreadsheetTypeExcel12 9 Microsoft Excel 2010 形式
があります。
2010までは、acSpreadsheetTypeExcel12 を指定し
2013以降の 開発時に、acSpreadsheetTypeExcel12Xml が追加された 可能性もあります。
Access2010 のマシンで
テスト として、
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "エクセルポート元クエリ3", srchXls, True, "エクセルポート先エクセルシート3"
acSpreadsheetTypeExcel12Xml はそのまま。
エクスポート先に、xlsm ファイルではなく、xlsxファイルパスを指定し実行してみましょう。
ここでエラーになるのであれば、Access2010 には acSpreadsheetTypeExcel12Xml の引数が
存在しないのでエラーになっていると思われます。
DoCmd.TransferSpreadsheet acExport,
acSpreadsheetTypeExcel12, "エクセルポート元クエリ3", srchXls, True, "エクセルポート先エクセルシート3"
・acSpreadsheetTypeExcel12 を指定 / エクスポート先に、存在しない、xlsmファイルパス指定
・acSpreadsheetTypeExcel12 を指定 / エクスポート先に、存在している、xlsmファイルパス指定
を実行し、動作確認を行い原因を確認しましょう。