この質問は、長いコメントと提案された回答からの更新のために編集されました。
ここで要求されているのはモジュール13です。
Sub SaveInFormat()
Application.DisplayAlerts = False
Workbooks.Application.ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data\" & Format(Date, "yyyymm") & "DB" & ".xlsx", leFormat:=51
Application.DisplayAlerts = True
End Sub
また、エラー処理にも問題があります。私はそれを間違えたことは知っていますが、それに入る前の時点でクローズ関数を修正することにもっと興味があります。いくつかの作業が必要なエラー処理コードは次のとおりです
Sub test()
Dim wk As String, yr As String, fname As String, fpath As String
Dim owb As Workbook
wk = ComboBox1.Value
yr = ComboBox2.Value
fname = yr & "W" & wk
fpath = "C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data"
owb = Application.Workbooks.Open(fpath & "\" & fname)
On Error GoTo ErrorHandler:
ErrorHandler:
If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Exit Sub Else Call Clear
'Do Some Stuff
Call Module13.SaveInFormat
owb.Close
これは、テストコードに加えて、ファイルのパスと名前の変更です。
ディスカッションの投稿後、更新された回答:
Option Explicit
Sub test()
Dim wk As String, yr As String
Dim fname As String, fpath As String
Dim owb As Workbook
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
End With
wk = ComboBox1.Value
yr = ComboBox2.Value
fname = yr & "W" & wk
fpath = "C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data"
On Error GoTo ErrorHandler
Set owb = Application.Workbooks.Open(fpath & "\" & fname)
'Do Some Stuff
With owb
.SaveAs fpath & Format(Date, "yyyymm") & "DB" & ".xlsx", 51
.Close
End With
With Application
.DisplayAlerts = True
.ScreenUpdating = True
.EnableEvents = True
End With
Exit Sub
ErrorHandler: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then
Else: Call Clear
End Sub
エラー処理:
特定のエラーをキャッチするには、次のようなものを試すことができます。
On Error Resume Next
Set owb = Application.Workbooks.Open(fpath & "\" & fname)
If Err.Number = 1004 Then
GoTo FileNotFound
Else
End If
...
Exit Sub
FileNotFound: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then
Else: Call Clear
私はいくつかの異なることを試みて答えますが、私の貢献はあなたの質問のすべてを網羅していないかもしれません。多分私たちの何人かはこれから異なるチャンクを取り出すことができます。ただし、この情報は役に立つはずです。さあ行こう..
別のファイルを開く:
ChDir "[Path here]" 'get into the right folder here
Workbooks.Open Filename:= "[Path here]" 'include the filename in this path
'copy data into current workbook or whatever you want here
ActiveWindow.Close 'closes out the file
指定された日付が存在する場合にファイルを開く:
ファイルが存在するかどうかを確認するためにディレクトリを検索する方法がわかりませんが、私の場合はそれを検索することを気にしないでしょう、私はそれを開いてエラーチェックを入れて、存在しない場合、このメッセージを表示するか、xyzを実行します。
いくつかの一般的なエラーチェックステートメント:
On Error Resume Next 'if error occurs continues on to the next line (ignores it)
ChDir "[Path here]"
Workbooks.Open Filename:= "[Path here]" 'try to open file here
または(より良いオプション):
存在しない場合は、メッセージボックスまたはダイアログボックスを表示して、「ファイルが存在しません。新しいファイルを作成しますか?
以下に示すGoTo ErrorHandler
を使用してこれを達成することができます。
On Error GoTo ErrorHandler:
ChDir "[Path here]"
Workbooks.Open Filename:= "[Path here]" 'try to open file here
ErrorHandler:
'Display error message or any code you want to run on error here
エラー処理の詳細はこちら: http://www.cpearson.com/Excel/errorhandling.htm
また、VBAでより多くを学びたい、またはより一般的に知りたい場合は、Siddharth Routのサイトをお勧めします。彼は多くのチュートリアルとサンプルコードをここに持っています: http://www.siddharthrout.com/vb-dot- net-and-Excel /
お役に立てれば!
エラーコードが毎回実行されないようにする方法の例:
エラーハンドラの前にExit Sub
なしでコードをデバッグすると、エラーが発生したかどうかのたびにエラーハンドラが実行されることがすぐにわかります。コード例の下のリンクは、この質問に対する以前の回答を示しています。
Sub Macro
On Error GoTo ErrorHandler:
ChDir "[Path here]"
Workbooks.Open Filename:= "[Path here]" 'try to open file here
Exit Sub 'Code will exit BEFORE ErrorHandler if everything goes smoothly
'Otherwise, on error, ErrorHandler will be run
ErrorHandler:
'Display error message or any code you want to run on error here
End Sub
また、これがどのように機能するかについての詳細な参照が必要なこの他の質問を見てください: goto block not working VBA