[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一つ上のフォルダ内のファイル名を取得したい』(おさむ)
エクセルファイルからひとつ上の「産業技術課」の中にある、
ファイル数とファイル名を取得し、ファイル名をエクセルシートに書き込みしたい。
以下が私の書いたコードです!
fc = 0
fn = Dir(ThisWorkbook.Path & "\..\*.xls")
Do While fn <> ""
fc = fc + 1
fn = Dir()
Loop
cnt = 1
buf = Dir(ThisWorkbook.Path & "\..\*.xls")
For b = 2 To 20
Cells(b, 39) = ""
Next b
Do While buf <> ""
cnt = cnt + 1
Cells(cnt, 39) = buf
buf = Dir()
Loop
ファイル名を数えるところでエラーになります。どこがおかしいのかさっぱりです!
よろしくご教授ください。
別にエラーに成りませんでしたが。。。 何というエラーになりましたか?
>ファイル名を数えるところ
っていうと、具体的には
fc = fc + 1
ですか?
(HANA)
以下の2行も記述しています。
Set myFSO = CreateObject("Scripting.FileSystemObject")
OpenFolder = myFSO.GetFolder(ThisWorkbook.Path).ParentFolder
fc = 0
fn = Dir(ThisWorkbook.Path & "\..\*.xls")
ここで、デバックエラーで、行全体が黄色く表示されます。
(おさむ)
fnを数値型で変数宣言していました!
申し訳ございませんでした。
(おさむ)
2回にわけてループする必要はないですよ
Do While fn <> ""
fc = fc + 1
Cells(fc + 1, 39).Value = fn
fn = Dir()
Loop
>fnを数値型で変数宣言していました! そしたら、そう言ったメッセージ 実行時エラー 13 型が一致しません が出ませんでしたか?
こちらも質問とは別件ですが
For b = 2 To 20
Cells(b, 39) = ""
Next b
ループせずに直接書き込んでも良さそうです。
Range(Cells(2, 39), Cells(20, 39)) = ""
プロパティは省略しない事が推奨されていますので
Range(Cells(2, 39), Cells(20, 39)).Value = ""
ただ、おそらくセルの内容をクリアしたいのだと思いますので
Range(Cells(2, 39), Cells(20, 39)).ClearContents
でも良いと思います。
何かのタイミングで、20行目より後にファイル名が書き出されていた場合 その部分は消えない事に成りますので、改善を検討されても良いと思いますが。。。
fcの値を書き出すセルを作ってあるなら そのセルを参照して、削除する範囲を決めても良いと思います。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.