次の方法で共有

マクロを使って、クエリを rtf として出力する際、同じファイル名が存在していた時の上書き確認のメッセージを表示しないようにしたい。

Anonymous
2011-01-27T12:50:40+00:00

上記の関連質問です。

マクロを使って、クエリを rtf として「My Documents」へ出力するとき、前回のファイルがあると「同じファイルがあるが上書きしますか?」と出ます。

ここでは「はい」とするので、上記メッセージを出さぬようにするにはどうすればよいでしょうか?

<分割前タイトル>

マクロを使ってテーブル作成クエリを実行する際、途中で出るメッセージを出ないようにしたいのですが、下記のような場合はどうすればよいでしょうか。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-02-01T15:37:12+00:00

CreateObject("WScript.Shell").SpecialFolders("MyDocuments")について

“「My Documents」へ出力するとき”となってたので、保存先をマイドキュメントにされたいのかなと思っていました

マイドキュメントのパスは、

XPだと、C:\Documents and Settings\ユーザ名\My Documents

Vista/Win7なら、C:\Users\ユーザ名\Documents

という感じに、OS毎もしくはOSのログインユーザ毎にフォルダパスが違うことになる。

なので、Windows Script Hostを使ってマイドキュメントの実際のパスを取得しています。

CreateObject("WScript.Shell").SpecialFolders("MyDocuments")でその時ログインしているユーザのマイドキュメントのパスが取得できます。

マイドキュメントではなく保存先はどのユーザでも常に固定ということであればこの仕組みは必要ない。

特殊フォルダを取得する VBA のキーワードでGoogle先生とかBingにいさんに聞いてみるといろいろ教えてくれるでしょう。

で、例にとって書いてみます。

Function OutputToRTF()

     DoCmd.OutputTo acOutputQuery, "2010年入社社員", acFormatRTF, "C:\MyDocuments\社員\2010年入社.rtf"

End Function

これは、C:\MyDocuments\社員というフォルダに2010年入社.rtfが出力される。

Function OutputToRTF()

     DoCmd.OutputTo acOutputQuery, "2010年入社社員", acFormatRTF, CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\2010年入社.rtf"

End Function

これは、XPだと、C:\Documents and Settings\ユーザ名\My Documentsに2010年入社.rtfが出力される。

OutputToRTFというのは、私が勝手につけた関数名です。なのでご自由にどうぞ。ただし、すでに存在する関数名にしないようにします。

![](http://gvktpa.bay.livefilestore.com/y1pNcAZU4acQCGTwyDM9NN5vA52Xq1M7o3K3_04Dw1j2rCAA47iT0ca56C3j43gPej2F8_Ni62adR0QNz2Yd_7TCjS5QwUg1m4c/2011020201.PNG?psid=1)

標準モジュールを押下しVBE上に新規標準モジュールを作成

![](http://gvktpa.bay.livefilestore.com/y1pNcAZU4acQCEzwyTg1U9IngGLobaU23PWYuRXWgPvZ9lFLGWuYN7czjfLUW4gEpkTSPlhk_DOlGeyzsGLIYBWzpaYcRZDllZ8/2011020202.PNG?psid=1)

コードを入力し、Moduleを保存する。

![](http://gvktpa.bay.livefilestore.com/y1pwo4zPHWFE-tsNTvkKIhZ4DmKKke7fQCl49S60Ni4os_8egFDhngCvpAScNq6RX5rYZ6wfhRN-WDKLi_CAnHhlfVY711gOK4S/2011020203.PNG?psid=1)

マクロエディタ:プロシージャの実行マクロアクションを選択し、...ボタンで式ビルダを起動したところ。直接タイプしても構わない。

![](http://gvktpa.bay.livefilestore.com/y1pwo4zPHWFE-t0r6bX11iG9vQwzUZ1ohYhWnB3XbQp6aOXXp3qUktF_OfxBuDU1Hx4dQDeQ8KthjvErQAraRsvUqntgKCDeYRg/2011020204.PNG?psid=1)

コマンドボタンクリック時に実行させるなら

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2011-01-27T14:21:45+00:00

Function OutpuTortf()

    DoCmd.OutputTo acOutputQuery, "QueryName", acFormatRTF, CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\FileName.rtf"

End Function

'CreateObject("WScript.Shell").SpecialFolders("MyDocuments")でユーザのドキュメントフォルダパスを取得

こんな感じにFunctionプロシージャにして、

アクション:プロシージャの実行

引数:OutpuTortf()

とすれば確認なく上書きされたはず。

コマンドボタンクリック時イベントプロパティに設定するなら、

クリック時: =OutpuTortf()

この回答は役に立ちましたか?

0 件のコメント コメントはありません

2 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2011-05-12T09:02:20+00:00

    MukkuMuku さん、コメントありがとうございます。

    HEINRICH1937 さん、こんにちは。

    お日にちが経ちましたが、その後、いかがでしょうか。

    同じような情報をお探しの方にもご参考いただけるよう、今回は私の方で \[回答としてマーク\] をいたしました。

    今後も Answers をよろしくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2011-02-01T12:04:41+00:00

    MukkuMukuさん、ありがとうございました。

    頂いたヒントをもとに試みましたが、私の知識では上手く行きませんでした。

    ついては、具体的に次のような「社員データベース」の場合、どうすればよいか、再度教えて頂けるとありがたいです。

    出力するクエリ名:クエリ 2010年入社社員

    出力先:c:\MyDocuments\社員

    ファイル名:2010年入社.rtf

    (引数:OutputTortf()のところは、英文字通りどおりのままでよいのでしょうか、それともプロシージャに名前をつけてその名前をいれるのですか?

    また、"WScript.Shell"のところは何が入るのでしょうか?)

    初歩的質問ですがよろしくお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません