別ブックからシートをコピーする
シートをコピーするにはCopyメソッドを使用します。
例えば、同じブック内の"コピー元"という名前のシートを"Sheet3"という名前のシートの後ろにコピーする場合
Sheets("コピー元").Copy After:=Sheets("Sheet3")
別ブックに存在する"コピー元"シートをコピーする場合
Workbooks("別ブック.xlsx").Worksheets("コピー元").Copy After:=Workbooks("このブック.xlsm").Worksheets("Sheet3")
シートをコピーする際は"別ブック"も開いておく必要があります。先日書いたExcelBookを開く記事も参考にしてみてください。
ダイアログボックスで指定したExcelBookを開く
ExcelBookを開くにはWorkbooks.Openを使用する。
書式
Workbooks.Open Filename:=開くBookのパス, ReadOnly:=False
開くBookのパスは直接記述しても良いが、先日の書いた"ダイアログボックスで指定ファイルのパスを取得する関数"を使うと汎用性が高まる。
関数内で"xls,xlsx,xlsm"を選択できるようフィルタをかけておくと良い。
使用例
Sub Main() ' ダイアログボックスで指定したファイルのパスを取得する関数 Dim filePath As String filePath = DecideFile() If filePath = "" Then Exit Sub Dim WB As Workbook Workbooks.Open Filename:=filePath, ReadOnly:=False Set WB = ActiveWorkbook 'この間で処理 WB.Close savechanges:=False Set WB = Nothing End Sub
ダイアログボックスで指定したフォルダのパスを返す
ダイアログボックスで指定したフォルダのパスを返す関数。
使用例
Sub Main() Dim folderPath As String folderPath = DecideFolder() If folderPath = "" Then Exit Sub End Sub
ダイアログボックスで指定したファイルのパスを返す
ダイアログボックスで指定したファイルの絶対パスを取得して返す関数。
使用例
Sub Main() Dim filePath As String filePath = DecideFile() If filePath = "" Then Exit Sub End Sub
copyコマンドでテキストファイルを結合する
copyコマンドは非常に便利。ファイルをコピーするだけでなく、ある特定のディレクトリ内にある複数のテキストファイルを結合するといった処理も可能。
書式
cd テキストファイルがあるディレクトリ copy *.txt 結合後ファイル名.txt