• 締切済み

Excel2011のVBAについて教えてください。

初めて質問します。 Excel2011forMACでVBAを使いBOOKを指定してクローズさせたいのですが、 エラー1004が起こりファイルを閉じることができません。 作成したVBAは以前にWindowsXP、Excel2000で作成したものを修正したものだったためなのではないかと思い、 改めてExcel2011forMACで下記ように、コマンドボタンをクリックすると"test.xlsx"を閉じるだけのテストを行いましたが同じエラーが発生します。 Private Sub CommandButton1_Click() Windows("test.xlsx").Close  End Sub 実行すると『実行時エラー'1004' _ オブジェクト'Close'のメソッド'Window'が失敗しました。』となります。 ちなみに、WindowsをWorkbooksにしても同様のエラーが発生しました。 Workbooksではファイルを指定しなければエラーは発生しないのですが、できれば1つのファイルを開いた状態にしておきたいと思っています。 このエラーの解消方法を教えていただけませんか。 それとも、MACでは個別にファイルを閉じることはできないのでしょうか。 Excel2011を使っているMAC OS Xのバージョンは10.6.7です。 VBAについては、初心者レベルで常にヘルプとマクロの記録を頼りになんとか作成しています。さらに、MACでVBAを使ったのが初めてで、この事象が一般的に知られていることなのかわかりません。いろいろ調べて同じような事例が見つけられなかったので質問させていただきます。 よろしくお願いします。

みんなの回答

noname#187541
noname#187541
回答No.1

こんにちは。 Excel2011forMACには「マクロの記録」はありませんか? あるのであれば、ブックを閉じる操作を記録すればわかると思います。

usertoo
質問者

お礼

回答ありがとうございます。 Excel2011forMACに「マクロの記録」ありました。私も同じように考えて、マクロの記録をつかい、ウィンドウを閉じる動作の部分をコピーして作成したものが質問の中に記載したコードでした。 それであるにも関わらず、エラーがでたため、どうしようもなくなり質問させていただきました。 こういうこともあるものなのでしょうか?

関連するQ&A

  • Excel2007 VBA Copyメッソド

    Excel2003で開発されたVBAをExcel2007で動くように修正しているのですが、 次のコードがExcel2007ではエラーになります。  (1)Workbooks.Open Filename:=pthFolder & "\" & nmFile  (2)nmSheet = Workbooks(nmFile).ActiveSheet.Name  (3)Workbooks(WB_Name).Worksheets(S_MAIN).Copy After:=Workbooks(nmFile).Sheets(nmSheet) (1)と(2)は実行されますが、(3)がエラーになり、(4)に飛びます。 (4) SaveError:      MsgBox "エラー発生"      Application.DisplayAlerts = False      Workbooks(nmFile).Close    End Sub どなたか、Excel2007でエラーになる理由と解決策を教えていただけないでしょうか。 既に同じ質問が出ているかもしれませんが、VBA初心者なもので、うまく探せませんので、 ご協力をお願いいたします。

  • Excel2007VBAファイルの表示について

    ●質問の主旨 開いたダイアロボックス内のファイルについてエクセルファイル(.xlsxのみ)を 対象としたいと考えています。 下記コードをどのように書き換えればよいでしょうか? ご存知の方ご教示願います。私はVBA初心者です ●質問の補足 作成した下記のコードでは 「実行時エラー1004:GetOpenFilenameメソッドに失敗しました」 と表示されます。 参考書2冊読んで全くその通りに引用していて、なぜエラー表示に なるのかよく分かりません。 またTarget = Application.GetOpenFilename("Excelブック,*,xlsx")を Target = Application.GetOpenFilename()にするとダイアロボックスは 表示され、その中にあるエクセルファイルは表示されます。 ●コード Sub Sample3() Dim Target As String Target = Application.GetOpenFilename("Excelブック,*,xlsx") If Target <> "False" Then Workbooks.Open Target Else MsgBox "キャンセルされました" End If End Sub

  • EXCEL VBA のブック操作

    完全に自己流でEXCEL2000のVBAを作成しています。 とても単純な操作なのですが、思い通り動きません。 どうかご教授ください。 よろしくお願いします。 Main ファイルとSubファイルがあります。【パス名とファイル名は指定済み】 ブック内のシートの構成は全く同じになっています。 (MainファイルのVBAを実行後Subファイルが作成されます ファイル名は作成日を入れて保存していっています。) それで以前作成したデータを利用するために、 MainファイルのVBAを実行中にSubファイルを開き参照したいシートを Mainファイルにコピーし、Subファイルを閉じたいのですが フォーカスがうまくいかず、Mainファイルが閉じてしまいます。 何がおかしいのでしょうか? Workbooks.Open Filename:=SubFile Sheets("Sheet1").Select Worksheets("Sheet1").Name = "ASheet" Sheets("ASheet").Copy After:=Workbooks(MainFile).Sheets(TotalSheet) Workbooks(SubFile).Activate ActiveWorkbook.Close Workbooks(MainFile).Activate Sheets(TsumSheet).Select オープンしてコピーまではできているのですが・・・

  • Excel2007VBA ブックのアクティブ化

    ●質問の主旨(2点) 1.以下のコードは、なぜエラーが返されるのでしょうか? 2.タスクバーにあるアクティブ状態ではないブックの1枚目シートを 選択するためには、以下のコードをどのように書き換えれば良いでしょうか? ●質問の補足 タスクバーにはエクセルブック「Book1」と「Book2」を表示させ、 「Book1」の「sheet1」がアクティブになっています。 Book1の標準モジュールに以下のコードを記述しています。 Sub sample1() Workbooks("Book2.xlsx").Activate Worksheets("sheet1").Select End Sub しかし実行すると「実行時エラー9インデックスが有効範囲にありません」と エラーが返されます。なぜそうなるのかが分かりません。 ご存知の方がいらっしゃればご教示よろしくお願い申し上げます。 私はVBA初心者です。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • Excel2010 VBA終了時に強制終了する

    Excel2003、2007で実行した場合は正常終了するが Excel2010で実行するとVBA終了時に強制終了します。 処理は、マクロありブックからマクロなしブックを作成するために、 新規ブックを作成しマクロありブックからシートを移動する処理です。 VBA起動は、フォームコントロールから行っています。 VBA終了時に(End Sub)後にEXCELがなぜか強制終了します。 (Microsoft Excel は動作を停止しました。のメッセージが表示される) なお、 ・フォームコントロールから実行した場合はEXCELが強制終了し、   デバックモードで実行した場合は強制終了しません。  ・マクロありファイルの種類:Excel 97-2003ブック  ・★★★のソースが含まれていると、Excelが強制終了します。 以下、ソース。 Sub ファイル保存()   'マクロなしファイルを作成 CreateNoMacroBook End Sub '←ここで異常終了が発生する。 Sub CreateNoMacroBook() Dim fname As String Dim ns As Integer Dim cnt As Integer Dim i As Integer 'マクロありブックの名前を取得 fname = ActiveWorkbook.Name 'マクロありブックのシート数を取得 cnt = ActiveWorkbook.Worksheets.Count 'すべてのシートをMoveするとエラーになるのでシートを追加 Worksheets.Add After:=Worksheets(Worksheets.Count) '新規ブック作成時のデフォルトのシート数を保管 ns = Application.SheetsInNewWorkbook '新規ブック作成時のシート数を変更 Application.SheetsInNewWorkbook = 1 '新規ブック作成 Workbooks.Add '新規ブック作成時のデフォルトのシート数に戻す Application.SheetsInNewWorkbook = ns 'マクロありブックのシートを新規ブックの"Sheet1"シートの前に移動 For i = 1 To cnt Workbooks(fname).Worksheets(1).Move Before:=Workbooks(Workbooks.Count).Worksheets("Sheet1")  '★★★ Next i '表示用に新規ブックの一枚目のシートをアクティブにする Workbooks(Workbooks.Count).Worksheets(1).Activate Application.DisplayAlerts = False '新規ブックのデフォルトシート"Sheet1"を削除する Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete Workbooks(Workbooks.Count).Activate Application.DisplayAlerts = True End Sub

  • EXCEL2000とEXCEL2003のVBAについて

    現在、EXCEL2000で下記のコードを実行しています。 が、EXCEL2003で実行すると、 .UsedRange.Copy myb のコードが実行されているのにコピー出来ていません。 ファイルは開いていて、エラーは出ていないのです。 問題点わかる方教えていただけますか? Sub 日別データ読込() Dim rngsaki As Range Dim pathmacrobook As String Dim namebook As String Dim motobook As Workbook Dim myb As Variant Set rngsaki = Workbooks("残高集計用.xls").Worksheets(3).Range("a2") pathmacrobook = ThisWorkbook.Path & "\CSV読込データ12\" namebook = Dir(pathmacrobook & "*.xls") Do While Not namebook = "" Set motobook = Workbooks.Open(pathmacrobook & namebook) Set myb = Workbooks("残高集計用.xls").Worksheets(3).Range("A65536").End(xlUp) With motobook.Worksheets("Sheet1") .UsedRange.Copy myb End With motobook.Close False namebook = Dir() Loop MsgBox "完了しました" End Sub

  • エクセルVBA ファイル名操作

    エクセルマクロのコードにおきまして 「フォルダの選択」ダイアログから エクセルファイル 123.xlsxを例えば 開くときに それをa.xlsxという名前に変えて 以下のそれに続くVBAコードにおいて a.xlsxを操作したいのですが、 a = Application.GetOpenFilename() Workbooks.Open a これを実行すると求めるダイアログが表示されて 使いたい123.xlsxを開くをクリックしますが これでは123.xlsxがa.xlsxにはなりません このa.xlsxのファイル名で別途ファイル作成する方法を 御教示いただけると助かります よろしくお願いします win10 office365 コードは以下 部分ですが こういう流れで作成したい所存です Sub あいう() a = Application.GetOpenFilename() Workbooks.Open a 'b.xlsxファイルを新規作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="C:\Users\USER\Desktop\あいう\b.xlsx", FileFormat:=xlXMLSpreadsheet 'a.xlsxファイルの1行目のA1~AG1のセルの値をコピー Workbooks("a.xlsx").Worksheets("Sheet1").Range("A1:AG1").Copy 'b.xlsxファイルのA3~AG3のセルに貼り付け Workbooks("b.xlsx").Worksheets("Sheet1").Range("A3:AG3").PasteSpecial xlPasteValues 以下省略 よろしくお願いします

  • EXCELのVBAについての質問です

    現在、2つのブックでVBAを使用して作業中ですが、 どうしてもうまく作動しない箇所があります。 BookAとBookBがあり、BookBにはtesというユーザーフォームを設置しています。 やりたい作業は以下の通りです。 BooKAからコマンドボタンを利用してBookBを開く。 BookBは開くとBookAを閉じる。testのユーザーフォームを開く。 BookAのコマンドボタンのコードは Private Sub CommandButton1_Click() Dim mypath As String mypath = ThisWorkbook.Path Workbooks.Open (mypath & "BookB.xlsm") End Sub BookBのOPENイベントに Private Sub Workbook_Open() Workbooks("BookA.xlsm").Close test.Show End Sub を入力しています。 これを実行すると エラーが発生せず、デバッグで1行ずつコードを確認すると test.Showが実行されずに closeで処理が終了されています。 ・ユーザーフォームのActiveイベントでclose処理を入れるとcloseが処理されずに モードレスでフォームを開くと、close後にフォームが閉じられてしまいます。 ・クッション用のブックを作成して、そこにBookAをclose処理とBooKBのOPEN処理を入れても closeで処理が終了されてしまいます。 エラーが出ると対応の使用があるのですが、エラーも無く静かに処理だけが終了してしまうため、 対応ができず困っています。 あちこち検索して調べてみましたが、いずれも当てはまらない状況です。 何かヒント等でもお持ちの方は、ご教授下さい。

  • workbookオブジェクトのクリアについて

    下記のコードはtest.xlsxを開き、ABCにセットして、開いたtest.xlsxを閉じた後、 ABCを参照しようとするコードです。 しかし、(4)でオートメーションエラーが発生します。 (3)のtest.xlsxを閉じるコードを 削除した場合うまくいきます。 開いたtest.xlsxを閉じた場合はABCにセットしたtest.xlsxもクリアされてしまうものなのでしょうか? 私のオブジェクトの認識では、エクセルファイルをオブジェクトにセットした場合はセット元のエクセルファイルは閉じてもworkbookオブジェクトのABCに保持されていると思っています。 ※test.xlsxを閉じたい理由は以降のコードで同名ファイルを開きたいからです。 よろしくお願い致します。 Sub a() Dim ABC As Workbook Workbooks.Open (ThisWorkbook.Path & "\" & "test.xlsx") '(1) Set ABC = Workbooks("test.xlsx") '(2) Workbooks("test.xlsx").Close savechanges:=False '(3) ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = ABC.Worksheets("Sheet1").Range("A1").Value '(4) End Sub

専門家に質問してみよう