マクロ初心者です。
インデックスが有効範囲にありませんとエラーになりました。
Dim OpenFileName As string
Dim book1 As Workbook
Dim sheet1 As worksheet
sub 問題 ()
OpenFileName = GetOpenFileName(”エクセルファイル,*.*”)
If OpenFileName <>”False” Then
workbooks.Open OpenFileName
Else
msgbox ”キャンセルしました”
Exit sub
EndIf
Set book1 = Activeworkbook
Activesheet.Copy Before:=Thisworkbook.sheet(1)
workbooks(”book1”).Close SaveChanges:=False
Set sheet1 = Activesheet
ここまで作りました。
管理台帳を開き、
別ファイルにコピーし
管理台帳は閉じる、というところで、
実行するとエラーとなり、
デバッグをクリックしたら、管理台帳を閉じるコードが黄色くなります。
()の中の”を消してもダメでした。
配列数が大きい時と存在しない名前を指定した時になるとのことですが、、
Set〜のコードは、取得できていないのでしょうか?
No.2ベストアンサー
- 回答日時:
こんにちは
>Set〜のコードは、取得できていないのでしょうか?
ご提示のコードではbook1が変数(=ワークブック)として設定されており、
Set book1 = Activeworkbook
によって、Activeworkbookのオブジェクトが代入されています。
それなので、このブックを閉じるのであれば
book1.Close SaveChanges:=False
で良いはずです。
>ネットでは、workbook(book1).Close〜
>もしくはworkbook(”book1.xls”)など
workbooks(”book1.xls”).Closeは、”book1.xls”(=文字列)という名のブックを閉じる際に用いますし、workbooks(book1).Closeの場合は、book1が文字列変数等であると考えられます。
例えば
book1 = ”book1.xls”
workbooks(book1).Close
で、一行目と同じ意味になりますよね。
変数とその意味するところを理解して使い分けることが必要です。
というか、意味を決めているのはそのコードを作成している質問者様なのですが。
No.1
- 回答日時:
変数名を「book1」などとするから混乱するのですよ。
例えば「objBook」とすればイメージが掴みやすくなりませんか?
Dim objBook As Workbook
Set objBook = Activeworkbook
・・・
objBook.Close SaveChanges:=False
> カッコの中の書き方が人それぞれですが、
人それぞれではなく、カッコの中が何を表しているかによります。
◆ネットでは、workbook(book1).Close〜 '正しくは Workbooks ですよ
この場合 book1 は ワークブック名を表す文字列です。
Dim strBook As String
strBook = "管理台帳.xlsx"
・・・
Workbooks(strBook).Close.SaveChanges:=False
◆もしくはworkbook(”book1.xls”)など
これは上記の 変数を使わず、ダイレクトに文字列で指定したケースですね。
Workbooks("管理台帳.xlsx").Close.SaveChanges:=False
クローズするのは Workbook オブジェクトですから、
単体の Workbook オブジェクトを取得するいずれかの書き方をすれば良いのです。
【参考】
Workbook オブジェクト (Excel)
https://msdn.microsoft.com/ja-jp/library/office/ …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
エクセルのVBAの標準モジュール...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAからPDFファイルにパスワー...
-
エクセルマクロエラー「'Cells'...
-
テキストボックス中の文字列の...
-
VBAで作成するメール(開封確認...
-
EXCEL VBA オートシェイプナン...
-
VBAで Set wb = Sheets(1).Cop...
-
PowerPointVBAでスライドマスタ...
-
VBAについてです。 初心者です...
-
[C#]static void 関数内でthis
-
ローカル変数を戻り値に使うと...
-
VBA:オートシェイプの線の長...
-
[VBA]CDOメッセージ送信エラー
-
ある文字列が全て数字であるか...
-
【VB】【エクセル操作】 SaveAs...
-
UserForm1.Showでエラーになり...
-
AccessVBAで「dim dbs as datab...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
PowerPointVBAでスライドマスタ...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
ある文字列が全て数字であるか...
-
VBAについてです。 初心者です...
-
VBScriptでファイルの日時順(降...
-
Excelでフィルタをかけると警告...
-
VBAからPDFファイルにパスワー...
-
VBで引数にDictionaryオブジェ...
-
このように書くべきですか? { ...
-
EXCEL VBA オートシェイプナン...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
おすすめ情報
ネットでは、workbook(book1).Close〜
もしくはworkbook(”book1.xls”)など
カッコの中の書き方が人それぞれですが、
それでも動いてるようですし、どれでもいいんでしょうか?