| 
    
     |  | mypapa さん、おはようございます。 
 >下記のような流れでVBAを作成したところ、
 >xls形式でダイアログを指定する際に指定のフォルダに
 >アクセスしてくれません。記述がおかしいのでしょうか。
 アクセスしないの意味がわかりません。
 ・エラーになる
 ・保存できない(読み取り専用?)
 ・フォルダがない
 ・デフォルトにならない
 どんな理由ですか?
 
 >それとエクセル自体を閉じるにはどのようなコードを
 >記述したらよいのでしょうか?
 Application.Quitです。
 
 カレントフォルダを指定する例。
 最後にApplication.Quitしますので、マクロを書いたらそのブックを保存してから実行しないと消えてしまうので注意。
 
 Sub test()
 Dim MyFolder As String
 Dim MyFileA As String
 '
 MyFolder = "c:\test"
 MyFileA = MyFolder + "\bonaplus" & Format(Date, "yyyymmdd")
 '今日実行した場合、c:\testフォルダに、
 'bonaplus20030509.csvとbonaplus20030509.xlsができる...でいいのでしょうか?
 'フォルダが無い場合は作成(1階層限定の場合はMkDirでいいです)
 If Dir(MyFileA, vbDirectory) = "" Then
 '2階層以上を指定しても大丈夫なように
 ForceDirectories MyFolder
 End If
 'カレントフォルダ(ダイアログ表示時デフォルトになる)を変更
 ChDrive MyFolder: ChDir MyFolder
 '
 ActiveWorkbook.Worksheets("test").Copy
 Application.DisplayAlerts = False
 'arg2:=6(csvファイル形式)
 Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFileA, arg2:=6
 ActiveWorkbook.Close
 Application.DisplayAlerts = True
 'ダイアログ表示(xls形式)
 'AとBは同じフォルダのようなので統合
 '
 ChDrive MyFolder: ChDir MyFolder
 '
 ActiveWorkbook.Worksheets("data").Select
 ActiveSheet.Range("A1").Select
 Application.DisplayAlerts = False
 'arg2:=1(xlsファイル形式)
 Application.Dialogs(xlDialogSaveAs).Show arg1:=MyFileA, arg2:=1
 Application.DisplayAlerts = True
 MsgBox "c:\testにファイルが作成されました。"
 '
 ThisWorkbook.Saved = True
 Application.Quit
 End Sub
 '///子フォルダ連続作成↓
 Sub ForceDirectories(ByVal Tpath As String)
 '子フォルダを作る C:\a\b\c\d\e というのをdが無い状態でも順次作成
 If Right(Tpath, 1) <> "\" Then Tpath = Tpath + "\"
 Dim pd(20) As Integer
 s1% = 1
 Do
 md% = InStr(s1%, Tpath, "\")
 If md% = 0 Then Exit Do
 CC% = CC% + 1: pd(CC%) = md%: s1% = md% + 1
 Loop
 For NN% = 1 To CC%
 Pdat$ = Left(Tpath, pd(NN%))
 If Dir(Pdat$, vbDirectory) = "" Then MkDir Pdat$
 Next
 End Sub
 
 こんな感じです。
 アクセスできない理由がわからないので、フォルダを作成しカレントを変更する方向で考えました。
 違ってたらすみません。
 
 あと、ファイル名を指定して、フォルダを指定してあるのに、ダイアログを出す理由がわからないのですけど。
 それから、ダイアログでキャンセルをクリックすると、保存されずに終わるのですが、その部分の分岐がついていないので正常終了(2つとも保存)できたように見えますよ。
 
 |  |