推しミネラルウォーターはありますか?

vbでprogram filesにファイルをコピーするとエラーが発生します。filecopy関数とFileSystemオブジェクトでもエラーが発生します。Win2000では上手くいきます。Win98では失敗します。何か違いがあるのでしょうか?

A 回答 (6件)

Windowsでは、Programとfilesの間にスペースがあるのがふつうだと思いますよ。


いずれにせよそれが原因ですね
    • good
    • 0

>コピー元ファイルの問題でしょう。


その可能性も否定できませんね。
どういう環境で使われているのか、実際のところ、詳細がわかりませんから。
ただ、
>コピー先に問題がある場合は違うエラーになるはずです。
というのは違うと思いますよ。
私も最初はそう思ったのですが、VB6では、どちらもおなじエラーになってしまいます。

>コピー元ファイルが存在しないとか。
>コピー元ファイルをopenしてcloseしていないとか。
そうですね。Dir関数ででフォルダもしくはファイルにアクセスできるとすれば、その可能性が高いですね。

何にせよ、2430326さんがどのようなソフトにしているかが重要ですね。
ためしに、新規にプロジェクトを作ってもらって、前述のソースで実行してもらうのがわかりやすいのですがね。

この回答への補足

Program filesのProgramとfilesのスペースを削除したところエラーがでませんでした。

補足日時:2005/04/15 19:16
    • good
    • 0

>エラー内容は「実行時エラー57ファイルが見つかりません」です。



コピー元ファイルの問題でしょう。
コピー先に問題がある場合は違うエラーになるはずです。

コピー元ファイルが存在しないとか。
コピー元ファイルをopenしてcloseしていないとか。
    • good
    • 0

ためしにWin32APIを使ってみても、当方では同じ結果でした。


これでできないとなると、ファイル名が間違っているか、なにかぐらいしか思い当たらないのですが。

以下、ソースです。

Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Private Sub Command1_Click()
Dim s As String
Dim d As String
Dim x As String
Dim ret As Long

s = "c:\Sample.c"
d = "c:\Program files\Sample.c"
'' x = Dir(s)
'' FileCopy s, d
ret = CopyFile(s, d, False) '' 既存ファイルのオーバーライト

End Sub
    • good
    • 0

このあたりの挙動は変わっているとはおもわないのですが、試しに、Dir関数でProgram Filesフォルダが取得できるかどうか、確認してください。


Dim d As String
Dim rcv as String
d = "c:\Program files"
rcv = Dir(d)
って感じかな?
    • good
    • 0

どのようにされたのかわかりませんが、当方ではちゃんと動作しているようですよ。



とりあえず、フォーム上にCommand1ボタンを1つはりつけて、以下のソースを記述しました。
c:\にSample.cというファイルをおいておきます。
これで実行すると、Program FilesのなかにSample.cが
コピーされます。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Private Sub Command1_Click()
Dim s As String
Dim d As String

s = "c:\Sample.c"
d = "c:\Program files\Sample.c"
FileCopy s, d
End Sub
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

環境的にはVisual Basic 6.0でテストしてあります。
動作確認はWindows2000とWindows98SEです。

この回答への補足

ご指摘どおりプログラムを作成し実行してみたのですが、
結果は同じでした。
環境的はVisual Basic 6.0です。
動作確認はWindows2000とWindows98SEです。
何台か98でテストしたのですが結果は同じでした。
エラー内容は「実行時エラー57ファイルが見つかりません」です。

補足日時:2005/04/15 10:36
    • good
    • 0

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