• ベストアンサー

現在開いているブックを閉じる方法(VBA)

お世話になります Sfc = ""& "Lot" & i4 &".xls" でLot1~Lot5迄の処理を行っていますが。 Lot1の処理が終わった時点でLot1を閉じたいのですが どうすればいいでしょうか? Close Sfc と書くと型が違いますとエラー表示がでました 又Sfc.Closeとすると修飾子が違いますとコンパイルエラーになります。C:\・・・~書かないと駄目なのですか? よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

Workbooks(Sfc).Close では?

masaojisan
質問者

お礼

有り難うございます 出来ました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

Workbooks(Sfc).Close かな?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA フォルダ内にあるブックをすべて開く

    いつもお世話になります。 デスクトップ上にフォルダ「新しいフォルダ」があり、その中に6つエクセルブックがあります。 Book1.xls Book2.xls Book3.xls Book4.xls Book5.xls と test.xls です。 test.xlsに、Book1~Book5を開く というマクロを作り実行したところ、実行時エラー1004 『Book1.xlsがみつかりません』と表示されます。 Sub test() Dim buf As String, i As Long buf = Dir("C:\Documents and Settings\tsasaki\デスクトップ\新しいフォルダ\*.xls") Do While buf <> "" i = i + 1 Workbooks.Open Filename:=buf 'Cells(i, 1) = buf buf = Dir() Loop End Sub どのが間違っているか教えてもらえますか。

  • EXCELのVBAにて閉じたブックの数値を拾い出したいため

    EXCELのVBAにて閉じたブックの数値を拾い出したいため ExecuteExcel4Macroを使用して次のように作成しましたが 生産管理ブック内の直出荷シートしか参照できません。 その他シートの参照して数値を拾い出したいため シートのループ処理(シート数不規則)を例えばworksheet(1)~処理終了の名前がついた シートまで行いたいのですがどの様に直出荷部分を書き込めばいいかわかりません。 いい方法を教えていただけ無いでしょうか? (:と生産計画の間 エン[ がうまく表示できません) Dim i As Long, idx As Long Dim hi As Integer For hi = 10 To 252 If Cells(2, 3) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & 11 & "C" & hi) Then Exit For End If Next hi i = 7 For idx = 7 To 3000 For i = i To 300 If ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx & "C" & 5) = 0 Then Exit Sub End If Cells(i, 1) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx & "C" & 5) Cells(i, 2) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx + 2 & "C" & 5) Cells(i, 3) = ExecuteExcel4Macro("'E:\生産計画.xls]直出荷'!R" & idx + 11 & "C" & hi) i = i + 1 Exit For Next i idx = idx + 57 Next idx

  • vba ブックを変更しないで閉じたい

    ブックを開き、 Sub Macro2() Application.DisplayAlerts = False 'セルをいじる処理(A1に「あ」を入れるなど) '・・・ Windows("ブック1.xls").Activate ActiveWorkbook.Close SaveChanges:=False End Sub を実行すると変更があっても何も表示されないで閉じるはずですが とあるブックのみ、 「'ブック1'を保存しますか?」 はい いいえ キャンセル が出ます。 同じコードをブックに対して行なっているのに、実行できる場合と出来ない場合があるのでしょうか?

  • VisualStudio6.0(C++)にてコンパイルが通らない(He

    VisualStudio6.0(C++)にてコンパイルが通らない(HelpMe)。 既存のPGに関数を追加して処理を増やそうとしたら、コンパイルで"定義されていない識別子です"とエラーになってしまいます。PGはこんな感じになります。 //-- UINT DoAllThread( LPVOID dammy); //-- void CHopeView::OnDoall(){   AfxBeginThread(DoAllThread,&tm); } //-- UINT DoAllThread( LPVOID dammy) { OnSeilf(); OnGailf(); OnKeilf();//今回この一行を追加したらコンパイルが通らなくなりました。 return 0; }; //-- void OnKeilf() { //--まだ何も処理を書いていない } エラー内容は error C2065: 'OnKrtlf' : 定義されていない識別子です。 error C2373: 'OnKrtlf' : 再定義されています。異なる型修飾子です。 になります。 宜しくお願いします。

  • エクセル VBA マクロを動かしたときに元々開いているファイルを閉じる・・・

    いつも皆様には大変お世話になっております。 早速質問ですが、 「もしこのマクロが動く時点で他のExcelファイルが開いていたら、警告の上 自ファイルを閉じる、開いていなければ~実行」 という処理をかませたいと思っております。 ここの判定の方法がわかりません。(既にExcelが起動されていたら、でもいいのでしょうか。。。?) 下記のようなマクロを組んでいるので 他のファイルが開いていると厳しい状況です。 bname = "C:\" & Format(Range("q1").Value, "yyyymmdd") & "サンプル" & ".xls" ActiveWorkbook.SaveAs bname Workbooks.Open "C:\サンプル.xls" Workbooks(1).Close 本当は"yyyymmdd"&"サンプル"&".xls"ファイルだけ閉じられればいいのですが、自分の知識では上記のような形でしか動かせません;; もしご存知の方、ご教示ください。よろしくお願いします

  • エクセルVBAで、ある特定な場所にあるブックが開いていたら閉じたい

    こちらでお世話になった者です。その節はありがとうございました。 http://okwave.jp/qa3972230.html 他のブックが開いているとエラーになるので、フォームのブックが開いていたら、 マクロの最初に閉じてしまいたいと思います。 dbase.xls formフォルダ  001.xls  002.xls  003.xls のようなフォルダ構造になっていて、001~003.xlsは入力フォームです。 dbase.xlsを開いて、マクロを貼り付けたボタンをクリックすると、すべてのフォームの データがdbase.xlsに取り込まれます。 ↓のような感じで、最初にメッセージが表示されるようにしたのですが、 自分以外の、formフォルダにあるブックが開いていたらそれをすべて閉じる 方法を教えていただけますか。 Sub data_torikomi() MsgBox ("開いている他のエクセルブックをすべて閉じてください") Dim Fn As String Dim myPath As String Dim dbBkSh As Worksheet Dim i As Long Set dbBkSh = Workbooks("dbase.xls").Worksheets("一覧表") myPath = ThisWorkbook.Path & "\" Fn = Dir(myPath & "form\*.xls") i = 1   ……

  • エクセルVBAでの質問です。

    まとめ.xlsに、「まとめ」「グラフ」「A」「B」「C」「D」「E」というシートがあって、それと一緒に、A.xls、B.xls、C.xls、D.xls、E.xlsというファイルを開いた際に、A.xlsの、G2:I54をまとめ.xlsのAのシートのA1に、B.xlsの、G2:I54をまとめ.xlsのBのシートのA1に・・・といった感じでコピーを行いたいと思い、以下のようにマクロを組みました。 Dim I(4) As String I(0) = "A" I(1) = "B" I(2) = "C" I(3) = "D" I(4) = "E" Sheets("まとめ").Select For J = 0 To 4 Step 1 Sheets("" + I(J) + "").Select Windows("" + I(J) + ".xls").Activate Range("G2:I54").Select Selection.Copy ThisWorkbook.Activate Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Workbooks("" + I(J) + ".xls").Close SaveChanges:=False Next J ThisWorkbook.Activate Sheets("まとめ").Select Range("A1").Select この状態では、必ずA~Eのシートと、A~E.xlsが存在しないと処理できないのですが、情報量が変わった場合でも同じような処理を行いたいのです。 たとえば、A~CのシートとA~C.xlsしかない場合、 アルファベットではなく、1~3といった場合、 5枚だけではなく、10枚など増えた場合。 まとめ.xlsの「まとめ」と、「グラフ」のシートには、それぞれA~Eに貼られたデータから引用したり、グラフ化したりしているため、シートの入れ替えは行うことができず、純粋に、「値のコピー」としてもってきたいと思っています。 原則として、A~Eのシートに貼り付けるA~E.xlsに存在するシート名は、A.xlsはA、B.xlsはB・・・といった感じになっています。 それが数字になっても、文字になってもその規則に変更はありません。 分かりにくい説明ですみません。 分かる方、よろしくお願いします。

  • エクセルVBA ブック間のコピー

    選択したテキストファイルをエクセルで開いたコピーし、 もう一つ開いたエクセルファイルにペーストするというマクロをVBAで 作成していますが、つまずいてしまいました。 ----------------------------------- Dim wb1 As String Dim wb2 As String Sub Opentxt() wb1 = Application.GetOpenFilename("テキストファイル,*.txt") If wb1 <> "False" Then Workbooks.OpenText Filename:=wb1, DataType:=xlDelimited, comma:=True End If End Sub Sub Copy() Dim LastRow As Long wb2 = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If wb2 <> "False" Then Workbooks.Open wb2 LastRow = wb2.Sheets("一覧表").Range("A" & Rows.Count). End(xlUp).Row wb2.Sheets("一覧表").Range("A5:A" & lastRow).Copy _ wb1.Sheets("Sheet1).Range("B33") End If End Sub ----------------------------------- Opentxtの方は問題ないですが、Copyの方を実行すると wb1とwb2で引っかかって「コンパイルエラー/ 修飾子が不正です」と 表示されて、エラーになってしまいます。 この場合変数の型などがおかしいのでしょうか? excel2007を使用しています。 よろしくお願いします。

  • EXCELのVBAでの保存方法

    EXCELで以下のように記述したところ、 「ファイルを置き換えますか」のメッセージの後に 「いいえ」か「キャンセル」を選択すると 「400」というエラーメッセージが表示されます。 「いいえ」か「キャンセル」を選択した場合は、 エラーメッセージを表示させずに、 特定のシートのセルA1にカーソルを移動させたいのですが、可能でしょうか? ご指導よろしくお願いします。 ________________________ FileA = Application.GetSaveAsFilename( _ InitialFilename:="C:\test.xls", _ fileFilter:="XLSファイル (*.xls), *.xls") ActiveWorkbook.SaveAs Filename:=FileA ________________________

  • ExcelVBA別フォルダにあるブックのコピー方法

    ExcelVBAでデータを条件に応じてコピーしたいと思っています。 同一階層に「VBAファイル.xls」「1_フォルダA」「2_フォルダB」「3_フォルダC」があります。 「1_フォルダA」と「2_フォルダB」には年代別に分かれたファイルがあります。 ファイルとフォルダの構造は以下の通りです。 VBAファイル.xls 1_フォルダA  ∟1999_ファイルA.xls  ∟2000_ファイルA.xls  ∟2001_ファイルA.xls  ∟2002_ファイルA.xls  ∟2003_ファイルA.xls  ∟2004_ファイルA.xls  ∟2005_ファイルA.xls  ∟2006_ファイルA.xls  ∟2007_ファイルA.xls  ∟2008_ファイルA.xls  ∟2009_ファイルA.xls  ∟2010_ファイルA.xls  ∟2011_ファイルA.xls  ∟2012_ファイルA.xls 2_フォルダB  ∟1999_ファイルB.xls  ∟2000_ファイルB.xls  ∟2001_ファイルB.xls  ∟2002_ファイルB.xls  ∟2003_ファイルB.xls  ∟2004_ファイルB.xls  ∟2005_ファイルB.xls  ∟2006_ファイルB.xls  ∟2007_ファイルB.xls  ∟2008_ファイルB.xls  ∟2009_ファイルB.xls  ∟2010_ファイルB.xls  ∟2011_ファイルB.xls  ∟2012_ファイルB.xls 3_フォルダC  ∟ファイルC_結果.xls 「VBAファイル.xls」では添付の画像のような「ActiveXコントロール」を設定しました。 コンボボックスで西暦を選択すると、選択した年を中心年として、 前後1年を合わせて合計3年がラベルに表示されます。 その年のファイルのデータが「ファイルC_結果.xls」にコピーされるようにしたいです。 例えば画像のように「2007」を選択した場合、 ・「2006_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のD7~D25にコピー ・「2007_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のE7~E25にコピー ・「2008_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のF7~F25にコピー ・「2006_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のH7~H25にコピー ・「2007_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のI7~I25にコピー ・「2008_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のJ7~J25にコピー というようにしたいです。 「ファイルC_結果.xls」のD/E/F列はファイルAのデータで、 D列は前年、E列は当年、F列は翌年 H/I/J列はファイルBのデータで、 H列は前年、I列は当年、J列は翌年の値をコピーして貼り付けたいです。 また、可能であれば「ファイルC_結果.xls」は原本なので、 値をコピーする際にファイル名が変更できればよりよいです。 いろいろ書いてしまい、うまく伝わっているか不安なのですが 処理するデータが多くとても困っています。 お知恵のある方、どなたか助けていただけますと幸いです。 よろしくお願いいたします。

専門家に質問してみよう