
セル値からフォルダー名を取得して、ある場所にフォルダーを作成するというものです。
下記を私のPCでは問題なく動作するのですが、
別のPCからは「パスが見つかりません」とエラーになります。
デバッグは「MkDir mydir」を指しています。
すべてのPCから実行可能にするためにはどの様にすればよろしいのでしょうか?
ご教授願います。
win10、excel2013
Sub フォルダー作成()
Dim mydir As String
Dim i As Integer
For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
mydir = "C:\Users\user\Desktop\test\" & Cells(i, 17).Value
If Dir(mydir, vbDirectory) = vbNullString Then MkDir mydir
Next i
MsgBox "完了しました"
End Sub
No.5ベストアンサー
- 回答日時:
ファイルやフォルダを扱うなら、FileSystemObjectが便利と思います。
作成したいフォルダのパスをmydirとして、それが存在しなければ作成します。
これでもだめでしょうか?
Sub test()
Dim mydir As String, i As Long
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
mydir = "C:/Google ドライブ/T/01_T/02_受注/" & Cells(i, 17).Value
If FSO.FolderExists(mydir) = False Then
FSO.CreateFolder mydir
End If
Next i
MsgBox "完了しました"
Set FSO = Nothing
End Sub
ご回答、ありがとうございます。
試しましたところ
パスがみつかりません
となり
デバックは
FSO.CreateFolder mydir
を指していました。
お忙しい中、申し訳ないです。
No.4
- 回答日時:
こんばんは。
>すべてのPCから実行可能にするためにはどの様にすればよろしいのでしょうか?
こんなふうにしてみたらいかがでしょうか?
Shell(command prompt)からも取る方法はあったはずですが、
CreateObject("Wscript.Shell").SpecialFolders
この方法がメジャーだと思います。
'//
Sub フォルダー作成R()
Dim myDir As String
Dim i As Integer
myDir = CreateObject("Wscript.Shell").SpecialFolders(4) & "\Test"
If Dir(myDir, vbDirectory) = "" Then
MsgBox "Testフォルダーがありません。", vbCritical
Exit Sub
End If
For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
myDir = myDir & "\" & Cells(i, 17).Value
If Dir(myDir, vbDirectory) = "" Then
MkDir myDir
End If
Next i
MsgBox "完了しました"
End Sub
ご回答、ありがとうございます。
当方マクロ初心者でして、
このプログラムもたまたまネット上で見つけてフォルダー位置を変更して利用しております。
実際のフォルダー位置でのプログラムは下記です。
申し訳ないですがもう少しお願いいたします。
Sub フォルダー作成()
Dim mydir As String
Dim i As Integer
For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
mydir = "C:/Google ドライブ/T/01_T/02_受注/" & Cells(i, 17).Value
If Dir(mydir, vbDirectory) = vbNullString Then MkDir mydir
Next i
MsgBox "完了しました"
End Sub
No.2
- 回答日時:
> 何故なんでしょうか?!
エラーの原因を探ってみては。
Sub フォルダー作成()
Dim mydir As String
Dim i As Integer
On Error Goto myErr
For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
mydir = "C:\Users\user\Desktop\test\" & Cells(i, 17).Value
If Dir(mydir, vbDirectory) = vbNullString Then MkDir mydir
Next i
MsgBox "完了しました"
Exit Sub
myErr:
MsgBox "エラー番号:" & Err.Number & vbCrLf & _
"エラーの種類:" & Err.Description, vbExclamation
End Sub
で、エラーが発生すると、エラーの番号、エラーの種類が取得できるハズなので、
MkDir 関数
https://msdn.microsoft.com/ja-jp/library/k1d22wf …
エラー番号が70ならアクセス権が無いとか。
エラー番号が75ならディレクトリが既に存在してるって事で、Ifの条件判断を確認とか。
ご回答ありがとうございます。
これを実行すると
エラー番号:76
エラーの種類:エラーパスがみつかりません
と表示されます。
一体なにが原因なんでしょうか。。。
No.1
- 回答日時:
MkDirは階層のあるフォルダを一気に作成できません。
> 別のPCからは「パスが見つかりません」とエラーになります。
"C:\Users\user\Desktop\test\"
のフォルダを予め作っといてください。
あるいは、下記のサイトのような方法で逐次フォルダを作るとか。
MkDirで階層の深いフォルダーを作成する:エクセルマクロ・Excel VBAの使い方-VBA関数
http://www.relief.jp/docs/excel-vba-mkdir-folder …
お答え、ありがとうございます。
> "C:\Users\user\Desktop\test\"
のフォルダを予め作っといてください。
もちろん別のPCにも同じ場所に同じフォルダがあるんですよ。
なのに、私のPCでしか動作しないのは何故なんでしょうか?!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IEのエラーメッセージ URLは取...
-
coregaUSBポート用LANアダプタ...
-
エクセルでマクロ。他のパソコ...
-
デスクトップに移動すると自動...
-
EXCELで複数個所に同時にファイ...
-
excelの資料をURL化してweb上に...
-
excelデータをコンマ付きテキス...
-
「_.hoge」リソースフォーク?...
-
Excelファイルの限界は何MBまで?
-
確定申告e-taxの保存データが読...
-
アイフォーンの画像をテレビに ...
-
アウトルックの添付ファイルを...
-
FTPでアップロードできません
-
ズームの相手の画像認識
-
ftp 接続先のフォルダのファイ...
-
ドラッグできる画像とできない画像
-
googleやyahooの地図を切り取っ...
-
JPEGやTIFF画像の解像度を向上...
-
ホームページビルダーで背景に...
-
FFFTP アップロードしたURLの表示
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FFFTPで「フォルダを作成できま...
-
DMMのサンプル動画がみれない
-
エクセルでマクロ。他のパソコ...
-
IEのエラーメッセージ URLは取...
-
coregaUSBポート用LANアダプタ...
-
エクセルが固まるのはなぜ
-
Outlookでアイテムを保存できま...
-
http403エラー
-
プロフィールの編集について。
-
FC2レンタルサーバーでCGI設置...
-
ご回答に対するベストアンサー...
-
メタファイル読み込みエラー
-
windows media playerについて。
-
FTP エラーコード451
-
iexplore.exeを閉じます?何で...
-
一定期間内のYahoo! JAPAN IDの...
-
いままでこんなことなかったの...
-
Windows Media playerで「この...
-
DNSエラーでページに入れない
-
CSCの【ただぺ~じ】について
おすすめ情報
実際のプログラムは下記です。
宜しくお願い致します。
Sub フォルダー作成()
Dim mydir As String
Dim i As Integer
For i = 4 To Range("A" & Rows.Count).End(xlUp).Row
mydir = "C:/Google ドライブ/T/01_T/02_受注/" & Cells(i, 17).Value
If Dir(mydir, vbDirectory) = vbNullString Then MkDir mydir
Next i
MsgBox "完了しました"
End Sub