|
▼ピッポ さん:
▼ピッポ さん:
おはようございます
>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になかったらどうするとか。
考えなきゃいけないことは、たくさんありそうですよ。
一度、ゆっくりと整理しなおされてはいかがでしょう。
たとえば移動元情報はブック毎の行ではなくフォルダごとの行。
そこで"済"ブックを抽出して、別途のシートにあるブック情報とマッチさせて、その指定の移動先に
もっていく。そこになかったものについては、からぶりとか、あるいは、別シートにアンマッチ情報を
リストアップするとか。
とにかく、ピッポさんが、本当に何をやりたいのか それを整理しなおすことをお勧めします。
|
|