- 締切済み
ファイルを移動して保存するVBAの質問
Sub 納品済みフォルダに移動 If MsgBox(“納品済みフォルダに保存します。“,vbYesNo)= vbNo Then Exit Sub Else End If Const SPrnDIR =”D:\製品フォルダ\納品済みフォルダ“ ‘親フォルダ Const SChdDIR = “年“ ‘子フォルダ Const SChdChdDIR = “月“ ‘孫フォルダ Const SBkNmTmpl =”.xls” ‘ファイル名 Const SYEAR1st=”4/1” ‘年度の始まりの日付を指定 Dim dtTgt Dim nCurFisYear As Long Dim sDir As String Dim sBkFNm As String dtTgt = CDate(Range(“L1”).Value) nCurFisYear = Year(dtTgt) ‘L1セルの年 nCurFismonth = Month(dtTgt) ‘L1セルの月 If dtTgt <Cdate(nCurFisYear&”/”&SYEAR1st) Then nCurFisYear = nCurFisYear-1 ‘親フォルダの存否確認 If Dir(SPrnDIR, vbDirectory)=”” Then MsgBox SPrnDIR & vbLf & “フォルダが見つかりません。”,vbExclamation Exit Sub ‘フォルダが無ければ中止 ‘子フォルダ(〇〇〇〇年)の存否確認 sDir = SPrnDIR & “\” nCurFisYear & SChdDIR ‘保存フォルダパス If Dir(sDir,vbDirectory) = “” Then MkDir sDir ‘子フォルダ無ければ作成 ‘孫フォルダ(〇〇月)の存否確認 sDir = sDIR & “\ nCurFisMonth & SChdDIR ‘保存フォルダパス If Dir(sDir,vbDirectory) = “” Then MkDir sDir ‘子フォルダ無ければ作成 sBkFNm = sDir & “\” & Format(dtTgt,Range(“T6”))&SBkNmtmpl ‘保存するブック名「〇〇〇〇年◆◆月●日□□□□」で〇は年で◆は月で●は日で〇は製品名 On Error GoTo Exit_ With This Workbook ‘Workbookオブジェクトとして指定 ‘保存するファイルの既存確認と上書き確認 If Dir(sBkFNm) 〈〉“” Then If MsgBox(SPrnDIR & vbLf & “既に存在しています。上書き保存しますか?“,vbYesNo Or vbInformation) = Else Then Application.DisplayAlerts = False Else MsgBox SPrnDIR & vbLf & “ブック保存を中止しました。”,vbInformation Exit Sub End If ‘エクセルバージョン移行する場合 ElseIf.FileFormat〈〉xlExcel8 Then Application.DisplayAlerts = False End If ‘エクセルファイルをエクセル2003形式で保存 .saveAs Filename:=sBkFNm,FileFormat:=xlExcel8 End With Exit_: Application.Displayalerts = True End Sub この様なVBAがあります。 「D:\製品フォルダ\納品前フォルダ」に保存して、開いているエクセルファイルをCommandButtonを押すことで納品済みフォルダに保存します。 質問ですが、納品前フォルダに保存されたエクセルファイルを納品済みフォルダに移動する、又は切り取って貼り付けるVBAが分からないのでどの様にすればよろしいでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
丁寧にチェックもすべき時はそうなるのかもしれないが Googleででも、「fso ファイル移動」で照会して、 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject23.htm FileSystemObjectオブジェクト - MoveFileメソッド などにあるような、骨子は中身4-5行のコードで済むのでは? 他に、話に出てくる、フォルダやファイルの存在のチェックなどはやるべきかもしれないが。 Dirなどのコマンドライン由来のものより、FSOのものを使ったほうがわかりやすいのでは? 参考 http://officetanaka.net/excel/vba/filesystemobject/filesystemobject10.htm FileSystemObjectオブジェクト - FileExistsメソッド ファイルが存在するかどうか調べます http://officetanaka.net/excel/vba/filesystemobject/filesystemobject11.htm フォルダが存在するかどうか調べます == >エクセルバージョン移行する場合 は、小生よくわからない。 これが主目的かな?
補足
実際にwebを探しても同じ様なコードなんて無いと思いますよ。 まぁ確かに趣旨のコードだけ書けば良かったのに全てを記入してシンプルに組み立てられたのに長々と組み立てているのは反省しています。 コードを記入したらパクッて来たやら、コードを記入していないと趣旨が分からない&コードが書けて質問しろザコがみたいな感じで人を小馬鹿にして書かなくても良い余計な言葉が多いです。 せっかく参考になったのに不愉快です。