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)

重複データを排除して、別シートにコピーする場合です。以下の表で説明します。フィルターオプションを使います。このマクロは、この指定と同じになりります。似たような方法ですが、コピー部分を自分で記述する場合です。
ブックを安全確実に開く方法(Open)
マクロVBAの中で、他のブックを開く事はよくあります、ブックを開く時、ブックが存在しているか、既に開いてないか これらのチェックをせずに開いてしまうと、マクロがエラー停止してしまいます。ここでは、これらのチェック方法についての具体的なVBAコードを紹介します。
ブックを閉じる(Close)
ブックを閉じる時の処理方法です。まずは、保存して閉じる場合。これは、次のように書くこともできます。Subsample2()ThisWorkbook.CloseSaveChanges:=TrueEnd Sub では、保存しないで閉じる場合。
他ブックを開いて閉じる(Open,Close)
ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)
「ブックを開かずにセル値を取得」に関する検索が非常に多いようです。おそらく、ExecuteExcel4Macroに関連しているとか、もしくは、大量のファイルがある為、VBAの処理時間がかかってしまうと言うものでしょう。ExecuteExcel4Macroについての簡単な解説は、「ExecuteExcel4Macroについて」サンプルを通して、
罫線を簡単に引く(Borders,BorderAround)
エクセルでは、罫線を引く事が多いです。この罫線は、以外に処理時間もかかりますし、やり方によっては、VBAの行数も多くなります。とにかく、簡単に罫線を引く方法です。以下の表を作成する場合です。罫線を引く順番等、いろいろありますが、とにかく短いコードにしてみます。
マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ
マクロVBAの開始時および終了時に指定した方が良いApplicationのプロパティの開設です。特に重要なもの、マクロVBAの処理速度に関係するものを紹介します。Applicationのプロパティの詳細については以下をご覧ください。
オートフィルター(AutoFilter)
エクセルでは、定番機能のフィルターです。「Sheet1」のA列でフィルターし、「Sheet2」へコピーします。ごく基本的なフィルターです。フィルターのセル範囲指定は、いろいろな指定が可能です。「連続セル範囲の選択 」も参考にして下さい。
日付のオートフィルタ(AutoFilter)
とても便利なオートフィルターですが、日付となると、結構大変です。以下の表で説明します。普通は、こんなように指定します。Operator:=xlFilterValues は2007以降で追加された機能です。
印刷ダイアログを使用する(xlDialogPrint)
入力しやすいように、セルに色をつけている事が多いと思いますが、印刷時には、ちょっとじゃまな場合もあります。インク(トナー)も無駄ですしね。印刷時に色指定を解除して印刷する方法になります。Application.Dialogs(xlDialogPrint).Show 印刷タイアログを表示します。
名前定義の一覧と削除(Name)
名前定義は使い方によっては、とても便利な機能ですが、長く使っているブックでは、とても多くの名前定義が入ってしまっていたり、参照エラーを起こしている名前定義が多数あったりと、管理に困る場合も多々出てきます。これらが発生する原因としては、ブック間のシートコピーで増えていってしまったり、シートおよびセルの削除によって参照エラーになったままにしておくことで、


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

ツイッターで出されたVBAのお題をやってみた|エクセル雑感(1月13日)
イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(1月13日)
Rangeオブジェクトの論理演算(差集合と排他的論理和)|VBA技術解説(1月10日)
イベントプロシージャーの共通化|ユーザーフォーム入門(1月7日)
コントロールの動的作成|ユーザーフォーム入門(1月6日)
Evaluateメソッド(文字列の数式を実行します)|VBA技術解説(1月5日)
エクスポート(PDF/XPS)|VBA入門(1月2日)
分析関数(OVER句,WINDOW句)|SQL入門(12月25日)
取得行数を限定するLIMIT句|SQL入門(12月21日)
外部ライブラリ(ActiveXオブジェクト)|VBA入門(12月21日)


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

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



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

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


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



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