ファイルデータの転記
例えばExcelファイルをバージョンアップしたけど、それをあげる相手が、データの移行をきちんとできるか不安……というときに、ボタンを押せばデータを新しいバージョンに移せるという仕組みを作っておけば、楽ですよね。
と以前から思っていたので、今回はそれを作りました。
Sub sum_file_data() 'データを写す
Application.ScreenUpdating = False
Dim book_path As String, temp_book As Workbook
ChDir ThisWorkbook.Path 'カレントフォルダを現在のブックのフォルダに
book_path = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If book_path = "False" Then 'ファイル指定キャンセル時の処理 MsgBox "キャンセルされました" End Else Set temp_book = Workbooks.Open(book_path) 'ファイルを開く End If
Sheets("Sheet1").Range("A1").CurrentRegion.Copy 'コピーして貼り付け ThisWorkbook.Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues temp_book.Close
ThisWorkbook.Sheets("Sheet1").Range("A1").Select 'セレクトを固定位置に
End Sub
流れとしては
カレントフォルダを現在のフォルダに移動
→移動させるファイルを選んでもらう(このときカレントフォルダを開くので、指定した)
→ファイルが指定されたら、コピー貼り付け
→フォルダを閉じる
→セレクトされているセルがコピーされたとこ全体になっているので、それを直す
という感じです。
ChDirでカレントフォルダの移動ができます。
また、ファイルの指定をさせるのは、Application.GetOpenFilenameでできます。
このとき、”Microsoft Excelブック,*.xls?”と指定することで、ファイルの種類と拡張子を絞ることができます。
ただ、意図していないファイルを開かれたときの処理はしていないので、そのときの処理を考える必要がありますね。














