Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


503 / 2272 ツリー ←次へ | 前へ→

【11396】Access→Excel Versionが95でExportされる cocoa 10/1/20(水) 10:57 質問[未読]
【11399】Re:Access→Excel Versionが95でExportされ... 小僧 10/1/20(水) 17:16 回答[未読]
【11403】Re:Access→Excel Versionが95でExportされ... cocoa 10/1/21(木) 11:47 お礼[未読]
【11400】Re:Access→Excel Versionが95でExportされ... YU-TANG 10/1/20(水) 20:52 回答[未読]
【11402】Re:Access→Excel Versionが95でExportされ... cocoa 10/1/21(木) 11:28 質問[未読]
【11411】Re:Access→Excel Versionが95でExportされ... YU-TANG 10/1/21(木) 21:24 回答[未読]

【11396】Access→Excel Versionが95でExportされる
質問  cocoa  - 10/1/20(水) 10:57 -

引用なし
パスワード
   お世話になります。

Private Sub Export_Click()
  Dim xlsFileName As String
    xlsFileName = "c:\" & Format(Date, "yyyymmdd") & ".xls"
  
    DoCmd.OutputTo acOutputQuery, "Q_shohin", acFormatXLS, xlsFileName, False
    MsgBox "出力完了"
End Sub

1.
上記を実行すると、エクスポートはされるのですが、保存形式がExcel95のようで、
上書き保存しようとすると、最新の形式に更新しますか?と警告されます。
元から、Excel2003形式でエクスポートする指定方法はないものでしょうか?

2.エクスポートした、yyyymmdd.xlsを開いている際に、上記vbaを実行すると、
 実行時エラーとなり、ファイルを保存できませんとなります。
 実行時エラーを出さないようにし、MsgBoxでファイルを閉じてから、
 再度実行してくださいと、こちら側より警告を出すようにできないでしょうか?

宜しくお願い致します。

【11399】Re:Access→Excel Versionが95でExportさ...
回答  小僧  - 10/1/20(水) 17:16 -

引用なし
パスワード
   ▼cocoa さん:
こんにちは。

>元から、Excel2003形式でエクスポートする指定方法はないものでしょうか?

残念ながら OutputTo メソッドでは難しいです。


当方とVBA初心者さんとのやり取りでもありますが、
h tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=11370;id=access

TransferSpreadsheet メソッドを使うと
Excelのタイプ指定ができますが、
データをエクスポートするだけの機能ですので
見た目等があまり宜しくありません。

Excelへの細かい操作が必要な場合には
オートメーションと呼ばれる操作が必要となってきます。


> 再度実行してくださいと、
> こちら側より警告を出すようにできないでしょうか?

OutputTo メソッドを使うかどうかで変わってくるのですが
Excelが開いてるかどうかを確認してから実行する方法と
とりあえず実行してからエラー内容で切り分ける方法があります。

前者は(まずありえないと思いますが)確認の際には開いてなかったのに
OutputTo メソッドが実行される時に誰かがExcelを開く可能性が
ありえます。

後者は「On Error GoTo」「エラートラップ」などの語句で
Web検索を行うと色々方法が探せるかと思われます。

【11400】Re:Access→Excel Versionが95でExportさ...
回答  YU-TANG  - 10/1/20(水) 20:52 -

引用なし
パスワード
   こんばんは、YU-TANG です。

> 元から、Excel2003形式でエクスポートする指定方法はないものでしょうか?

Undocumented な技なので、いっさい保証しませんが。

DoCmd.OutputTo acOutputQuery, "Q_shohin", acSpreadsheetTypeExcel9, xlsFileName, False

それでは。

【11402】Re:Access→Excel Versionが95でExportさ...
質問  cocoa  - 10/1/21(木) 11:28 -

引用なし
パスワード
   ▼YU-TANG様

>Undocumented な技なので、いっさい保証しませんが。

>DoCmd.OutputTo acOutputQuery, "Q_shohin", acSpreadsheetTypeExcel9, xlsFileName, False
試した結果、Excel2003形式として保存されているかどうかはわからないのですが、
上書き保存した際に、警告がでなくなりました。
まずお礼申し上げます。ありがとうございました。

あと、もう一つ質問なのですが。
acSpreadsheetTypeExcel9について、調べました。
インポートするデータのファイル形式を指定する定数です。とありました。

どこで、ファイル形式を指定しているのでしょうか?
それとも、acSpreadsheetTypeExcel9を記述すると、インストールされいるVersionを汲み取ってエクスポートされるのでしょうか?

宜しくお願い致します。

【11403】Re:Access→Excel Versionが95でExportさ...
お礼  cocoa  - 10/1/21(木) 11:47 -

引用なし
パスワード
   ▼小僧 様

いつもお世話になります。

DoCmd.OutputTo acOutputQuery, "Q_shohin", acSpreadsheetTypeExcel9, xlsFileName, False

上記を記述する事により、エクスポートする際の形式の問題は回避できそうです。
※回避されているかどうかはわからないですが、実際欲しい結果となっております。

on error goto で検索したところ、理解できました。
err.Descriptionで表示できる事がわかりました。

ありがとうございました。

【11411】Re:Access→Excel Versionが95でExportさ...
回答  YU-TANG  - 10/1/21(木) 21:24 -

引用なし
パスワード
   こんばんは、YU-TANG です。

> どこで、ファイル形式を指定しているのでしょうか?

acSpreadsheetTypeExcel9 で、ということになるでしょうね。
定数自体の意味は、下記辺りを参照するか、独自に検索してください。

h tp://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/apr07/hey0403.mspx

ただ、OutputTo メソッドがこの定数をどのように解釈しているのかは、
まったく分かりません。
最初のレスで、

> Undocumented な技なので、いっさい保証しませんが。

と前置きしてあります。
意味は、この用法について MS の公式資料は一切存在しないということです。
もちろん仕様も不明です。試した結果がすべてであって、それが正しいのか
バグなのか、次のバージョンでも使えるのかそれともパッチが当たった
とたんに使えなくなるのか、誰にも分かりません。本来存在しないはずの
機能だからです。
AS IS かつ @Your Own Risk の世界です(Access にはそういう隠し機能が
たくさんあります)。

なので、保証や解説が必要なようでしたら、小僧さんの回答にあるような
真っ当な方法をお勧めします。
それでは。

503 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078196
(SS)C-BOARD v3.8 is Free