Quantcast
Channel: 教えて!goo 参照の多い質問(デジタルライフ/207)
Viewing all articles
Browse latest Browse all 12809

VBA 作成したbookを閉じたい

$
0
0
次のVBAは別BookにあるデータBook(A列、B列にデータのあるAbook)を同時起動させ、このVBAのあるBbookにAbookデータを取り込むものです。 方法として、Abook-1,BBookを開き、BbookのVBAを実行すると、Abook-1のデータがBbookのA列、B列に取り込まれます。 そのあとこの取り込まれたBbookを別の名前(BBook-1等)で保存し、ベースのBbookは取り込まれる前の状態で残ります。 つづけて、ダイアログで次のAbook-2を開き、再度BBookのVBAを実行することでAbook2のデータを取り込んだ別のBbook-2が作成されることになります。 これを連続して行っているのですが、新たに作成されてゆくBbook-xはそのまま開いた状態がたまってゆきあとでまとめて閉じなくてはなりません。 これをその都度閉じてゆくことができるのでしょうか。 (すなわち読み込んだ後保存し、次のAbookを読み込んだらそのBookとベースのBbookだけにしたい) また、ダイアログでデータブックを開くとそのAbookがアクティブになるため、実行しようとするBbookは隠れているため最小化から開くことになります。 これが面倒なのですが、Bbookをアクティブにすることが可能ですか? 更にダイアログでキャンセルした場合はその連続作業終了ということで、すべてのBookとエクセルを終了できればと思っています。 なお当方VBAに詳しくないため教えていただいたVBAを動かしているだけですが、最終行のThisWorkbook.Close Falseがあるとエクセルの強制終了が発生したので 現在は外してあります。 Sub A01_アクティブBにAのデータをペースト() Dim thWB As Workbook Dim Abook As String Dim Bbook As String Dim lastRow As Long Dim orgName As String Set thWB = ThisWorkbook '←Bbook(マクロブック)のこと Bbook = thWB.Name For Each thWB In Workbooks '←今開かれているブック全体が対象 If thWB.Name <> Bbook Then '←もし、開かれているの中でブックがBbook(ThisWorkbook)でなけれれば Abook = thWB.Name '←そのブックをAbookと言う変数にする End If Next thWB With Workbooks(Abook).Sheets("Sheet1") lastRow = .Range("B" & Rows.Count).End(xlUp).Row ' .Range("A1", "B" & lastRow).Copy Destination:=Workbooks(Bbook).Worksheets("Sheet1").Range("A1") End With ActiveSheet.Shapes.Range(Array("Button 22")).Select Selection.Delete Selection.Cut Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.ClearContents orgName = ThisWorkbook.FullName Application.Dialogs(xlDialogSaveAs).Show Arg1:=Range("A1").Value Workbooks(Abook).Close SaveChanges:=False Workbooks.Open Filename:=orgName '基本book Application.Dialogs(xlDialogOpen).Show "*.xlsx" 'ThisWorkbook.Close False---これがあるとエラーになる End Sub

Viewing all articles
Browse latest Browse all 12809

Trending Articles