| 
    
     |  | ▼ピッポ さん: 
 ▼ピッポ さん:
 
 おはようございます
 
 >3点程、修正の要望があるのですが、
 
 最初の課題は別にして、後の2つですが、ピッポさんのVBAのレベルはいかほどでしょう?
 全く、右も左もわからないということだと、対応コードを差し上げても、その後、ちょっとした
 変更で、また、質問しなきゃいけなくなりますね。特に、欲しい情報を取得する構成として
 現在のシート1、シート2の構えが、「これでいいのかなぁ」と、これはコード以前の
 設計のレベルの話ですけど、そこがしっかりしていないような印象ですから、やってみて
 いずれ、あぁ、そうか、こういう場合もあるから、これはこうだとp、どんどん出てくるような
 予感がしています。
 最低でも、アップしたコード、できるだけコメントもいれてありますので、どこで何をどのように
 処理しているのか、それをしっかり把握いただきたいと思います。そうすれば2番目の課題はご自分で
 チューニングできたはずです。
 
 
 >移動前のフォルダと移動後のフォルダが、共有サーバー内にあるのですが、
 >それの影響が要因か断定はできないのですが、移動できませんでした。
 >共有サーバー以外の例えば、Cドライブ内では、正常に動作しました。
 >共有サーバー内にフォルダがあると、コードに何か反映させるのでしょうか?
 
 う〜ん・・・こちらで移動後、移動前のフォルダをネットワークドライブ(パスは\\から始まります)において
 それをハイパーリンクでセットして実行しましたが、Cドライブにあるのと同じように、ネットワークドライブにある
 フォルダー間で正常に処理されましたが?
 移動できないというのは、何かエラーメッセージがでたのでしょうか?
 
 >
 >シート1の当該行のE列の "毎月"のチェックは実施して、
 >I列に、”問題なし”と”問題あり”と判断していますが”毎月”以外は
 >空欄のままにしたいです。
 
 これが、最初に申し上げたことなんです、
 
 現在のコードは"元保管場所"シートのB列のセルをピックアップし、そのセルごとに
 
 For Each c In sh2.Range("B2", sh2.Range("B" & sh2.Rows.Count).End(xlUp))
 '
 ' ここでセルごとの処理
 '
 Next
 
 こうなっていますよね。
 
 で、上記をもう少し見ますと
 
 For Each c In sh2.Range("B2", sh2.Range("B" & sh2.Rows.Count).End(xlUp))
 '
 '一覧表 E列に 毎月 と記入あるものだけ
 If sh1.Cells(i, "E").Value = myCheck Then   '★1
 '
 ' ここで毎月以外のセルごとの処理
 '
 End If                     '★2
 
 With sh1.Cells(i, "I")
 '
 ' ここで処理が「行われたものは」問題なし、「行われなかったものは」問題ありの表記
 '
 End With
 
 '★3 このあたり
 Next
 
 こうなっているでしょ?
 ★1で条件にあわずに飛ぶのは、★1の「対になった」End If である★2 ですよね。
 つまり、E列が毎月であろうがなかろうが、For/Nextで囲まれたブロックの最後で、問題あり、なしの記述が
 されてしまうわけで。
 ですから、要望の修正を行うとすれば、この「対になった」End If を ★3 このあたり に移せば、
 問題あり、なしの記述をしているところをスキップできますよね。
 
 
 >それと動作確認して気付いたのですが、
 
 上でもいいましたけど、動作確認して気づくというのは、少し表現が「自分に甘い?」
 要は、必要な情報を取得するために考えた方法が、その目的にあっていなかったということですよ。
 
 >移動する前のファイル名は、現状
 >”シート2のB列の”固定された文字列”と
 >”●●●”のような任意の文字列と”済”の文字列で形成されています。
 >と、うたいましたが、実際、B列の”固定された文字列”がないものも含まれており対処できなくなりました。
 >何度も申し訳ないのですが、
 >移動する前のファイル名に、”済”の文字列のみあれば移動する
 >と修正をお願いできませんでしょうか?
 
 これを、コードで、はい、はい、こうしましょ というのはたやすいんですけどねぇ・・・
 でも!
 仮に、シート2のB列が以下のようになっていたとします。
 ABC フォルダX
 XYZ フォルダX
 
 で、 ABC で処理しましょう。フォルダX で ABC は無視して、とにかく○○○済 のファイルを、
 「全て」どこかに移動させたとします。もう、フォルダXの中には○○○済のファイルはありません。
 で、次のXYZで処理しますね。もう "XYZ済"も含めて、フォルダの中にはありませんので、からぶりですよね。
 
 さらに、ABC で処理した際に、済がついたファイルがフォルダXに100個あったとします。
 提示された条件では、その移動先はシート1の同じ行にあるハイパーリンク先。
 でも、100個ですよ。その100個は、XYZ済も含めて全て同じフォルダに持っていっていいのですか?
 もしかしたらシート1の XYZ の行にはフォルダZとセットされているかもしれませんよね。
 
 あるいは、100個あったとして、1つずつ、シート1の「どこか(おそらくB列?」を捜して、
 その行で処理する?できないことはないですよ。でも、ここで、シート1になかったらどうするとか。
 
 考えなきゃいけないことは、たくさんありそうですよ。
 一度、ゆっくりと整理しなおされてはいかがでしょう。
 
 たとえば移動元情報はブック毎の行ではなくフォルダごとの行。
 そこで"済"ブックを抽出して、別途のシートにあるブック情報とマッチさせて、その指定の移動先に
 もっていく。そこになかったものについては、からぶりとか、あるいは、別シートにアンマッチ情報を
 リストアップするとか。
 
 とにかく、ピッポさんが、本当に何をやりたいのか それを整理しなおすことをお勧めします。
 
 
 |  |