都道府県穴埋めゲーム

Option Compare Database
Option Explicit

Private Sub バックアップ開始_Click()
Dim strBaseName As String
Dim strFileName As String

If IsNull(Me.バックアップ日付) = True Or Len(Me.バックアップ日付) = 0 Then
MsgBox "バックアップ日付をyyyymmdd形式で入力してください。", vbOKOnly + vbCritical, ""
Me.バックアップ日付.SetFocus
Exit Sub
End If

strBaseName = "C:\Data\在庫管理.mdb"
strFileName = "C:\Backup\" & Format(Me.日付, "yyyymmdd") & "StockData.mdb"
If Dir(strFileName) <> "" Then
If MsgBox(strFileName & Chr(13) & "は存在します。" & Chr(13) & _
"上書しますか?", vbYesNo + vbQuestion, "") = vbNo Then
Exit Sub
End If
End If

On Error GoTo LBL_ERROR
FileCopy strBaseName, strFileName

MsgBox "バックアップが完了しました。", vbInformation, ""

LBL_EXIT:
Exit Sub

LBL_ERROR:
Resume LBL_EXIT
End Sub

上記のVBAでバックアップを行いたいのですが、フォルダ等も設定しているの実行されません。上記の文に間違いがあるのでしょうか?
ソフトはAccessです。

A 回答 (4件)

s_husky です。



面目ないです。
質問者と同じミスをしていました。

Private Sub バックアップ開始_Click()
On Error GoTo Err_バックアップ開始_Click
  Dim isClick As Boolean
  Dim Answer As Integer

  If Len(Me.バックアップ日付 & "") = 0 Then
    Message "バックアップ日付をyyyymmdd形式で入力してください。"
    Me.バックアップ日付.SetFocus
  Else
    Answer = vbYes
    If FileExists(strFileName) Then
      Answer = Verify(strFileName & "は存在します。上書しますか?")
    End If
    If Answer = vbYes Then
      FileCopy "C:\Data\在庫管理.mdb", _
           "C:\Backup\" & Format(Me.日付, "yyyymmdd") & "StockData.mdb"
      Message "バックアップが完了しました。"
    End If
  End If
Exit_バックアップ開始_Click:
  Exit Sub
Err_バックアップ開始_Click:
  ErrMsg Err.Description & "(バックアップ開始_Click)"
  Resume Exit_バックアップ開始_Click
End Sub
    • good
    • 0

FileCopy は 開かれている mdb のコピーはできません。



もし、"C:\Data\在庫管理.mdb" が
今、開いているこのファイル、
または、開かれている他のファイルなら
FileSystemObject の CopyFile メソッドを使えばコピーすることができます。

http://msdn.microsoft.com/library/ja/default.asp …

参考URL:http://msdn.microsoft.com/library/ja/default.asp …
    • good
    • 0

全体のプロシージャの構造がいけません。


次は、私流の書き方です。

1、エラートラップは、全体に次のような基本形にするのが望ましいです。
2、Exit Sub は、<Exit_プロシージャ>以外では使わないようにします。
3、ヌルチェックは、Len(コントロール & "")で十分です。
4、コードは目でなぞったら意味が判るのがいいです。

チクッと、自前のプロシージャの基本形を作ったがいいです。
質問は、全体を正常化してからがいいです。

Private Sub バックアップ開始_Click()
On Error GoTo Err_バックアップ開始_Click
  Dim Answer   As Integer

  If Len(Me.バックアップ日付 & "") = 0 Then
    Message "バックアップ日付をyyyymmdd形式で入力してください。"
    Me.バックアップ日付.SetFocus
  ElseIf FileExists(strFileName) Then
    Answer = Verify(strFileName & "は存在します。上書しますか?")
    If Answer = vbYes Then
      FileCopy "C:\Data\在庫管理.mdb", _
           "C:\Backup\" & Format(Me.日付, "yyyymmdd") & "StockData.mdb"
      Message "バックアップが完了しました。"
    End If
  End If
Exit_バックアップ開始_Click:
  Exit Sub
Err_バックアップ開始_Click:
  ErrMsg Err.Description & "(バックアップ開始_Click)"
  Resume Exit_バックアップ開始_Click
End Sub
    • good
    • 0

「実行されません」とは何を指して言っているのでしょうか。


----------------------------------------------
strBaseName にも strFileName にもファイル名がフルパスで入っているのに
FileCopy strBaseName, strFileName
の行を実行してもファイルがコピーされない
----------------------------------------------
ってことでしょうか?

ステップ実行で処理の過程を 1行ずつ確認してみましたか?
エラーが発生した場合のジャンプ先 "LBL_ERROR:" で何もしないですぐに "LBL_EXIT:" に移動させちゃってるんでエラーに気づいてないってことはありませんか?
On Error GoTo LBL_ERROR の行をコメントアウトして試してみるとか、
LBL_ERROR:
Debug.Print Err.Description
Resume LBL_EXIT
ってしてみてエラーを確認してみてはどうでしょうか。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す