プロが教えるわが家の防犯対策術!

お世話になっております。
エラーの原因が分かったので再質問させていただきます。
Excel 2007を使用しておりますのでよろしくお願いします。

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …

上記アドレスで紹介されてるファイル一覧の取得について、フォルダのアドレス先をSheet1のa4セルから取得したいのですが、どのように書けばよろしいでしょうか。
他の質問を参考に下記のように修正したのですが
"C:\****0¥"と、セルの値が0表示になってしまいました。

inputboxに入力する方法でなくともかまいませんので
どうぞよろしくお願いします。

Option Explicit

' 指定したフォルダ内のファイルの一覧を取得
Sub Display_Directory()
Const cnsTitle = "フォルダ内のファイル名一覧取得"
Const cnsDIR = "\*.*"
Dim xlAPP As Application
Dim strPathName As String, vntPathName As Variant
Dim strFileName As String
Dim GYO As Long

Set xlAPP = Application
' InputBoxでフォルダ指定を受ける
vntPathName = xlAPP.InputBox("参照するフォルダ名を入力して下さい。", _
cnsTitle, "C:\****" & Sheets(1).Range("A4") & "¥") ' ①
If VarType(vntPathName) = vbBoolean Then Exit Sub
strPathName = vntPathName
' フォルダの存在確認
If Dir(strPathName, vbDirectory) = "" Then ' ②
MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle
Exit Sub
End If

' 先頭のファイル名の取得
strFileName = Dir(strPathName & cnsDIR, vbNormal) ' ③
' ファイルが見つからなくなるまで繰り返す
Do While strFileName <> "" ' ④
' 行を加算
GYO = GYO + 1 ' 先頭は1行目
Cells(GYO, 1).Value = strFileName ' ⑤
' 次のファイル名を取得
strFileName = Dir() ' ⑥
Loop

End Sub

A 回答 (2件)

2016で確認しましたが、A4の文字列出てきました。

。。

aaaaって入れたら、c:\****aaaa\と出てきて、
100って入れたら、c:\****100\と出てきました。



ちなみに、A4セルにはどんな値が入っているのですか?
    • good
    • 0
この回答へのお礼

ありがとう

検証ありがとうございます。
関数とかではなくベタ打ちで文字が入っているのですが、やはり0表示になってしまいました。
もしかしたら他におかしいとこがあるかもしれないので、自分でも検証してみます。

お礼日時:2018/04/17 12:12

ご自身のコードではありませんが、今はこういう書き方をしませんね。

vntPathName とか、 xlApp = Application とか。分かりきっていることを全部入れることはしません。

>cnsTitle, "C:\****" & Sheets(1).Range("A4") & "¥") ' ①

なんのために、Sheets(1).Range("A4")としているのか良く分かりません。

あえて、質問のコードに従わなければですが、以下のようにコードを書いてみました。

'//
Sub GetFileNames()
Dim TargetDir As String
Dim i As Long
Dim FName As String
 With Application.FileDialog(msoFileDialogFolderPicker)
  .Title = "フォルダー選択"
  If .Show = -1 Then
   TargetDir = .SelectedItems(1) & "\"
  Else
   Exit Sub
  End If
 End With
FName = Dir(TargetDir & "*.*", vbNormal)  '*.*は、定数に置く必要はありません。
Do While FName <> ""
 If FName <> "." And FName <> ".." Then
  If (GetAttr(TargetDir & FName) And vbNormal) = vbNormal Then
   Cells(4 + i, 1) = FName 'A4から
   i = i + 1
  End If
 End If
 FName = Dir
Loop
End Sub
    • good
    • 0
この回答へのお礼

ありがとう

マクロまで書いてくださってありがとうございます。
こちらを参考にしつつ、試行錯誤してみようと思います。
ありがとうございました!

お礼日時:2018/04/17 12:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!