Learning Note

できるようになったことを記録しています

別ブックからシートをコピーする

シートをコピーするにはCopyメソッドを使用します。

例えば、同じブック内の"コピー元"という名前のシートを"Sheet3"という名前のシートの後ろにコピーする場合

Sheets("コピー元").Copy After:=Sheets("Sheet3")


別ブックに存在する"コピー元"シートをコピーする場合

Workbooks("別ブック.xlsx").Worksheets("コピー元").Copy After:=Workbooks("このブック.xlsm").Worksheets("Sheet3")


シートをコピーする際は"別ブック"も開いておく必要があります。先日書いたExcelBookを開く記事も参考にしてみてください。

konifug.hatenablog.com

ダイアログボックスで指定したExcelBookを開く

ExcelBookを開くにはWorkbooks.Openを使用する。

書式

 Workbooks.Open Filename:=開くBookのパス, ReadOnly:=False


開くBookのパスは直接記述しても良いが、先日の書いた"ダイアログボックスで指定ファイルのパスを取得する関数"を使うと汎用性が高まる。

konifug.hatenablog.com

関数内で"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 filePath As String
    filePath = DecideFile()
    If filePath = "" Then Exit Sub
End Sub

copyコマンドでテキストファイルを結合する

copyコマンドは非常に便利。ファイルをコピーするだけでなく、ある特定のディレクトリ内にある複数のテキストファイルを結合するといった処理も可能。


書式

cd テキストファイルがあるディレクトリ
copy *.txt 結合後ファイル名.txt



f:id:konifug:20170111232314j:plain