
保存先を任意に選択して、クエリをエクセルファイルで出力したく、見よう見まねで以下のモジュールを作成しました。
ホームページのサンプルだと「xls」のところが、「CSV」になっていたので、今回、「xls」に直しました。
これを、実行すると「データベースまたはオブジェクトは読み取り専用なので、更新できません」の
メッセージが出力します。
「xls」を「CSV」に戻すと、正常にCSVファイルが出力できます。
原因が分かりません。どなたか助けてください。
Public Function GetFileName() As String
Const ENABLE_WIZHOOK = 51488399
Const DISABLE_WIZHOOK = 0
Dim CurrentPath As String: CurrentPath = Application.CurrentProject.Path
Dim StrFile As String: StrFile = "ベンチマーク_" & Format(Date, "yyyymmdd") & ".xls" ' 選択するファイルの絶対パス格納用
Dim myFilter As String: myFilter = "xlsファイル(*.xls)|*.xls" ' 選択可能ファイルのフィルタ
WizHook.Key = ENABLE_WIZHOOK
INTREXULT = WizHook.GetFileName(0, "", "", "", StrFile, CurrentPath, myFilter, 0, 0, 0, OpenOrSaveFlg)
If INTREXULT <> 0 Then '「ファイルを保存」ダイアログで[キャンセル]を押下した場合
GetFileName = ""
Exit Function
End If
WizHook.Key = DISABLE_WIZHOOK
GetFileName = StrFile
End Function
No.7ベストアンサー
- 回答日時:
マクロを下記の様に作ります。
1. クエリを開く
クエリ名は、Excelに出力するクエリの名前を指定する
ビューは、データシートビューを指定する
データモードは編集を指定する。
2. コマンドの実行
Excelに出力を指定する。
これを実行すると、新規のExcelが開きます。ここに、クエリの内容が
入ります。ここから、先の操作はExcelの通常の操作になります。
これで、ユーザーに保存をさせるのが良いのではないでしょうか。
マクロとしては、単に上記に書いた様に2つのステップだけです。
やって見て下さい。
No.6
- 回答日時:
保存先に付いては、InputBoxなどを利用する
訳には行かないのでしょうか。
それが出来れば、その内容で保存をする事
で問題は解決すると思いますが。
敢えて出来ない方法を選ぶのではなくて
今出来る方法を試すのも一手だと思います。
後は、時間が出来た時に本来の解決に
着手をすれば良いのかと思いますが。
No.5
- 回答日時:
先ほどは失礼しました。
下記を貼り付けて下さい。
Function マクロ2()
On Error GoTo マクロ2_Err
DoCmd.TransferSpreadsheet acExport, 10, "クエリ1", "C:\Users\usui\Documents\Access\教えてGo\access\170215-1948\sample\01.xlsx", True, ""
マクロ2_Exit:
Exit Function
マクロ2_Err:
MsgBox Error$
Resume マクロ2_Exit
End Function
ご回答ありがとうございます。
保存先を利用者に選択できるようにしたいのですが・・・
せっかく、教えて頂いた内容だと、保存先が固定になってしまいそうな・・・
No.4
- 回答日時:
あ、なるほど。
出力時にフォルダを指定したいわけね。
これは参考程度に聞いてもらえればですが。
私なら、汎用的に利用出来る出力用のフォームを作るかな。
そのフォームで、出力フォルダの指定と、出力形式を選択出来るようにすると。
そのフォームにはテーブル(クエリ)名を引き渡す。
データの出力に関しては、全てそいつに任せると。
これなら、出力時はフォームを呼び出せば良いだけになります。
既出かな?
No.3
- 回答日時:
標準モジュールに下記をコピペして下さい。
ここで、クエリ1とかマクロ1とかの名前は摘便変更して
使って下さい。
'------------------------------------------------------------
' マクロ1
'
'------------------------------------------------------------
Function マクロ1()
On Error GoTo マクロ1_Err
DoCmd.SetWarnings False
DoCmd.OpenQuery "クエリ1", acViewNormal, acEdit
DoCmd.Save acQuery, "クエリ1"
マクロ1_Exit:
Exit Function
マクロ1_Err:
MsgBox Error$
Resume マクロ1_Exit
End Function
No.2
- 回答日時:
出力しようとしているファイルを貴方が別の所で使っていませんか。
出ているメッセージは他の誰かががそのファイルを使っている為に、貴方
にはその権限が有りませんと言うメッセージだと思います。
その時に、例えば違うファイル名にするとかしたらどうでしょうか。あ
るいは、誰がそのファイルを掴んでいるのかを調べて、そのファイルを
クエリーで出力をしようとしている時は使わない様にするのも一つの手
です。
その時に誰がそのファイルを使っているのかどうかを調べるのは私は、
詳しくは無いですが。例えばタスクマネージャーなどで今動いているタ
スクの全てを調べて使っているファイルを調べると言うのも一つの手で
す。
それでも現象が出ると言うので有れば。多分に、貴方の今使っている
Accessその物で二重にそのファイルを指定をしていると言う事だと思い
ます。
出力の対象をファイル名を変更してCSVだと良いと言う事が、それを意
味していると思います。もう少し、今起きている現象を正確に捉える事
だと思います。
それでも出るので有れば、多分ここで使っている構文でそれが出来ない
のかも知れません。
Excelは当面はCSVでも読めるので、それで当面の運用に支障は出ないと
思います。なので取り敢えずは最初は、CSVで読ませてから後で、Excel
に名前を付けて保存をすると言うのも一つの手です。
ご回答ありがとうございます。
ACCESSはネットワークにつながっていないパソコンで実行しているため、他の誰かがつかんでいる可能性はありません。
パソコンを再起動して、再度、実行しましたが、結果は変わりませんでした。
また、お客さんに提供するものなので、できれば、手間をかけないようにするため、EXCEL形式で直接出力できるようにしたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 Basic サブスク...
-
Accessのクエリの結果を、既存...
-
access2021 強制終了してしまう
-
アクセス レポートを開いたとき...
-
「テキストデータで送ってくだ...
-
Accessフォームにマクロを組み...
-
列が255以上のCSVファイルをAcc...
-
実行時エラー3131 FROM 句の構...
-
Accessでレポートを印刷する時...
-
レポートの印刷を一括ではなく...
-
Excelを開く時と閉じる時に一度...
-
Accessデータベースの保存形式...
-
access2021 メッセージボックス...
-
ACCESS VBA でのエラー解決の根...
-
accessでlaccdbファイルが削除...
-
【至急・画像あり】建物or住所...
-
エクセルのマクロについて教え...
-
Access2016でフォーム内にExcel...
-
アクセス ステップインのやり方
-
【アクセス】レポート テキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
コマンドプロンプトのテキスト...
-
Thunderbird 受信メールからの...
-
COBOL、項目末尾に空白がある場...
-
エクセルが裏で動いたままなん...
-
Acrobat参照設定
-
iTextでPDFを表示させたら日本...
-
VBA 参照先で選んだファイルを...
-
CSV形式で保存するとファイ...
-
COBOL FILLER
-
accessのリポートを、excelに出...
-
excel vbaでのxml出力がわかり...
-
エクセル:VBAで自動的にCSV形...
-
クエリー出力からEXCELに吐き出...
-
テキストファイルをエクセルで...
-
ショートカットで起動した場合...
-
VB6.0でExcel,PDF,Word出力方法
-
AccessのレポートからPDFをペー...
-
マックで作ったPDFファイル...
おすすめ情報