ACCESSのVBAで自動的に保存フォルダを開くには

このQ&Aのポイント
  • ACCESS2000を使っています。現在レポートをスナップショットに変換し、それを分類されたネットワークフォルダに保存しています。保存先は県名によって異なります。ボタンを押すとスナップショットが作成され、指定されたフォルダが自動的に開きます。
  • 自動化によって、時間のかかる作業を効率化したいと考えています。ボタンを押すだけでスナップショットが作成され、適切なフォルダが自動的に開かれる仕組みを実現したいと思っています。
  • アドバイスをいただけると幸いです。初心者のため、簡単な説明や手順を教えていただけると助かります。
回答を見る
  • ベストアンサー

ACCESSのVBAで自動的に保存フォルダを開くには

ACCESS2000を使っています。 現在レポートとして作成したものを スナップショットに変換し、それを文書の内容ごとに分類されたネットワークフォルダに保存しています。 たとえば 県名が「福岡」であれば、「福岡」というフォルダの中の→「平成15年度」→「○○書」というフォルダに、「佐賀」であれば「佐賀」→「平成15年度」→「○○書」というフォルダに保存しているのです。 現在は「スナップショット」に変換することはマクロを組み、フォームからボタンを押すだけでできるようにしています。 でもできたらその後の処理も自動的に行いたいのです。 イメージは ボタンを押すをスナップショットに変換して印刷し、さらにレポート内の、たとえば「県名」というコントロール内の文字が「福岡」であれば「福岡」→「平成15年度」→「○○書」というフォルダが自動的に開くというものです。 さらにできたらファイル名に指定したコントロールの文字が自動的に入れば申し分ないのですが。 かなり欲張りだとは思いますが、量の多い仕事なのでとても時間をくっています。 もっと自動化が実現できたらと思ってお尋ねしてみました。 アドバイスよろしくお願いします。 またVBAは初心者なので何卒よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • human_7
  • ベストアンサー率29% (15/51)
回答No.2

#1です マクロで「出力ファイル」の欄を空白にされているのですね、なるほど。 では、お聞きしますがフォームでボタンを押す際にはその時点の情報(フォームに有るフィールドの値など)で保存先のフォルダ・ファイル名は特定できますか? できるなら、先のアドバイスが可能だと思います。 例えばですが、モジュールを作成して適当な関数(Function)を作成します。ここではABCとしましょう。 とりあえずABCの中身はこんな感じにしてみます。 Public ABC() As String ABC = "c:\abc.snp" End Function これを保存しておいて、マクロで「出力ファイル」の欄に「=ABC()」と指定しておくと、ダイアログが出ずに"c:\abc.snp"にスナップショットファイルが作成されると思います。 後は、条件に応じてABC関数が戻す内容を変えてやれば良いと思います。 例えば、画面のフィールド「項目あ」によって判断したければ、ABC関数を Public ABC(P_判定項目 As String) As String if (P_判定項目 = "福岡") then ABC = "c:\abc福岡.snp" else ABC = "c:\abcその他.snp" end if End Function といった感じにし、マクロでは「=ABC([Forms]![画面名]![項目あ])」みたいな感じで指定します。条件が複数あるなら引数を増やすと良いでしょう。

ohdorry
質問者

お礼

アドバイスありがとうございました。 >お聞きしますがフォームでボタンを押す際にはその時点の情報(フォームに有るフィールドの値など)で保存先のフォルダ・ファイル名は特定できますか? はい、フォーム上に「福岡」という値があれば「福岡」というフォルダに・・・という特定はできますが、こういう意味でよろしいですか。 アドバイス通りにコードを記述してみましたが、残念ながら私のレベルではむずかしいようです。 (エラーメッセージが出てしまいます) もう少し自分で勉強してからまたトライしてみたいと思います。 いろいろありがとうございました。

その他の回答 (1)

  • human_7
  • ベストアンサー率29% (15/51)
回答No.1

スナップショットを作成するマクロを調べてみました。マクロで出力ファイルを指定するところに関数も指定できます。その関数で状況に応じたファイル名を返せばご期待の事は可能だと思います。 他にも、スナップショットは固定ファイル名で作って、作ったファイルを移動するという手も有ると思います。 ちなみに、現在はどうされているのでしょうか?質問文からはちょっと読みとれませんでした。 最初のアドバイスで作る関数についてですが、恐らく次の様な仕様だと思います。 ・レポートの作成と同じ条件を引数として受け取る(画面上のフィールドの場合も有るでしょう) ・引数で受け取った内容を判断して保存先のファイル名を組み立てる。必要に応じてフォルダを作ったりする必要もあるかも知れません。 ・組み立てたファイル名を戻り値として返す。

ohdorry
質問者

補足

さっそくのお答えありがとうございます。 >現在はどうされているのでしょうか? 「出力」というアクションでファイル形式を「snapshot format」にしてマクロを作りました。 これを登録したボタンを押すと「ファイルへの出力」というダイアログボックスで出ますのでここで保存先のフォルダをその都度選んでから保存しています。 >スナップショットは固定ファイル名で作って、作ったファイルを移動するという手も有ると思います。 すみません。もう少し具体的にお願いできますか? >マクロで出力ファイルを指定するところに関数も指定できます。その関数で状況に応じたファイル名を返せばご期待の事は可能だと思います。 ・・・恐らく次の様な仕様だと思います。 申し訳ありませんが、こちらの方ももう少し具体的に記述方法などを教えていただけませんか。 もちろん関数は知っていますが、これだけでは私のレベルではどうしたらいいのかわかりません。 よろしくお願いします。

関連するQ&A

  • ACCESSのマクロで特定のレポートを印刷・保存したいが・・・

    ACCESS2000のマクロについてお尋ねします。 フォームから特定のレポートを印刷し、同時に指定したフォルダに保存するマクロを作っています。 アクション:レポートを開く  レポート名:R_報告書  ビュー:印刷プレビュー  Where条件:[Forms]![フォーム名]![コントロール名]=[レポートのコントロール名] アクション:出力  オブジェクトの種類:レポート  オブジェクト名:R_報告書  出力ファイル形式:Snapshot Format  出力ファイル:(保存先フォルダへのパスとファイル名)  自動起動:いいえ この状態だと問題なくうまくいくのですが、ビューを「印刷プレビュー」から「印刷」にすると 「印刷中」のダイアログボックスが出て「R_報告書を印刷中です」と表示され、カウンターがクルクル回り始め、1からテーブルに保存されているレコード数をすべて表示し終えるまで「保存」されません。 現在2000以上のレコードが入っているのでかなりの時間がかかります。 一体「印刷プレビュー」を「印刷」にするだけでなぜこんなことになるのでしょう? 一週間以上さまざまなことを試してみましたがお手上げです。 ご存知の方がいらしたらよろしくお願いします。

  • 「東方永夜抄」のスナップショットの保存場所について

    自分はウィンドウズ7で東方永夜抄をプレイしているのですが、 保存先が解りません。 検索に掛けてみた所、 「保存される場所はスクリーンショットを撮ったときそのゲームのフォルダにsnapshotというフォルダが自動作成されるのでそこに保存される」 と出てきました。 しかし、「snapshot」というフォルダが見つかりません。 隠しファイルを表示するように設定したのですが、それでも無理でした。 詳しい方教えて下さい!!

  • フォルダ名だけを取得するVBA

    VBAを使ったエクセルテンプレート適用ツールを作成しているのですが そのVBAのことで教えてください。 現在自作のフォーム上にあるテキストボックスにフルパスが入っているとします(添付図参照)。 *この前提は必須と考えてください。 次に作成ボタンをクリックすると Step1 新しいブックが開かれ行幅や書式などが自動で調整されます。 Step2 ブックの保存ダイアログが自動で開きます。     ただし、保存ダイアログが開いた時点で自作フォーム中の     テキストボックスで指定したフルパスに移動しており、     且つ移動先のフォルダ名(<-注意!!フルパス名ではありません!!)と     同じ文字列をファイル名入力欄に自動で入力されるようにします。    ex) D:\MyProject\Project01\TaskA\にブックを作成し保存する場合、      保存ダイアログのファイル名欄にTaskAとだけ書く。 マクロ自体はここでストップし、これ以降はユーザーがそのファイルメモで 保存してよいかどうかを判断し、問題なければ手動でダイアログ上の「保存」ボタンを押します。 問題はStep2で、保存先のフォルダ名と同じ文字列を保存ダイアログのファイル名に記入するには どのようなコードを書いたらよいでしょうか。 私自身としては下記の二案を考えているのですがそれぞれについて疑問があるので教えてください。 案1 作成ボタンを押した時点でテキストボックスに書かれているフルパスの文字列から   末尾にあるフォルダ名だけを取得して変数に代入し、これを保存ダイアログの   ファイル名欄に反映させる。   疑問:テキストボックスのValue値に書かれているフルパスを示す文字列から      末尾のフォルダ名だけを取得するためのコードは何と書けばよいのでしょうか? 案2 ブックの保存ダイアログが開いて保存先のパスに移動してから今保存ダイアログで    開いているフォルダ名を取得する。    疑問:今アクティブになっているブックが保存されているフォルダ名だけを取得する    方法なら確かあったような気がしています。    しかし今保存ダイアログで表示されているフォルダ名を取得するコードは何と    書けばよいのでしょうか?    そもそもそういったコードや操作自体VBAにあるのでしょうか?

  • 特定の場所に特定の名前で保存するVBA

    エクセル2003を使用しているあるファイルがあります。 コマンドボタンをクリックすると「L:」→「フォルダB」→「事務所」→「000_PERSONAL」→「01」→「休暇関係」→「休暇作業予定表」→「○○○〇年休暇作業予定表」のフォルダの場所にエクセル2003形式で保存したいと思います。 この時、「L:」→「フォルダB」→「事務所」→「000_PERSONAL」→「01」→「休暇関係」→「休暇作業予定表」までは既にフォルダを作成していますが、最後の「○○○〇年休暇作業予定表」は作成していません。 ○○○○の所には現在の年度を自動記入し、コマンドボタンを押すと自動でフォルダを作成出来る様なVBAにしたいです。※既にフォルダが作成されている場合は作成しない様にします。 保存するエクセルファイル名は、あるファイルのE1セルに「▽▽▽▽年▽▽月▽▽日」と記入されているので、「▽▽▽▽年▽▽月▽▽日休暇作業予定表」と言う名前で自動で保存したいと思います。 この様なVBAはどの様に組めば良いでしょうか?

  • Accessのレポートを自動でAcrobatに書き込む方法は?

    VB6で注文書を作っています。 レポートはAccess97を使っています。 出力後、郵送で送っていますが、これをメールの添付ファイルで自動で送れればと思っています。 スナップショットに書き込むのはできるのですが、できればアクロバットで送りたいのです。 1)開始ボタンを押す 2)Accessのプレビューで内容が表示 3)プレビューを閉じる 4)c:\得意先A.pdf のファイルを作成 5)相手先にメールの添付ファイルで得意先A.pdfを送る。 この流れの4)のやり方が解りません。 2)で手動で書けばいいのですが、相手先が多く、できればVBで自動処理にしたいのです。 宜しくお願いします。

  • ネットでなにかを保存する時に指定のフォルダを指定したい

    ネットでなにかを保存する時にダウンロードするものによって指定のフォルダを自動で指定することってできますか? 例えば音楽ファイルの場合は自分で決めた音楽専用フォルダーを自動で指定して後は保存のボタンを押せばダウンロード開始といった具合にしたいのですが。 なにかをダウンロードする時にどういう理由でかわかりませんが自動でデスクトップとか、とある指定のフォルダーになってしまって、毎回手動でいつも保存しているフォルダーを指定するのが不便です。 よろしくお願いします。

  • デスクトップのフォルダからデータの上書き保存する

    下記の件についてご質問をさせて頂きます。 ご存知の方、ご指導をお願い致します。 使用機種はWindows 8.1 です。 保存場所は下記の通りです。 PC → ドキュメント → 有限晴海 → 平成27年度 ↽ A 現在、上記の保存場所から順番に開いてAにたどり着き、Aにデータを日々入力しています。 質問 1 デスクトップにAのフォルダの作成方法。 質問 2 デスクトップにあるAのフォルダを開き、日々の売り上げデータを入力し、そのデータが自動的に保存場所Aに上書き保存させる方法。 説明が十分か不明ですが、よろしくお願い致します。

  • エクセル:バックアップファイルの保存先に毎月、フォルダを自動で作りたいのです

    エクセル、VBA初心者です。よろしくお願いします。 以前に、ネットワーク先の自動保存の保存先を次のようにこちらでご指導いただきました。 ('保存先パス名  NetPath = "\\○○\□□\△△\  BkName = ThisWorkbook.Sheets("sheet1").Range("A1").Text & _ Format(Now(), "yyyymmddhhmm") & ".xls") で、おかげさまでネットワークの任意の保存先にエクセル「sheet1」の「A1」に入れた文字+年月日時間を加えたファイル名で、うまくバックアップとれています。 ◆今回は、その保存先フォルダ\△△の中にさらに自動でフォルダをつくるVBAを書きたいのです。 ◆例えば「\\○○\□□\△△\2006年4月」   といった具合に2006年4月1日になったら、自動で「2006年4月」という名のフォルダをつくり、その中に4月の間はエクセルファイルを自動で保存したいのです。 ◆そして、5月1日になればフォルダ「△△」の中に「2006年5月」というフォルダが自動的にできる。 上記のようなイメージです。 自身では、そのようなVBAが、可能か不可能なのかすら全くわかりません。初心者といえど勉強不足で皆様に頼ってばかりですが、どうかご指導ください。 以上、よろしくお願いします。

  • Access PDF作成-日付フォルダー作成保存

    使用MS Access 2010 たびたびの質問で恐縮です。 レポートをPDFで一件づつ自動作成-任意のファイル名で自動保存のイベントは、 質問番号:6530399 のご回答で上手くいったのですが、試行してみるとPDFファイルが大量にできるので、「日付名フォルダー」を毎日生成して、そこに自動保存したくなりました。そこで新しい質問として新たにお尋ねします。 「受注一覧」という表形式フォームに日々の受注客百件程度が表示されています。レコードのフィールドに[ID]という受注IDコードがあります。 受注確認メールへPDF添付ファイル作成用の「受注確認PDF」というレポートがあります。 レコードソースのパラメータクエリで、受注一覧フォームの受注IDを参照しています。 それを使って"受注確認書(受注ID:" & [ID] & ")"というファイル名で"C:\PDF"フォルダーに"yyyymmdd"というフォルダーを自動で作成し、そこにPDFを一件ごと(1ページ)別名で保存するボタンを作成したいのです。 "yyyymmdd"のフォルダーがすでにある場合はそこに保存、無い場合は自動生成することにしたいと思っています。 Private Sub コマンド1_Click() Dim path As String path = "c\受注確認PDF" & Format(Date, "yyyymmdd") MkDir path On Error GoTo ERR1 Exit Sub ERR1: DoCmd.GoToRecord acActiveDataObject, , acFirst Do If Me.Recordset.RecordCount = Me.CurrentRecord Then MsgBox "最終レコードまで出力しました。" Exit Sub End If DoCmd.OutputTo acOutputReport, "受注確認PDF", acFormatPDF, "c\受注確認PDF" & Format(Now(), "yyyymmdd") & "\" & "受注確認書(受注ID " & Me.ID & ").pdf" DoCmd.GoToRecord acActiveDataObject, , acNext Loop End Sub DoCmd.GoToRecord から後の部分はhatena1989 様のご回答で上手くいったのですが、前半部分の日付名フォルダー作成のところが上手くいきません。 MkDir path →実行時エラー75 パス名が無効です。 となってしまいます。 また、エラートラップというのでしょうか?その書き方も自信ありません。 ご教授いただきたく、お願いします。

  • マクロでの自動保存

    エクセルで作ったデータをボタン一つで自動的に特定のフォルダーに 保存するマクロを作りたいのですが、色々なサイトを参考に保存名前を 付けて保存するプログラムまでは組めたのですが、特定のフォルダに 保存していくプログラムがうまく動きません。 下記に作成したコードを記載するので、アドバイスお願いします。 Sub データ保存() Sheets("シート名").Select パス = ActiveWorkbook.Path 別名 = Application.InputBox(prompt:="入力例.12345", _ Title:=" ファイル名を入力して下さい", Type:=2) 別名 = パス & "\" & 別名 & ".xls" Sheets("シート名").Copy ActiveWorkbook.SaveAs Filename:=別名 ActiveWorkbook.Close End Sub