SSブログ

エクセル小僧:別のエクセルファイルから文字列をコピーするマクロ(その2)

エクセル小僧:別のエクセルファイルから文字列をコピーするマクロ
http://blog.so-net.ne.jp/cheese999/2012-12-08-1

で紹介した別のエクセルファイル(以下、ワークブックと呼ぶ)から、文字列を
コピーしてくるマクロですが、操作ミスを検出してコピーを中止する仕組み
(フールプルーフ)を入れていたため、フローが長くなってしまいました。
新しいフローを示します。




【条件】
・コピー先のワークブック"A"から、マクロは起動される。
・ワークブック"A"に、コピー元のワークブック"B"、シート名、セル名は、
  マクロ起動前に設定されている。
・ワークブック"B"は、ワークブック"A"と同じフォルダに格納されていても、
  異なるフォルダに格納されていても可。
・セル名は、カンマ(,)区切りで複数指定できる。また、セル名はA1:C3のように
  セル範囲を指定したものでも対応できる。
・ワークブック"B"は、マクロ起動前に閉じられている。

【フロー】
1. ワークブック"A"のシートから、コピーに必要な情報、コピー元のワーク
  ブック名"B"、シート名、セル名を獲得する。ワークブック"A"のシートが
  見つからない場合は、マクロの実行を中止する。
2. ワークブック"B"のパス、ファイル名が正しいか、確認する。ワークブック"B"が
  見つからない場合は、マクロの実行を中止する。
3. ワークブック"B"が既に開いているか確認する。既に開いている場合は、
  マクロの実行を中止する。
4. ワークブック"B"を開く。
5. コピー元、コピー先のシート名が正しいか、確認する。正しくない場合、
   ワークブック"B"を閉じてマクロの実行を中止する。
6. セル名が正しいか、確認する。正しくない場合、
   ワークブック"B"を閉じてマクロの実行を中止する。
7. セル名に含まれるセルを1セルずつコピーする。指定があれば、スペース(半角、
  全角)を削除したうえでコピーする。
8. セル名が複数指定されていれば、セル名の数の分、6.と7.を繰り返す。
9. ワークブック"B"を閉じてマクロを終了する。

【シートのイメージ】
<001>
001.jpg

コピー先のシートは、こんな感じです。

・B1セル(セル名:TypeFilePath) : コピー元のエクセルファイルをファイル名のみ
  で設定するのか、フルパスで設定するのか選択します。入力規則が設定されていて、
  "ファイル名", "フルパス"のいずれかから選択するようになっています。
・B2セル(セル名:file1) : コピー元のエクセルファイル名を設定します。
・B3セル(セル名:sheet1) : コピー元のシート名をを設定します。
・B4セル(セル名:cell1) : コピー元のセル名をを設定します。複数指定する場合、
  カンマ(,)で区切ります。コピー先にも同じセル名があるものとします。
・B5セル(セル名:sheet2) : コピー先のシート名をを設定します。
・B13:B14セル : B1セルの入力規則に設定する元データ(リスト)です。
・B18, B19セル:コピー先のセルです。それぞれ、IP_Add1,IP_Add2の名前がついて
  います。IP_Add3のセルは、A22:C24です。
・ファイル名ボタン:ファイルを開くウィンドウを開いて、コピー元のエクセル
  ファイル名を設定する場合に使用します。
・コピーボタン:コピーを開始します。

<002>
002.jpg

コピー元はこんな感じです。

・B16セル(セル名:IP_Add1) : コピー元の文字列(スペースを含むIPアドレス)です。
・B17セル(セル名:IP_Add2) : コピー元の文字列(スペースを含むIPアドレス)です。
・A10:C12セル(セル名:IP_Add3) : コピー元の文字列(スペースを含むIPアドレス)です。

【コード】
コードは次回、掲載します。
タグ:エクセル VBA
ヤバイぜ!(2)  コメント(1)  トラックバック(1) 
共通テーマ:日記・雑感

ヤバイぜ! 2

コメント 1

cheese999

nice!ありがとうございます。
(^_0)ノ
by cheese999 (2012-12-23 21:34) 

Facebook コメント

トラックバック 1

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。