Excel VBA質問箱 IV

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

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


3716 / 13646 ツリー ←次へ | 前へ→

【60415】BATファイル作成実行でフォルダ作成 ON 09/2/20(金) 16:30 質問[未読]
【60417】Re:BATファイル作成実行でフォルダ作成 Jaka 09/2/20(金) 17:06 発言[未読]
【60418】Re:BATファイル作成実行でフォルダ作成 ON 09/2/20(金) 17:13 発言[未読]
【60422】Re:BATファイル作成実行でフォルダ作成 neptune 09/2/20(金) 19:13 発言[未読]
【60424】Re:BATファイル作成実行でフォルダ作成 ichinose 09/2/20(金) 19:38 発言[未読]
【60506】Re:BATファイル作成実行でフォルダ作成 ON 09/2/25(水) 12:10 お礼[未読]
【60507】Re:BATファイル作成実行でフォルダ作成 kanabun 09/2/25(水) 12:43 発言[未読]
【60526】Re:BATファイル作成実行でフォルダ作成 ichinose 09/2/25(水) 21:14 発言[未読]
【60529】Re:BATファイル作成実行でフォルダ作成 neptune 09/2/25(水) 22:20 発言[未読]
【60545】Re:BATファイル作成実行でフォルダ作成 ON 09/2/27(金) 10:14 お礼[未読]

【60415】BATファイル作成実行でフォルダ作成
質問  ON  - 09/2/20(金) 16:30 -

引用なし
パスワード
   こんにちは

コマンドプロンプトあまり良くわかりません
よろしくお願い致します

デスクトップにフォルダを作成しようと

セルA1にa、A2にb、A3にc
と入力し

Sub MkDIR1()
 Dim FileNumber1 As Integer
 Dim File_Name As String
 Dim MyPath As String
 Dim Rc As Long
 Dim a As Integer

 MyPath = "C:\Documents and Settings\hoge\デスクトップ\"
 'MyPath = "C:\'Documents and Settings'\hoge\'デスクトップ'\" 'NG
 'MyPath = "C:\""Documents and Settings""\hoge\""デスクトップ""\" 'NG
 'MyPath = "C:\" & """Documents and Settings""" & "\hoge\" & """デスクトップ""" & "\"
 'MyPath = "C:\" & """Documents and Settings""" & "\hoge\" & """デスクトップ""" & "\"
 
 FileNumber1 = FreeFile
 Open MyPath & "MkDIR1.bat" For Output As FileNumber1
 'Print #FileNumber1, "Chdir " & MyPath

 a = 1
 
 Do Until Cells(a, 1) = ""
  'Print #FileNumber1, MkDir; MyPath & Cells(a, 1)
  Print #FileNumber1, "MkDir " & MyPath & Cells(a, 1)
    a = a + 1
 Loop

 Close #FileNumber1

 'Rc = Shell(MyPath & "MkDIR1.bat", vbHide)
 
End Sub

で出来た、MkDIR1.bat
MkDir C:\Documents and Settings\hoge\デスクトップ\a
MkDir C:\Documents and Settings\hoge\デスクトップ\b
MkDir C:\Documents and Settings\hoge\デスクトップ\c
を、実行したのですが
C:\Documents and Settings\hoge\デスクトップ\and
C:\Documents and Settings\hoge\デスクトップ\Settings
のフォルダが作成され
C:\Documents and Settings\hoge\デスクトップ\Settings
のなかに
C:\Documents and Settings\hoge\デスクトップ\Settings\hoge
のなかに
C:\Documents and Settings\hoge\デスクトップ\Settings\hoge\デスクトップ
のなかに
a
b
c
となってしまいました

で、バッチを
MkDir C:\"Documents and Settings"\hoge\"デスクトップ"\
のようにすると、
デスクトップにa,b,cのフォルダを作成することが出来ました


Q1
MkDir C:\Documents and Settings\hoge\デスクトップ\a
デスクトップにand,Settingsのフォルダが出来る動作が良くわかりません
 ためしに、
 イミディエイトウインドで?Application.DefaultFilePath
 C:\Documents and Settings\hoge\My Documents
 となっています
 この辺、解説お願い頂ければうれしいです

Q2
MyPath = ・・・
で、色々試してみましたが
MkDIR1.batに
MkDir C:\"Documents and Settings"\hoge\"デスクトップ"\
と出力することが出来ませんでした
どのように記述すればよいでしょうか

よろしくお願い致します

【60417】Re:BATファイル作成実行でフォルダ作成
発言  Jaka  - 09/2/20(金) 17:06 -

引用なし
パスワード
   >MkDIR1.batに
>MkDir C:\"Documents and Settings"\hoge\"デスクトップ"\
???
MkDir CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\hoge"

【60418】Re:BATファイル作成実行でフォルダ作成
発言  ON  - 09/2/20(金) 17:13 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます

目的を書かずに申し訳ありませんでした
▼【60006】ファイルサーバーにフォルダ作成時のアクセス権限 
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=60006;id=excel

ファイルサーバアクセス権
ht tp://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?mode=allread&no=13356&page=0
で、バッチの中での一括処理なら出来るとのアドバイス頂きました

で、とりあえずバッチのコードを動かしたいと思っています
よろしくお願いいたします

【60422】Re:BATファイル作成実行でフォルダ作成
発言  neptune  - 09/2/20(金) 19:13 -

引用なし
パスワード
   ▼ON さん:
こんにちは

どうも、空白(スペース)が悪さしているようなので
8.3 形式のパスにしてみてはどうですか?

私の話ですが、昔はDOSで打つときは無理やり8.3 形式で入力してました。

長い形式もサポートしているとは思いますが、空白が入るといろいろ
ややこしくて面倒なので、
APIなら、GetShortPathName
fsoならShortName、 ShortName とかを使用して、8.3 形式の
パスを使用するのがわかりやすいかと思います。

【60424】Re:BATファイル作成実行でフォルダ作成
発言  ichinose  - 09/2/20(金) 19:38 -

引用なし
パスワード
   こんばんは。

md "作成するフォルダ"

というようにフォルダ名を ダブルコーテーションで囲むだけでよいと
思いますけどねえ!!


Sub MkDIR1()
 Dim FileNumber1 As Integer
 Dim MyPath As String
 MyPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
 FileNumber1 = FreeFile
 Open MyPath & "\MkDIR1.bat" For Output As FileNumber1
 Print #FileNumber1, "md """ & MyPath & "\a"""
 Print #FileNumber1, "md """ & MyPath & "\b"""
 Print #FileNumber1, "md """ & MyPath & "\c"""
 Close #FileNumber1
 CreateObject("wscript.shell").Run """" & MyPath & "\MkDIR1.bat"""
End Sub

これでデスクトップ上に a,b,cという3つのフォルダが作成されましたよ!!

バッチファイルなんて、久しぶりです

【60506】Re:BATファイル作成実行でフォルダ作成
お礼  ON  - 09/2/25(水) 12:10 -

引用なし
パスワード
   遅くなりました

neptune さん ありがとうございます

>どうも、空白(スペース)が悪さしているようなので
>8.3 形式のパスにしてみてはどうですか?

ichinose さん ありがとうございます

>というようにフォルダ名を ダブルコーテーションで囲むだけでよいと
>思いますけどねえ!!

なるほど空白が原因ですか

この辺いつも苦手で
よくイミディエイトウインドウでうまく出来るまで試行錯誤することが
多いです

イミディエイトウインドウで出力結果を確認することを知らないときは
もっと悲惨な状況で、だいたい途中で投げ出していたような・・・・です

?"""" & MyPath & "\MkDIR1.bat"""
"C:\Documents and Settings\Y11830\デスクトップ\MkDIR1.bat"
は確認しました

Print #FileNumber1, "md """ & MyPath & "\a"""
CreateObject("wscript.shell").Run """" & MyPath & "\MkDIR1.bat"""
文字列中の"は""とする、理解すればいいような気がしますが・・・
.Run """"
の """" がいまいち?見たいな気がします(出力結果は見ていますが)
アドバイス有りましたらよろしくお願い致します

MkDirとmd同じもののようですが
ググッても MkDir/md のような記載しか見つけられず
その差がどこにあるのかわかりませんでした
何か、コメントありましたらよろしくお願いいたします


ご提示頂いた
Sub MkDIR1()
で、希望の操作は、かないました

皆様 ありがとうございました


ただ、バッチでの
ファイルサーバアクセス権
の設定がいまいちうまくいきませんでいした
これについては、もう少し試してみようと思っています

【60507】Re:BATファイル作成実行でフォルダ作成
発言  kanabun  - 09/2/25(水) 12:43 -

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

>MkDirとmd同じもののようですが
>ググッても MkDir/md のような記載しか見つけられず
>その差がどこにあるのかわかりませんでした

MSのDOSコマンドは Unixのコマンドラインをまねて
2文字で表示できるようになってます。

 CHDIR → cd
 MKDIR → md
 RMDIR → rd
 RENAME → ren

ただ、
 DIR → ls
は、ありませんけどね〜 (-_-)

おじゃましました

【60526】Re:BATファイル作成実行でフォルダ作成
発言  ichinose  - 09/2/25(水) 21:14 -

引用なし
パスワード
   こんばんは。

>.Run """"
>の """" がいまいち?見たいな気がします(出力結果は見ていますが)
>アドバイス有りましたらよろしくお願い致します

インタープリタの立場になれば、こういう構文でなければならないと思いますよ
だって、

1番目の"であっ、「文字列のモードだ」と解釈します。

2番目の"を検知して、文字列なしで文字列モードの終わり?

ここで3番目の文字"を先読みして「あっ、二つ"が連続しているから文字列の(")だ」
と解釈します。

4番目の"を検知して3番目と同様に5番目の文字を先読みすると"ではないので
文字列モードの終了と解釈

こんなロジックだと思いますよ(大昔、ちょこっとだけ担当してました)

それでもややこしいなら

 CreateObject("wscript.shell").Run Chr(34) & MyPath & "\MkDIR1.bat" & Chr(34)

これだとすっきりしますか?

私は、この34を覚えていないので""""としますけどね!!


>MkDirとmd同じもののようですが
>ググッても MkDir/md のような記載しか見つけられず
>その差がどこにあるのかわかりませんでした
>何か、コメントありましたらよろしくお願いいたします

コマンドプロンプトにて、
Help mkdir

または、

Help md

なんてすれば、説明が表示されますけどねえ!!

試してみてください。

【60529】Re:BATファイル作成実行でフォルダ作成
発言  neptune  - 09/2/25(水) 22:20 -

引用なし
パスワード
   皆さん

こんにちは
>私は、この34を覚えていないので""""としますけどね!!
私は"が沢山あると頭がこんがらかって分けがわからんようになるので
専ら34派です。

>コマンドプロンプトにて、
>Help mkdir
>
>または、
>
>Help md
知らなかった。

これは専ら
mkdir/?
でやってます。というかこれしか知らんかった。
/?は同じキーでShift押さえるだけだから楽チンですよ。

【60545】Re:BATファイル作成実行でフォルダ作成
お礼  ON  - 09/2/27(金) 10:14 -

引用なし
パスワード
   遅くなりました

kanabun さん ありがとうございます

>MSのDOSコマンドは Unixのコマンドラインをまねて
>2文字で表示できるようになってます。

そーなんですか
LINUXは、何度かチャレンジしてみようとは思ったことはあるのですか
なかなか手が出ません

参考になります
ありがとうございました


ichinose さん ありがとうございます

>インタープリタの立場になれば、こういう構文でなければならないと思いますよ
ニャハハ
そこまで考えてことなかったです 
あわせて、その辺の知識もほぼ皆無です・・・(^_^;;;
参考になりました ありがとうございました

>それでもややこしいなら
Chr(34)
で、囲えばいいんですか
これなら、闇雲に、”をつけたり、はずしたりして試す無駄な時間から開放されそうです

>試してみてください。
ムム 拡張機能なんてあるんですか
あまり使用することはないのですが勉強になりました
ありがとうございました


neptune さん ありがとうございます
>/?は同じキーでShift押さえるだけだから楽チンですよ。
考えてみたことありませんでした なるほどです
今後、/?を使用するときは、毎回思い出してしまいそうな・・みたいです


皆様 ありがとうございました
解決です
今後もよろしくお願いいたします

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