エクセル2000のマクロについて



 ◇-?エクセル2000のマクロについて-OOITOS-03/21-14:56(214)-No.443907
   ┗?!Re:エクセル2000のマクロについ...-酢吉-03/21-20:09(209)-No.443931
     ┗?!!Re:エクセル2000のマクロについ...-OOITOS-03/22-11:56(193)-No.444004
       ┗?!!!Re:エクセル2000のマクロにつ...-酢吉-03/22-17:41(187)-No.444050
         ┗?!!!!Re:エクセル2000のマクロにつ...-酢吉-03/24-10:18(147)-No.444169
           ┗?!!!!!Re:エクセル2000のマクロに...-OOITOS-03/24-12:04(145)-No.444183
             ┗?!!!!!!Re:エクセル2000のマクロに...-酢吉-03/24-13:04(144)-No.444195
               ┗?!!!!!!!Re:エクセル2000のマクロ...-酢吉-03/24-14:02(143)-No.444199
                 ┗?!!!!!!!!Re:エクセル2000のマクロ...-酢吉-03/24-14:53(142)-No.444208
                   ┣?!!!!!!!!!Re:エクセル2000のマク...-OOITOS-03/24-16:11(141)-No.444215
                   ┃ ┗?!!!!!!!!!!Re:エクセル2000のマク...-酢吉-03/24-16:23(141)-No.444218
                   ┗?!!!!!!!!!Re:エクセル2000のマク...-酢吉-03/24-16:13(141)-No.444216
                     ┗?!!!!!!!!!【ありがとう】Re:エク...-OOITOS-03/24-18:11(139)-No.444222

▲このページのトップに戻る
443907エクセル2000のマクロについてOOITOS 2008/03/21-14:56

メーカー名:NEC 日本電気
OS名:Windows2000
パソコン名:PC-MA66HLZT7
ソフト関連:表計算Excel
使用回線:光
--
IDの入力画面を作って

IDを打ち込んで エンターを押すと
そのIDと連結されたブック(エクセル)が開くようにしたい。

ファイルを開くを ID入力でしたいのです。

それと
入力画面のエクセルを立ち上げると ID入力の場所にカーソルが
あるようにしたい。

細かく説明いただけるとうれしいです。

だれか 助けてください。

▲このページのトップに戻る
443931Re:エクセル2000のマクロについて酢吉 2008/03/21-20:09

記事番号443907へのコメント
IDごとに特定のファイルだけを関連付けるのであれば、それぞれのファイルにIDと同じ
ファイル名をつけて全部一つのフォルダに放り込めば「ファイルを開く」ダイアログで
希望のとおりになると思うのですが。

IDとファイル名が一致してないとか?
それとか複数のIDに対してどれか一つのファイルを関連付けたいとか?
ひとつのIDに対して複数のファイルを関連付けたいって事はないですよね?


なんかの事情でマクロを使うならファイルを選択するためのブックを作って
WorkBookOpenイベントからIDを入力するフォームを設けるとかかな?
別にフォームを使わなくてもA1セルに入力してコマンドボタン1個置くだけでも
機能的には問題ないんじゃないような気もします。


ファイルの開き方はこちらを参考に
ttp://officetanaka.net/excel/vba/file/file01.htm

↑にはディレクトリを指定する方法がありませんので、全部のファイルを同一の
フォルダにまとめて(強く推奨)、ThisWorkBook.Pathでファイルのフルパスを取得、
InStrRevでフルパスから"\"を探してフルパスの先頭から一番後ろの"\"までを
ディレクトリ名として変数に格納しておく。
ファイルを指定する時はディレクトリ名 & ファイル名で指定します。
こうしておくとフォルダ丸ごと別のフォルダに移すときとか便利ですよ。
私はテキストファイル操作することが多いですけど一回コード書いておくと
あとがすごくラクチンです。

やってあげたいのは山々なんですが、夜と土日はエクセル使える環境がないので
ためしにコード書いて走らせることができません。

▲このページのトップに戻る
444004Re:エクセル2000のマクロについてOOITOS 2008/03/22-11:56

記事番号443931へのコメント
コメントありがとうございます。

説明不足ですみません。

今の現状を記入します

60名のタイムカードをエクセルで作成しました。(一つのフォルダに)
各個人のタイムカードを呼び出す表をエクセルで作り 
そこにスタッフの名前の呼出ボタンを60個作って
それを押すと 自分のタイムカードが表示されるようにしています。

このやり方だと 他のスタッフのタイムカードを呼び出すことが
出来てしまいますので 個々にIDを作って
IDを入力すると 自分のタイムカードが表示できるようにしたいのです
簡単に他の人のタイムカードを見れないようにしたいのです。

タイムカード呼出表に60名の名前のボタンでなくて
ID入力画面を作って そこにIDを入れると
その人のタイムカードが呼び出されるようにしたい。

IDはIDカードにJANコードを貼り
ハンドスキャナーで読み込む方法を取る予定です。

まだ説明不足かと思いますが
よろしくお願いします。

▲このページのトップに戻る
444050Re:エクセル2000のマクロについて酢吉 2008/03/22-17:41

記事番号444004へのコメント
60個のファイルをそれぞれIDに関連付けて、IDが呼ばれたときにそのIDに
該当するファイルを開くってことですね。

バーコードリーダーとかハンドスキャナって使ったことないんですけど
調べてみたらキーボードとして認識するってことなんですが
バーコードとかQRコードを文字列に変換して入力してくれるもの、ってことなのかな。

エクセルでフォームを使うとしたらTextBoxを設置して
TabIndexを1にするか、もしくはSetFocusで入力待ちの状態にしておき、
そのTextBoxのAfterUpDateイベントで入力された文字列が60個あるIDのどれかと
合致したときはそのIDに関連付けされたファイルを開く、でいいですかね?
フォームじゃなくてもワークシート上のどれかのセルでChangeイベントを使えば
目的は達せられるはずです。また別にCommandButtonを設置してそちらの
操作でTextBoxの内容を得てもいいです。こっちのほうがいいかもしれない。

IDとファイルの関連付けについてはその管理するIDの数によって処理を
変えるべきかと思うのですが、ID数が微妙な処ですけど、別にIDを管理するシートを
作って非表示にしておくとかテキストで管理者しかみられないディレクトリに置いて
おき、必要な時に読み込むとか、方法は色々あるです。
ワークシートからIDと対のファイル名を探してくるならそれほど難しくありません。
60回Ifで分岐を繰り返してIDと対になるファイルを探すのはやめたほうがいいでしょう。
例えば非表示にしたシートのA列にID、B列にファイル名を入力しておき、
入力されたIDのセルのOffset(0,1)でファイル名を取得するとよいかと思います。
もっとたくさんだったら配列に入れておいてMatchとIndexでIDと対になるファイル名を
取り出すようにするべきですが、60なら処理時間はそれほど変わらないと思います。



余計なお世話かもですけど、エクセルファイルである必要がなければ、
ファイル60個をテキストファイルにして、テキスト操作用にエクセルファイルを
1個作ってIDが呼ばれたときにそのIDと対になったCSVファイルをエクセルに読み込み、
必要な情報だけテキストに書き足して、操作が終わったらCSVファイルを上書き保存する、
ということもできますよ。
集計が必要なら別に管理者用のエクセルファイルを作っておいて、そっちでID管理とか
集計の作業もできるはず。
データの秘匿性とか改竄防止を重視するのであればエクセルにしておいた方がシートの
ロックの操作が比較的簡単にできるからそっちのほうがいいかもしれないですけど。

▲このページのトップに戻る
444169Re:エクセル2000のマクロについて酢吉 2008/03/24-10:18

記事番号444050へのコメント
こういうことでいいですかね?
ttp://www.dotup.org/uploda/www.dotup.org1006.zip.html
パスワード:dlpasu

▲このページのトップに戻る
444183Re:エクセル2000のマクロについてOOITOS 2008/03/24-12:04

記事番号444169へのコメント
ありがとうございます。

こういうことです!

で もう少しお願いしたいのですが

main.xlsを開いたらUserform1.Showを押さなくて
コード入力画面UserForm1が開いてるようにしたい。
常にmainブックを開いたらコード入力画面になってて
入力のところにカーソルがあるようにしたい。

それと コード入力画面UserForm1で
ファイル開くボタンを押してブックが開くのでなくて
コードを入力してエンターを押したら
ブックが開くようには出来ないでしょうか?

すみません お手間をかけますが
よろしくお願いします。

▲このページのトップに戻る
444195Re:エクセル2000のマクロについて酢吉 2008/03/24-13:04

記事番号444183へのコメント
ブックmain.xlsのOpenイベントにUserForm1.Showを入れます。
Alt+F11でVBエディタを開き、左上のmain.xlsのThisWorkBookをダブルクリックして
右の大きいウインドウに次の三行を追加してください。

Private Sub Workbook_Open()
UserForm1.Show vbModeless
End Sub

vbModelessは、フォームのモーダル・モードレスの設定です。
これを入れないとエクセルのウインドウの上位にフォームが固定されて
ワークシートへの直接入力ができなくなるので入れておきました。
フォームの使い方によってはモーダルの方がいい場合もあります。

ユーザーフォームのタブ順を設定するのを忘れていました
VBエディタのUserForm1をダブルクリックするとフォームのデザインが表示されます。
TextBox1を選択して右クリックからプロパティをクリックしてください。
ふつうなら左下にプロパティウインドウが最初から表示されているか、この操作で
表示されると思います。TabIndexが1になっていますのでこれを0にしてください。



>コードを入力してエンターを押したら
>ブックが開くようには出来ないでしょうか?
これがちょっと問題なのですが、IDの文字数が固定だったら希望に近い操作が
できるかも。
フローとしてはTextBox1にchangeイベントが発生するたびに文字数をカウントし、
規定の文字数になったらIDとして変数に格納し、ボタンを押したときと同じ動作を
させればいいわけです。Enterは押す必要ありません。
私の認識ではTextBoxではEnterは改行を指示するか、
次のTabIndexに移行するかしか指示できません。
(もちろん私の知識がVBAの全てではないのですが)

IDの文字数が不特定の場合だと他の方法を考えた方がいいかもしれないです。
ちょっと私の知識ではムリなので。

▲このページのトップに戻る
444199Re:エクセル2000のマクロについて酢吉 2008/03/24-14:02

記事番号444195へのコメント
ちょっと調べてみたらEnter押してからでもできそうですね。
あとでやってみます。

▲このページのトップに戻る
444208Re:エクセル2000のマクロについて酢吉 2008/03/24-14:53

記事番号444199へのコメント
大体ご希望通りと思うのですがご参考までに
ttp://www.dotup.org/uploda/www.dotup.org1109.zip.html
PASS: dlpasu

▲このページのトップに戻る
444215Re:エクセル2000のマクロについてOOITOS 2008/03/24-16:11

記事番号444208へのコメント
ありがとうございます!

希望通りのものです!

まだ わがままを言わせていただければ
IDを入力してエンター もう一度エンターになっていますが
最初のエンターだけにはならないものでしょうか?

それと 開いたブックを閉じた時に
次の人がID入力しやすいように
ID入力画面にカーソルがあるといいのですが・・・
ID入力画面は、常時開いてる状態にしたいのです。

スタッフに年寄りが多いので 簡単にしたいのです。

IDの桁数は一定です。

すみません。 よろしくお願いします。

▲このページのトップに戻る
444218Re:エクセル2000のマクロについて酢吉 2008/03/24-16:23

記事番号444215へのコメント
レスがニアミスだったみたいで失礼しました
VBエディタの開き方わかりました?
TextBox1_Changeのコードのなかで
「MsgBox id」という行を削除するか、その行頭に ' を入れてください。
そするとIDを表示するメッセージボックスが出なくなります。
カーソルの処理は入れたつもりですが、
>ID入力画面は、常時開いてる状態にしたいのです。
そうすると開いたファイルに対してなにも入力できなくなります。
それでもいいならWorkbook_Openのコードで「vbModeless」を削除してください。


>スタッフに年寄りが多いので 簡単にしたいのです。
ワタシもそこそこ年寄りなんですがw

▲このページのトップに戻る
444216Re:エクセル2000のマクロについて酢吉 2008/03/24-16:13

記事番号444208へのコメント
こぎれいにしてみました
ttp://www.dotup.org/uploda/www.dotup.org1169.zip.html
PASS: dlpasu

▲このページのトップに戻る
444222Re:エクセル2000のマクロについてOOITOS 2008/03/24-18:11

記事番号444216へのコメント
ほんとにありがとうございました。

希望のものが出来ました。

VBエディタの開き 「vbModeless」を削除して
完璧に欲しいものが出来ました。

また 変な質問してるかもしれませんが
今回のように お付き合いお願いします。

このたびはありがとうございました。

言葉だけのお礼でよろしいのかなー・・・



A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言