- ベストアンサー
accessのテーブルのリンクのファイル名について
初めにaccessはかなり部分的な知識しかありませんのでド素人な質問になりますことを申し上げます。 accessでcsvデータを活用する際にテーブルのリンクを使用します。 それで話が済めば簡単なのですが元のcsvデータのファイル名が常に同じではないのです。 うまく説明できないのですが、仕事上でお客様からデータを頂き、各データのファイル名に共通部分があるのですが、上書きを防ぐために固有な部分もあります。csvの名前を変更するのも面倒です。その共通部分を生かしてスムーズにリンクを行う方法があればご教示下さい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
1.モジュールを新作する (オブジェクトの中のモジュ-ル機能で) 2.そのモジュ-ル名をマクロで指定して実行 (マクロを新作して そのマクロのなかに 「プロシジァーの実行」を指定する モジュ-ル名も入れる) 新規モジュ-ルの命令 (内容) Shell "cmd.exe /c copy C:\FL1\FILE1*.TXT C:\FL1\OUT1.TXT", vbHide (1行で書く) C: ドライブ名 FL1 フォルダ-名 FILE1 ファイル名の共通部分名(固定部) * あいまい検索機能 (場合によっては 固定部ファイル名検索前部につける) .TXT 拡張子 OUT1.TXT アウトプットファイル名 この命令により 固定部名の同一ファイルが 結合されて 1つのアウトプットファイルができる テーブルリンク名は これを指定することになる マクロ命令の 「テキスト変換」機能でも読み取り可能
その他の回答 (4)
- yatoaa
- ベストアンサー率30% (110/362)
プログラムの動作を確認する方法ですが。 1.プログラム単体でのテスト (プログラムが適正に稼動するか) ・モジュ-ルをデザインで開き、実行 の SUB/実行フォーム をクリック これでアウトプットファイルが正しくできているかの確認する できていなければモジュ-ル内容の再確認 2.マクロで実行してテスト マクロ行を指定して 実行 --------------------------------------------------------- モジュ-ルが本当にマクロから呼ばれて稼動したかどうかを 確認するには Shell "cmd.exe /c copy **************** の下へ MSGBOX "END" というような命令をモジュ-ルへ追加しておけばモジュ-ルが実行に 到っているかが判断できます (メッセージボックスが画面に出てきます) どうしても うまくいかない場合は 下記のホ-ムペ-ジで質問すれば より 詳細で高度な回答が得られる可能性があります (高度な知識を持った回答者が多数います) http://www.moug.net/
お礼
yatoaaさん、ありがとうございました。 動作は確認できました。 ファイルは今のところ反映されていませんが、ご紹介いただいたサイトでまた勉強したいと思います。 ありがとうございました。
- yatoaa
- ベストアンサー率30% (110/362)
モジュ-ルを表示しての実行なら (プログラムの単体テストのような感じ) (念のためにマウスのポインターはモジュ-ルのどこかへセット **** Iのような表示状況) 実行 ↓ 「SUB/ユーザーフォームの実行」をダブルクリック です (PF5キーを押してもたぶん稼動しません) それでも エラーメッセージが出たり 全然実行された様子がなければ 「参照設定」のチェックマークを確認(VBA関連が有効になるように チェックマークされていないかの確認のため) ////////////////////////////////////////////// うまく モジュ-ルが 稼動すれば マクロを作り そこから 実行 オブジェクトウインドを「マクロ」にして 当該のマクロ行を選択して 「実行」 /////////////////////////////////////////////// うまく マクロが動けば フォームをつくり ツールボックスから 「ボタン」を作る 「ボタン」により マクロを稼動する 仕組みにすれば 運営が便利
お礼
yatoaaさま何度もありがとうございます。 現在の状況なのですが実行してもマクロが反映されているかどうか確認できません。 私のイメージはマクロを実行すればOUT1.csvに見たいデータが反映されるのだと思っているのですができていません。 マクロの設定ですが。アクションでプロシージャの実行を選択して、プロシージャ名のところにモジュールで作成した際の名前を記載すればいいんですよね? あと何か足りないのかと思うのですが。参照設定もVBA関連にはチェックしました。 全然構造を理解せずにトライしたのが無謀だったのかもしれないのですが(^_^;)
- yatoaa
- ベストアンサー率30% (110/362)
・間に入れる内容は Shell "cmd.exe /c copy C:\Documents and Settings\ユーザー名\デスクトップ\フォルダ名\*共通部分名.csv C:\Documents and Settings\ユーザー名\デスクトップ\フォルダ名\OUT1.csv", vbHide でいいでしょうか? 共通部分は名前の後ろが一致するので*は前にしました。 それで いいと思います ・OUT1.csvは*共通部分名.csv と同じフォルダに入っていていいのでしょうか? 問題ありません ////////////////////////////////////// モジュ-ルのテスト実施するなら モジュ-ルをデザインで開いたままで 「実行」 を押せば モジュ-ルが実施されます (ふだん使用する場合は マクロ命令で指定しての実施ですが) もしも実行エラーになったら 「参照設定」で vba関連の指定にチェックマークが入っていないかもしれませんので 確認する必要があるかもしれません /////////////////////////////////////// 話はそれますが(よけいなお世話かもしれませんが) データー保存フォルダ-は C:\Documents and Settings\ユーザー名\デスクトップ を使用すると なにかと面倒ですので c:の直下へフォルダ-を新規作成して そこを使用するほうが便利だと思います
お礼
ありがとうございます。 何度もすみません。 モジュールのテストなのですが、F5を押すとマクロが出てくるのですが何もないのでキャンセルボタンのみ有効になっています。オブジェクトのマクロでは作成されているのですが。 何か設定の仕方がおかしかったのでしょうか? 保存場所はご指摘のようにしたいと思います。
- yatoaa
- ベストアンサー率30% (110/362)
モジュ-ル ↓ 新規作成 ↓ 挿入 ↓ プロシージャ ↓ ボックスが出てくる ↓ 名前(モジュ-ル名)を入れる 例えば bbb11 ↓ 種類 → public function を指定 Public Function bbb11() End Function と出てくるので この間に Shell "cmd.exe /c copy C:\FL1\FILE1*.TXT C:\FL1\OUT1.TXT", vbHide を入れて Public Function bbb11() Shell "cmd.exe /c copy C:\FL1\FILE1*.TXT C:\FL1\OUT1.TXT", vbHide End Function となって モジュ-ル完成です 次はこのプログラムを実行させるために マクロをつくります マクロ を 新規作成 内容は プロシージャの実行 を指定 下の欄に 名前を書く bbb11() と書く このマクロを実行させればいいです マクロ実行は マクロ名をダブルクリックしてもできます 普通はフォームを作成して そこへ「ボタン」を作成して それをクリックすることで実行します
お礼
ありがとうございます。 上記に従ってやってみましたが何点かご質問をさせて下さい。 ・間に入れる内容は Shell "cmd.exe /c copy C:\Documents and Settings\ユーザー名\デスクトップ\フォルダ名\*共通部分名.csv C:\Documents and Settings\ユーザー名\デスクトップ\フォルダ名\OUT1.csv", vbHide でいいでしょうか? 共通部分は名前の後ろが一致するので*は前にしました。 ・OUT1.csvは*共通部分名.csv と同じフォルダに入っていていいのでしょうか? 以上よろしくお願いします。
お礼
すみません。 マクロを新作して そのマクロのなかに「プロシジァーの実行」を指定する モジュ-ル名も入れる) のところなのですが オブジェクトのモジュールを選択してその後どういう操作をすればよいのかわかりません。やはり難しいのですね(-_-;)