• 締切済み

program filesにファイルをコピーするとエラー

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

みんなの回答

  • techa
  • ベストアンサー率60% (41/68)
回答No.6

Windowsでは、Programとfilesの間にスペースがあるのがふつうだと思いますよ。 いずれにせよそれが原因ですね

  • techa
  • ベストアンサー率60% (41/68)
回答No.5

>コピー元ファイルの問題でしょう。 その可能性も否定できませんね。 どういう環境で使われているのか、実際のところ、詳細がわかりませんから。 ただ、 >コピー先に問題がある場合は違うエラーになるはずです。 というのは違うと思いますよ。 私も最初はそう思ったのですが、VB6では、どちらもおなじエラーになってしまいます。 >コピー元ファイルが存在しないとか。 >コピー元ファイルをopenしてcloseしていないとか。 そうですね。Dir関数ででフォルダもしくはファイルにアクセスできるとすれば、その可能性が高いですね。 何にせよ、2430326さんがどのようなソフトにしているかが重要ですね。 ためしに、新規にプロジェクトを作ってもらって、前述のソースで実行してもらうのがわかりやすいのですがね。

2430326
質問者

補足

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

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.4

>エラー内容は「実行時エラー57ファイルが見つかりません」です。 コピー元ファイルの問題でしょう。 コピー先に問題がある場合は違うエラーになるはずです。 コピー元ファイルが存在しないとか。 コピー元ファイルをopenしてcloseしていないとか。

  • techa
  • ベストアンサー率60% (41/68)
回答No.3

ためしに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

  • techa
  • ベストアンサー率60% (41/68)
回答No.2

このあたりの挙動は変わっているとはおもわないのですが、試しに、Dir関数でProgram Filesフォルダが取得できるかどうか、確認してください。 Dim d As String Dim rcv as String d = "c:\Program files" rcv = Dir(d) って感じかな?

  • techa
  • ベストアンサー率60% (41/68)
回答No.1

どのようにされたのかわかりませんが、当方ではちゃんと動作しているようですよ。 とりあえず、フォーム上に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です。

2430326
質問者

補足

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

関連するQ&A

専門家に質問してみよう