Sub コピペ()
'変数宣言 PathNameは文字列、FileNameも文字列、posは長整数型
Dim PathName As String, FileName As String, pos As Long
'データを貼り付けるファイルを選択して開く
'OpenFileNameにはGetOpenFilenameによって開くダイアログからファイルを選択
'もしファイル名がFalseでなければOpenFileNameのファイルを開く
OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls")
If OpenFileName <> "False" Then
Workbooks.Open OpenFileName
End If
'OpenFileNameは絶対参照のアドレス(C:aaa¥bbb¥ccc.xls)になっているのでそれをファイル名だけにする
'コピペの際は¥マークを消して半角で入れなおす
'InstrRevは指定した文字を後ろから検索。見つかったら先頭からの位置を返す。
'posはOpenFileNameを後ろから検索して最初に¥がある前からの位置
'これは必要ないが一応、PathNameは前からファイル名の直前の¥までの文字列
'FileNameはOpenFileNameのファイル名の前の¥の次の位置から抜き出す。つまりファイル名
pos = InStrRev(OpenFileName, "¥")
PathName = Left(OpenFileName, pos)
FileName = Mid(OpenFileName, pos + 1)
'Workbooksの()内は、ファイル名でないと開けない。絶対参照のフルパスは使えない。
'そのために上でファイル名だけにする処理を行った。
'1111.xlsmはこのマクロがある元データがあるファイル。そのSheet1のA2からE2をコピー
'それを上でファイル名だけにしたダイアログで選択したファイルのSheet1の左上C15から貼り付け。貼り付け形式は値貼り付け
Workbooks("1111.xlsm").Worksheets("Sheet1").Range("A2:E2").Copy
Workbooks(FileName).Worksheets("Sheet1").Range("C15").PasteSpecial Paste:=xlPasteValues
'最初に開いたファイルを閉じる。保存するかの警告は出る。
Workbooks(FileName).Close
End Sub