保存先を任意に選択して、クエリをエクセルファイルで出力したく、見よう見まねで以下のモジュールを作成しました。
ホームページのサンプルだと「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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
コマンドプロンプトのテキスト...
-
VB6.0でExcel,PDF,Word出力方法
-
AccessのレポートからPDFをペー...
-
エクセルが裏で動いたままなん...
-
Thunderbird 受信メールからの...
-
ACCESSのCSV出力に関して
-
COBOL、項目末尾に空白がある場...
-
CSVファイルをCGIでダウンロード
-
COBOL FILLER
-
フォルダ内のサブフォルダ名や...
-
Excel で「OLE は現在使用でき...
-
ショートカットで起動した場合...
-
htmlspecialcharsの正しいタイ...
-
Acrobat参照設定
-
エクセルVBAでMHTMLで保存したW...
-
CreatePipeについて
-
Fortranでの出力ファイル
-
VBAで、JPG写真の撮影日時を読...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでクエリをExcelにエクス...
-
CSVファイルの時刻の形式について
-
コマンドプロンプトのテキスト...
-
COBOL、項目末尾に空白がある場...
-
Thunderbird 受信メールからの...
-
ファイナルカットで編集した動...
-
Acrobat参照設定
-
ショートカットで起動した場合...
-
Excel で「OLE は現在使用でき...
-
WshShellから起動したbat(ftp)...
-
iTextでPDFを表示させたら日本...
-
AccessのレポートからPDFをペー...
-
COBOL FILLER
-
EXCEL VBAでのCSVファイル読み...
-
ACCESS エクスポート ダイアロ...
-
VB6.0でExcel,PDF,Word出力方法
-
PHP:unzipコマンドにおけるエ...
-
アクセス→エクセルへエクスポー...
-
TransferSpreadsheetでフルパス...
-
accessのリポートを、excelに出...
おすすめ情報