ExcelマクロVBAサンプル集
他ブックを開いて閉じる(Open,Close)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
最終更新日:2013-05-14

他ブックを開いて閉じる(Open,Close)


他のブックを開いて、何らかの処理(転記等)をして、閉じる。


よくあるパターンですね。


簡単にサンプルのみ掲載します。

Sub sample1()
  Dim strBookName As String
  Workbooks.Open "ブックのフルパス"
  strBookName = ActiveWorkbook.Name
  ・・・処理
  Workbooks(strBookName).Close SaveChanges:=False
End Sub


Sub sample2()
  Dim wb As Workbook
  Set wb = Workbooks.Open("ブックのフルパス")
  ・・・処理
  wb.Close SaveChanges:=False
End Sub


保存が必要な時は、SaveChanges:=Trueとして下さい。


オブジェクト変数が理解できるなら、sample2の方がスマートではあります。

・・・処理
の部分で、Withを使うなら、どちらも大差ありません。


ついでに、開いているブックを、ブック名で検索し、閉じる場合です。

Sub sample3()
  Dim i As Integer
  For i = 1 To Workbooks.Count
    If Workbooks(i).Name Like "*○○○*.xls" Then
      Workbooks(i).Close SaveChanges:=False
    End If
  Next i
End Sub


Sub sample4()
  Dim wb As Workbook
  For Each wb In Workbooks
    If InStr(wb.Name, "○○○") > 0 Then
      wb.Close SaveChanges:=False
    End If
  Next
End Sub


これも、オブジェクト変数を使うかの違いと、


Likeでワイルドカードを使う場合と、InStrで文字列位置を取得するかの違いです。


この辺は、好みによって使い分ければ良いでしょう。





同じテーマ「マクロVBAサンプル集」の記事

重複削除してコピー(AdvancedFilter)

重複データを排除して別シートにコピーする場合です。以下の表で説明します。フィルターオプションを使います。Subsample1() Worksheets(_Sheet1_).Columns(_A:B_).AdvancedFilter Action:=xlFilterCopy,
ブックを安全確実に開く方法(Open)
マクロVBAの中で、他のブックを開く事はよくあります、ブックを開く時、ブックが存在しているか、既に開いてないか これらのチェックをせずに開いてしまうと、マクロがエラー停止してしまいます。ここでは、これらのチェック方法についての具体的なVBAコードを紹介します。
ブックを閉じる(Close)
ブックを閉じる時の処理方法です。まずは、保存して閉じる場合。Subsample1()ThisWorkbook.SaveThisWorkbook.CloseEnd Sub これは、次のように書くこともできます。
他ブックを開いて閉じる(Open,Close)
ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)
「ブックを開かずにセル値を取得」に関する検索が非常に多いですおそらくExecuteExcel4Macroに関連しているとかもしくは大量のファイルがある為時間がかかってしまうと言うものでしょう。ExecuteExcel4Macroについての簡単な解説は「ExecuteExcel4Macroについて」サンプルを通して
罫線を簡単に引く(Borders,BorderAround)
エクセルでは、罫線を引く事が多いです。この罫線は、以外に処理時間もかかりますし、やり方によっては、VBAの行数も多くなります。とにかく、簡単に罫線を引く方法です。以下の表を作成する場合です。罫線を引く順番等、いろいろありますが、とにかく短いコードにしてみます。
マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ
マクロVBAの開始時および終了時に指定した方が良いApplicationのプロパティの開設です。特に重要なもの、マクロVBAの処理速度に関係するものを紹介します。Applicationのプロパティの詳細については以下をご覧ください。
オートフィルター(AutoFilter)
エクセルでは定番機能のフィルターです。「Sheet1」のA列でフィルターし「Sheet2」へコピーします。Subsample()DimFilterRangeAsRangeWith Worksheets("Sheet1")SetFilterRange=.Range("A1").CurrentRegion EndWithFilterRange.AutoFil…
日付のオートフィルタ(AutoFilter)
とても便利なオートフィルターですが日付となると結構大変です。以下の表で説明します。普通はこんなように指定します。Sub Macro1() Range("A1").Select Selection.AutoFilter ActiveSheet.Range(_$A$1:$B$11_).AutoFilterField:=1,
印刷ダイアログを使用する(xlDialogPrint)
入力しやすいようにセルに色をつけている事が多いと思いますが印刷時にはちょっとじゃまな場合もあります。インク(トナー)も無駄ですしね。印刷時に色指定を解除して印刷する方法になります。Subsample()DimrtnAs BooleanActiveSheet.CopyActiveSheet.Cells.Interior.Color= xlNonertn=A…
名前定義の一覧(Name)
名前定義は使い方によってはとても便利な機能ですが数が多いと管理が大変になります。名前定義の一覧を取得しシートに書き出すマクロです。Subsample()DimnmAsNameDimiAsLongi=1ForEach nmInActiveWorkbook.NamesCells(i,1)=nm.NameCells(i,


新着記事NEW ・・・新着記事一覧を見る

Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)
IfステートメントとIIF関数とMax関数の速度比較|VBA技術解説(6月23日)
Withステートメントの実行速度と注意点|VBA技術解説(6月6日)
VBA+SeleniumBasicで検索順位チェッカー(改)|VBA技術解説(6月2日)
マクロでShift_JIS文字コードか判定する|VBA技術解説(6月1日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.変数とデータ型(Dim)|ExcelマクロVBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • 他ブックを開いて閉じる(Open,Close)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ