Excel VBA質問箱 IV

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

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


11609 / 76734 ←次へ | 前へ→

【70658】Re:保存
発言  UO3  - 11/12/13(火) 21:42 -

引用なし
パスワード
   ▼situmon さん:

まず、Call パス取得(fpath) ですけど、もちろんSubプロシジャで引数に値を返すことはできます。
ただし、その場合は Public Sub パス取得(ByRefl fpath As String) にする必要があります。
(通常のCallを書けばデフォルトByRefですけどね)
ByVal は値渡しで、サブプロシジャ側でテンポラリーに生成されるfpathという名前の(プロシジャレベルの)変数に
呼び出し側の引数の値がいれられるだけで、サブプロシジャ側でfpathに値をセットしても
呼び出し側の元々のfpathは更新されません。

普通は、Functionプロシジャ仕立てにしますね。

また、標準モジュールのプロシジャには、とくにPublicと記述する必要はありません。
それと cの値を扱うわけですが、c.Value とプロパティを明示したほうがわかりやすいですね。

ということで、以下のようにして試してみてください。
選択領域の値が空白であるとか、フォルダ名には使用できない文字だとか、あるいはすでに同名のフォルダがあるとか、
本来は、そのようなチェックもいれるほうぎいと思いますが、割愛しています。

Sub フォルダ保存()
Dim fpath As String
Dim fso As String
Dim c As Variant

  For Each c In Selection
   fpath = パス取得
   fso = fpath & "\" & c.Value
   MkDir fso
  Next c
  
End Sub

Function パス取得() As String
  パス取得 = ThisWorkbook.Path
End Function

3 hits

【70657】保存 situmon 11/12/13(火) 20:59 発言
【70658】Re:保存 UO3 11/12/13(火) 21:42 発言
【70660】Re:保存 situmon 11/12/13(火) 22:43 お礼
【70661】Re:保存 UO3 11/12/14(水) 0:31 発言

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