Excel VBA質問箱 IV

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

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


8596 / 13644 ツリー ←次へ | 前へ→

【32333】Dir関数について 陸遜 05/12/12(月) 23:03 質問[未読]
【32335】Re:Dir関数について かみちゃん 05/12/12(月) 23:11 回答[未読]
【32337】Re:Dir関数について 陸遜 05/12/12(月) 23:23 お礼[未読]
【32338】Re:Dir関数について かみちゃん 05/12/12(月) 23:37 発言[未読]
【32339】Re:Dir関数について 陸遜 05/12/12(月) 23:55 質問[未読]
【32340】Re:Dir関数について かみちゃん 05/12/13(火) 0:02 回答[未読]
【32392】Re:Dir関数について 陸遜 05/12/13(火) 21:47 お礼[未読]

【32333】Dir関数について
質問  陸遜  - 05/12/12(月) 23:03 -

引用なし
パスワード
   Dim myName As String

chdrive(A)
chdir = Dir("A:\*.csv", vbNormal)

フロッピーにダウンロードしたcsvファイルを処理したいのですが、
上記のように行っても処理できませんでした。
Cドライブでやったらうまくいくのですが、フロッピーですとうまく
行かないのです。どなたかいい方法をご存じないでしょうか。

【32335】Re:Dir関数について
回答  かみちゃん  - 05/12/12(月) 23:11 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Dim myName As String
>
>chdrive(A)
>chdir = Dir("A:\*.csv", vbNormal)
>
>フロッピーにダウンロードしたcsvファイルを処理したいのですが、

投稿時の入力誤りでしょうか?
ChDrive ステートメントのヘルプを確認してください。
記述が違います。
ただ、今回の要件では必要ないかと思います。

問題は、
>chdir = Dir("A:\*.csv", vbNormal)
にあります。

ChDir ステートメントとDir関数のヘルプを確認していだきたいのですが、

 myName = Dir("A:\*.csv", vbNormal)

のような記述にしないといけません。

【32337】Re:Dir関数について
お礼  陸遜  - 05/12/12(月) 23:23 -

引用なし
パスワード
   ▼かみちゃん さん:

大変失礼いたしました。間違えておりました。
Dim myName As String
  
chdrive = "A:\"
myName = Dir("A:\ *.csv", vbNormal)

Workbooks.Open Filename:=myName

とすると、存在しているはずのcsvファイルが見つかりません。
と出てしまいます。普通のフォルダですとうまくいくのですが、
何が原因なのでしょうか?

【32338】Re:Dir関数について
発言  かみちゃん  - 05/12/12(月) 23:37 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>大変失礼いたしました。間違えておりました。

投稿時には、VBEで記述したコードをコピー、貼り付けされることをおすすめします。

>chdrive = "A:\"

先ほども書きましたが、このコード特に必要ではないと思います。
また、記述も間違っているためここでエラーになるのではないでしょうか?
先ほども書きましたが、ヘルプは確認されましたか?

>myName = Dir("A:\ *.csv", vbNormal)

気になるのは、\のあとに、半角スペースが入っているところです。

>とすると、存在しているはずのcsvファイルが見つかりません。
>と出てしまいます。普通のフォルダですとうまくいくのですが、

以下のようなコードで再度確認されてはいかがですか?

 Dim myName As String
 
 'ChDrive "A:\" '←このコードは不要!
 myName = Dir("A:\*.csv", vbNormal)
 If myName <> "" Then
  Workbooks.Open Filename:=myName
 Else
  MsgBox "A:\*.csvのファイルはありません"
 End If

【32339】Re:Dir関数について
質問  陸遜  - 05/12/12(月) 23:55 -

引用なし
パスワード
   ▼かみちゃん さん:

ご返事大変ありがとうございました。
先ほど試してみましたが、また同じエラーが出てしまいました。

「エラー1004 ’〜.csv’が見つかりません。」何が原因か
いろいろと調べたのですが、いまひとつわかりません。
ファイルが壊れやすいからなのでしょうか?それともセキュリティー
設定か何かなのでしょうか?
 ちなみにexcel2003 WindowsXPです。

【32340】Re:Dir関数について
回答  かみちゃん  - 05/12/13(火) 0:02 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>「エラー1004 ’〜.csv’が見つかりません。」何が原因か
>いろいろと調べたのですが、いまひとつわかりません。

すみません。さきほど提示したサンプルコードに大事な記述をもらしていました。
下記の★部分の行の記述を修正してください。

 Dim myName As String
 
 'ChDrive "A:\" '←このコードは不要!
 myName = Dir("A:\*.csv", vbNormal)
 If myName <> "" Then
  MsgBox myName & " を開きます。" '★確認のため
  Workbooks.Open Filename:="A:\" & myName '★
 Else
  MsgBox "A:\*.csvのファイルはありません"
 End If

つまり、Dir関数の戻り値は、フルパスではありませんので、パス名(上記コード
ではA:\)を付加してあげることが必要です。

最初から、エラーメッセージは書いてくださいね。それで大抵わかることがあるので。
(って、こちらで動作確認をしなかったのも悪いのですが・・・)

【32392】Re:Dir関数について
お礼  陸遜  - 05/12/13(火) 21:47 -

引用なし
パスワード
   ▼かみちゃん さん:
お手数おかけしました。おかげさまで解決できました。
これだけに3日もかかってしまいまして、初心者はこんなに
つらいものだと思い知らされました。
 今後もよろしくお願いします。

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