アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセス2003vbaです。
自身のファイルのコピーを作成したいのですが

Sub Sample()
FileCopy CurrentProject.FullName, "C:\あああ.mdb"
End Sub

を実行すると
「実行時エラー'70' 書き込みできません」
になってしまいます。

もしかして同じフォルダ内じゃないと駄目なのですか?(「C:」)
何か間違っていますか?
よろしくお願いします。

A 回答 (2件)

> 「実行時エラー'70' 書き込みできません」



「FileCopy」のヘルプをみると(VBE画面右上の検索窓にて「FileCopy」で検索)、

> 既に開いているファイルに対して、FileCopy ステートメントを実行しようとすると、エラーが発生します

と解説欄にありますので、自身のコピーの作成には使えないはずです。
(こちらで同じエラーとなることを確認しました)


自身を複製する場合は、以下のようにします(FileSystemObjectを使った例):

Private Sub Sample1()

  '変数の宣言
  Dim FSO As Object

  'FileSystemObjectを作成
  Set FSO = CreateObject("Scripting.FileSystemObject")
  'FileSystemObjectに用意されている「CopyFile」を使用して複製
  FSO.CopyFile CurrentProject.FullName, "C:\あああ.mdb"
  '念のため、明示的にメモリを解放
  Set FSO = Nothing

End Sub


なお、VBEのメニューで、「ツール(T)→参照設定(R)」を選択して『参照設定』
ダイアログを開き、「Microsoft Scripting Runtime」のチェックをオンにすると、
以下のような書き方もできます。
(特にコードの簡略化ができるわけではありませんが、「FSO.」と入力したときに、
「.」の後に続けられる候補が表示されるので、自分でコードを書くときに便利)

Private Sub Sample2()

  Dim FSO As FileSystemObject

  Set FSO = New FileSystemObject
  FSO.CopyFile CurrentProject, "C:\あああ.mdb"
  Set FSO = Nothing

End Sub

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

なお、No.1の方のお礼欄のエラーですが、「Const」(=定数)を宣言した場合は、
「=」の後ろには
 「"あああ.mdb"」などの定数や
 「"test" & vbCrLf」などの定数だけでできた式(=定数式)
は指定できますが、「.FullName」のようなプロパティ、或いは同時に宣言した
変数などを指定することはできませんので、合わせて参考まで。
    • good
    • 0
この回答へのお礼

おお!すばらしい!できました!ありがとうございます。

お礼日時:2009/05/17 12:30

勘違いしてたらすみません↓


これで出来ないでしょうか。。

Private Const cnsSOUR = "C:\あああ.mdb" ' 元ファイル
Private Const cnsDEST = "C:\いいい.mdb" ' 先ファイル

Sub Sample()
FileCopy cnsSOUR, cnsDEST
End Sub
    • good
    • 0
この回答へのお礼

ご提示のコードでできました!
ありがとうございます。

しかし元ファイルをカレントファイルで取得したい場合どういった方法があるでしょうか?

やはり
Private Const cnsSOUR = CurrentProject.FullName
だと
「定数式が必要です」
となってしまいます。

お礼日時:2009/05/16 00:23

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

このQ&Aを見た人はこんなQ&Aも見ています