Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8 : Access 2013)
ダイヤログで指定して保存させる
投稿日時: 18/03/16 13:20:32
投稿者: えあろん

お世話になっております。
 
 
クエリを指定して保存させるには下記のVBAを指定して
保存させているのですが
 
DoCmd.TransferSpreadsheet acExport, 8, "QA", "C:\Users\Desktop\QA.xlsx", True, "
 
アクセスにあるクエリを保存ダイヤログ
を出して保存させるにはどうすればいいのでしょうか?
 
 

回答
投稿日時: 18/03/16 14:12:44
投稿者: hatena
投稿者のウェブサイトに移動

下記が参考になるかと。
 
名前を付けて保存ダイアログを表示しテーブルをExcel形式で保存する : Access VBA
https://www.feedsoft.net/access/tips/tips183.html

投稿日時: 18/03/16 14:41:13
投稿者: えあろん

hatena様
 
返信ありがとうございます。
実は私もこのサイトでこのVBAをコマンドボタンの
コードにいれてみたのですが、なんともなりませんでした。。
エラーも出ません。。

回答
投稿日時: 18/03/16 14:50:00
投稿者: Suzu

ボタンを押して、そのコードは実行されているのでしょうか。
 
ボタンに、クリック時イベントが関連づいていますか?

投稿日時: 18/03/16 14:56:21
投稿者: えあろん

SUZU様
 
返信ありがとうございます。
 
DoCmd.TransferSpreadsheet acExport, 8, "QA", "C:\Users\Desktop\QA.xlsx", True, "
↑のみを記述した場合実行されますので、関連づけられているはずなのですが。。。
 

回答
投稿日時: 18/03/16 15:12:57
投稿者: Suzu

・「なんとも」とは、具体的にどうなっているのでしょうか。
   現状こうなっている の説明をお願いします。
       Ex) コモンダイアログが表示されない
 
・コマンドボタン部分のコードはどうなっているのでしょうか。
 
DoCmd.TransferSpreadsheet acExport, 8, "QA", "C:\Users\Desktop\QA.xlsx", True
 
このままでは、
テーブル/クエリ QA が、C:\Users\Desktop に 「QA.xlsx」として保存されるだけなのは判っていますよね?
リンク先でも、 sFina を渡していますよね?

投稿日時: 18/03/16 15:19:43
投稿者: えあろん

Suzu様
 
返信ありがとうございます。
 
抽象的申し訳ありません。
>コモンダイアログが表示されない
その通りです。クリックしてもダイアログやエラーもでず何も表示されません。
 
>テーブル/クエリ QA が、C:\Users\Desktop に 「QA.xlsx」として保存されるだけなのは判っていますよね?
これにおいては実際結果が出ているの判ります。
 
>リンク先でも、 sFina を渡していますよね?
こちら理解出来ていません。
リンク先といいますと?
 

回答
投稿日時: 18/03/16 15:37:21
投稿者: Suzu

何度でも書きます。
 ・コマンドボタン部分のコードはどうなっているのでしょうか。
 
回答者には、質問者さんの画面は見えません。
再現できるだけの情報がなければ、回答者は推測して回答しているにすぎません。
 
 
 

引用:
>リンク先でも、 sFina を渡していますよね?
こちら理解出来ていません。
リンク先といいますと?

hatenaさんが提示されているリンク先です。
 
引用:
クリックしてもダイアログやエラーもでず何も表示されません。

との事ですから、 Function SaveFile_FileDialog が実行されていないのでは?
 
sFina = SaveFile_FileDialog
 
で、SaveFile_FileDialog を呼び出し、sFina に代入
 
その sFina が空白文字列で無い場合、
  TransferSpreadSheet の 引数にsFina を渡して、
   sFina のファイル名で、ファイルを生成する命令を出していますよね。
 
それが、sFina を渡していますよね。 の発言に繋がっています。

投稿日時: 18/03/16 16:36:12
投稿者: えあろん

Suzu様
 
何度も申し訳ございません。
基本を理解していませんでした。
クリック時のイベントにコードを記述するだけで実行されと勘違い
していました。
 
標準モジュールを記述しないと実行されませんよね?
先程標準モジュールをそのまま貼り付けたのですが、
ユーザー定義は定義されていませんとエラーがでます。
貼り付けたままでは実行できないのでしょうか?
 

投稿日時: 18/03/16 16:58:24
投稿者: えあろん

えあろん さんの引用:
Suzu様
 
何度も申し訳ございません。
基本を理解していませんでした。
クリック時のイベントにコードを記述するだけで実行されと勘違い
していました。
 
標準モジュールを記述しないと実行されませんよね?
先程標準モジュールをそのまま貼り付けたのですが、
ユーザー定義は定義されていませんとエラーがでます。
貼り付けたままでは実行できないのでしょうか?
 

 
因みにクリック時のコードはコマンドボタンが17なので
17に変更したのみです。
これが実行できたら、当初保存したいクエリに変更したいと
考えています。
 
 
Private Sub コマンド17_Click()
 
    Dim sFina As String
     
    sFina = SaveFile_FileDialog
     
    If sFina <> "" Then
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "T-顧客", sFina
   
    
 End If
 
End Sub

回答
投稿日時: 18/03/16 17:25:45
投稿者: Suzu

Private Sub コマンド17_Click()
  Dim sFina As String

  sFina = SaveFile_FileDialog
  If sFina <> "" Then
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "T-顧客", sFina
  End If
End Sub

(スペースや改行等、若干整形しています。)
 
これは、フォームのクラスモジュールへの記載ですよね。
 
 
引用:
先程標準モジュールをそのまま貼り付けたのですが、
ユーザー定義は定義されていませんとエラーがでます。
貼り付けたままでは実行できないのでしょうか?

 
どこで出るのでしょうか。出る部分がハイライトされませんか?
それがヒントになります。
 
手順の中に参照設定をしてください旨の記載がありますが、されていますか?
 
 
回答者には、質問者さんの画面は見えません。
再現できるだけの情報がなければ、回答者は推測して回答しているにすぎません。

投稿日時: 18/03/16 17:31:42
投稿者: えあろん

Suzu様
 
大変お世話になっております。
 
しょっぱなからハイライトされています。
Public Function SaveFile_FileDialog() As String
この部分が黄色くハイライトされ
 
oexcel As New Excel.Application が
青くなっています。。