Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12947 / 13644 ツリー ←次へ | 前へ→

【7809】フォルダ作成(ディレクトリ?)について Tama 03/9/18(木) 21:05 質問
【7812】Re:フォルダ作成(ディレクトリ?)について Kein 03/9/18(木) 22:16 回答
【7815】Re:フォルダ作成(ディレクトリ?)について Tama 03/9/18(木) 23:50 お礼
【7816】Re:フォルダ作成(ディレクトリ?)について INA 03/9/18(木) 23:55 回答
【7819】Re:フォルダ作成(ディレクトリ?)について Tama 03/9/19(金) 1:00 お礼

【7809】フォルダ作成(ディレクトリ?)について
質問  Tama  - 03/9/18(木) 21:05 -

引用なし
パスワード
   初めて書き込みさせていただきます。
よろしくお願いします。

目的は、データベース化した表ののユニークな項目の数だけフォルダを作成します。

1.まず、新・旧と名前のわかれたシートなので、新・旧2つのフォルダの中にそれぞれフォルダで階層を作る感じです。

2.最初は「新」シートの3列目4行目から5列目まで行単位で見ていきます。(旧もレイアウトは同じです。)(3列目だけはダブリがあります。)

3.「新」のフォルダをまず作り、その中に Cells(4,3) の値のフォルダを作り、その中に4列目の値のフォルダ、またその中に5列目の値でフォルダを作ります。
(5列目の値は数値が入っており、その数だけフォルダを作成します。
 例)"2"の場合は2個で、フォルダ名は 「1」と「2」)

4.5列目まで終わったら3列目の下の行にいくのですが、3列目の値は一つ上のセルとダブっているかも知れません。
ダブっていたらフォルダを作らず、4列目に進み、先ほどのCells(4,3)のフォルダ内にフォルダを作る・・・という繰り返しです。

それから、フォルダ移動は相対パスを使って欲しいと言われています。(これもわかりません;)
どうしてもコードにすることが出来ないんです;;

どなたかご教授願います。よろしくお願いします(;_;)

【7812】Re:フォルダ作成(ディレクトリ?)につい...
回答  Kein  - 03/9/18(木) 22:16 -

引用なし
パスワード
   ベタ書きですが、概ねこんな感じです。"C:\" のところは任意に変更して下さい。
Cells(4, 3)からということなので、C4 からC列最終入力行までとしています。

Sub Make_MyFol()
  Dim FSO As Object, WS As Worksheet, C As Range
  Dim Sf1 As String, Sf2 As String, Sf3 As String
  Dim i As Integer

  Set FSO = CreateObject("Scripting.FileSystemObject")
  On Error Resume Next
  For Each WS In Sheets(Array("新", "旧"))
   FSO.CreateFolder "C:\" & WS.Name
   For Each C In WS.Range("C4", WS.Range("C65536").End(xlUp))
     Sf1 = "C:\" & WS.Name & "\" & C.Value
     If FSO.FolderExists(Sf1) = False Then
      FSO.CreateFolder Sf1
     End If
     Sf2 = Sf1 & "\" & C.Offset(, 1).Value
     FSO.CreateFolder Sf2
     For i = 1 To C.Offset(, 2).Value
      Sf3 = Sf2 & "\" & i
      FSO.CreateFolder Sf3
     Next i
   Next
  Next WS
  Set FSO = Nothing
End Sub

【7815】Re:フォルダ作成(ディレクトリ?)につい...
お礼  Tama  - 03/9/18(木) 23:50 -

引用なし
パスワード
   今動作確認しました。

目的通り動いてまして、驚きと尊敬の念でいっぱいです。
本当にありがとうございます!;;

初心者なので1から勉強しているんですが、
とてもとても思いつくコードではありませんでした・・・

今、「C列が空白になるまで」という風にしたく
解析中なんですが、私には難しくなかなか進みません(;_;)

度々すみませんがお教え頂けないでしょうか。
よろしくお願いします。

【7816】Re:フォルダ作成(ディレクトリ?)につい...
回答  INA  - 03/9/18(木) 23:55 -

引用なし
パスワード
   >今、「C列が空白になるまで」という風にしたく
>解析中なんですが、私には難しくなかなか進みません(;_;)

セルC65536 で Ctrl+↑ キーの場合
For Each C In WS.Range("C4", WS.Range("C65536").End(xlUp))
 ↓
セルC4 で Ctrl+↓ キーの場合
For Each C In WS.Range("C4", WS.Range("C4").End(xldown))

のようにしては、いかがでしょうか?

【7819】Re:フォルダ作成(ディレクトリ?)につい...
お礼  Tama  - 03/9/19(金) 1:00 -

引用なし
パスワード
   コメントを付けていただいてありがとうございます。
ようやく理解できました。

Range("C65536") ←この部分だけみて最終行までやっていると
思い込んでいました^^;

Keinさん、INAさん、お二人のお陰で本当に助かりました。
感激しています。ありがとうございました。

いつかお二人の立場になれるようがんばります^^
その前にまた詰まってしまったらご教授願います^^;
よろしくお願いします。

12947 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free