No.1
- 回答日時:
For Each wBook In Workbooks
・・・wBook.name
Next
とすると、現在開かれているワークブックの名前を調べられますので、もし存在していたらWorkbook.openしないようにすればよろしいかと。
No.2
- 回答日時:
2つの回避方法
① アラート非表示
Dim BookPath As String, wb As Workbook
Application.DisplayAlerts = False
Set wb = Workbooks.Open(BookPath)
Application.DisplayAlerts = True
② 事前チェック
Dim BookPath As String
Dim BookName As String
Dim flg As Boolean
BookPath = "C:\Users\hoge\huga.xlsx"
BookName = Mid(BookPath, InStrRev(BookPath, "\") + 1)
For Each wb In Workbooks
If wb.Name = BookName Then
flg = True
Exit For
End If
Next wb
If Not flg Then Workbooks.Open (BookPath)
参考
①https://vbabeginner.net/how-to-open-workbook/
②https://vba-hack.com/checkopenbook/
No.3
- 回答日時:
>データを別ブックに転記するマクロをこちらでご教示頂いたのにも関わらず、上記のエラーになってしまいました。
申し訳ありません
そのマクロを入手したURLを提示していただけると、何か解決策が判るかもしれません。提示していただけないでしょうか。
通常は、あなたがマクロを実行するときに、どのブックがマクロによりオープンされるかは、あなたが判っていると思います。マクロ実行時には、そのブックがクローズしていることを確認後、行うべきと思いますが、いかがでしょうか。
特殊な仕様で作成したマクロでなければ、通常、マクロでブックをオープンする場合、そのブックはクローズされていることを前提としています。
No.4
- 回答日時:
これは、
https://oshiete.goo.ne.jp/qa/13744688.html
の続きですね。
https://ideone.com/2V3qZsの内容をみると
ワークシート.xlsmに格納されたマクロである「別ブックのすべてのセルを取得3」
を呼び出しています。
別ブックのすべてのセルを取得3は、下記URLの内容ですね。
https://ideone.com/ikKSnB
そのマクロのなかで、
filename = ThisWorkbook.path & "\" & "ワークシート.xlsm"
mb=workbooks.open(filename)
を行っています。
これは、自分自身をオープンするということになります。
そもそもの話になりますが、
別ブックのすべてのセルを取得3のマクロは、ワークシート.xlsmに格納して実行されることを
想定していません。
Sub 別Bookのプログラムを実行()を格納しているブック内に格納すべきものです。(仮にブックXとします)
ブックXに別ブックのすべてのセルを取得3し、それを直接呼び出せば、問題は行ないはずですが、
なぜ、そのようにされなかったのでしょうか。
何か事情があって、ワークシート.xlsmに格納されたということでしたら、その事情を
教えていただけると参考になります。
どうしても、ワークシート.xlsmに格納したいということであれば、
その前提で「別ブックのすべてのセルを取得3」を作り直す必要があります。
その場合は、その旨返信ください。
No.5
- 回答日時:
No4です。
No4のブックXに別ブックのすべてのセルを取得3し、それを直接呼び出せば、問題は行ないはずですが、
は
ブックXに「別ブックのすべてのセルを取得3」を格納し、それを直接呼び出せば、問題は起こらないはずですが、
の誤りです。訂正します。
No.6
- 回答日時:
>先方は、ボタン1つで今まで手作業だったシートの中身のコピペを希望しており、日付で新しく更新した別のシートにある同名のシートを今触っている従来のものの隣にコピーして、削除するということすら手間だといわれました。
>それて同一上でのシートでのコピペを試行錯誤しております
これは、既存のシートを削除するのを手で行うのが手間だということですね。
以下の処理を行うマクロを作れば良いと思いますが、いかがでしょうか。
①日付で新しく更新した別のシートにある同名のシートを今触っている従来のものの隣にコピー
②既存のシートを削除
③①でコピーしたシートを既存のシート名に合わせてリネーム
もしくは
①既存のシートを削除(全て削除はできないので何か他のシートを1つ残すこと)
②日付で新しく更新した別のシートにある同名のシートをコピー
③そのコピーしたシートをリネーム
のどちらかになります。
要はボタン1つで上記のことができればよいので、
sub 新規マクロ()
call ①
call ②
call ③
end sub
又は
sub 新規マクロ()
①の処理
②の処理
③の処理
end sub
のようにして、ボタンを新規マクロに割り当てれば良いです。
No.7
- 回答日時:
>しかしながら申しにくいのですが、openが二重エラーは逃れられないと推測してますがいかがでしょうか
そんなことはないです。
マクロ(別ブックのすべてのセルを取得3)を
ワークシート.xlsmに登録したいなら、
ワークシート.xlsmをオープンしなければよいのです。
暫定対策ですが
Set mb = Workbooks.Open(filename)
を
Set mb = ThisWorkbook
に変えれば、動作すると思います。
恒久対策としては、mbの箇所については、Thisworkbookで置き換えになります。call copy_sheet時のパラメータにmbがありますがこれも削除します。
具体的にコードを希望される場合は、その旨返信ください。
只、気になるのは、何故、ワークシート.xlsmに登録するのかということです。
ワークシート.xlsmに登録するのが大前提なら、
最初にワークシート.xlsmを手でひらいて、ボタンにそのマクロを割り当てれば良いかと思います。
ボタンを割り付けたいのは、どのブックなのでしょうか?
先方は、ワークシート.xlsmを手で開いて、ボタンを押すのがいやなのでしょうか。
No.8
- 回答日時:
前提がよくわかりませんが、
①ボタンを割り当てたいブック
②マクロを登録したいブック
③kyu,nyu,gai,折衝取込 を日々取り込みたいブック
は、同じブックではないのでしょうか。
異なる場合は、①②③ごとにそのブック名を提示していただけませんでしょうか。
又、③には、kyu,nyu,gai,折衝取込の4シート以外にも、他のシートがあるのでしょうか。
No.9
- 回答日時:
恒久対策版です。
FullPath1 = "D:\goo\excel\goo446\配信スケジュール.xlsm"
FullPath2 = "D:\goo\excel\goo446\未納本文.xlsm"
FullPath3 = "D:\goo\excel\goo446\未納本文.xlsm"
FullPath4 = "D:\goo\excel\goo446\未納本文.xlsm"
は、削除してください。
ワークシート.xlsmに登録してください。
別ブックのすべてのセルを取得4 にしました。
https://ideone.com/WFm2ym
No.10
- 回答日時:
シートまるごとコピーする方法です。
既存のシートを一旦削除してからシートをコピーします。
コピーされたシートのシート名を本来のシート名に変えます。
別ブックのすべてのセルを取得5 で登録しています。
シートの属性も含めてコピーしたいならこちらが良いかと思います。
https://ideone.com/Qlvj7M
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) エクセルの「パスの定義」の仕方について教えてください 2 2024/01/23 10:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Excel(エクセル) マクロについて質問です。 現在、職場のPCで労務管理ソフトを使用していますがそれを紙で出力しなければ 1 2023/11/24 17:48
- その他(ブラウザ) Excel VBA seleniumのedge操作について 業務上、分からないことがございまして、先 1 2022/06/20 16:59
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
Excel VBA マクロ あるフォルダー内の複数のファイルを統合したいです
Visual Basic(VBA)
-
同じ型【ハイフンと数字】をぶつけて、イコールである事を証明する関数はありますか?
Excel(エクセル)
-
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
-
4
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
5
Excelの関数について質問です。
Excel(エクセル)
-
6
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
7
VBA UserFormからの転記で
Visual Basic(VBA)
-
8
エクセル VBAでの転記の方法について
Visual Basic(VBA)
-
9
Excel マクロについて
Visual Basic(VBA)
-
10
コマンドボタンがデザインモードになったまま
Excel(エクセル)
-
11
VBAに関して
Visual Basic(VBA)
-
12
Excelの各シートを色ごとで分類して値転記するマクロの作り方を教えて下さい。
Visual Basic(VBA)
-
13
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
14
エクセルのcountifのワイルドカードについて
Excel(エクセル)
-
15
特定文字を入ってるCSVの特定の列を特定のexcelシートに取り込みたいです
Visual Basic(VBA)
-
16
エラー表示になってしまいます。
Excel(エクセル)
-
17
エクセルで【0.5日と1日】を表示したいのですが。。。
Excel(エクセル)
-
18
【VBA】【マクロ】 指定の条件で、空白の行を挿入
Excel(エクセル)
-
19
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
20
数値から名前が作成できなくなっているッ!?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
【ExcelVBA】指定の書式で、マ...
-
ExcelVBAで今開いているユーザ...
-
VB2010でExcelの行をコピーして...
-
VBA セル入力された日付データ...
-
同じ名前で拡張子が違うファイル
-
excelマクロ、任意セルの値で名...
-
Excel VBAを後ろで動かす方法
-
Excelの一括印刷で通し番号をつ...
-
すでに開いているブックのマク...
-
EXCELマクロでxlsとxlsxを開く方法
-
フォルダ内の全てのBookに同じ...
-
personal.xlsの削除方法
-
ファイル名を今日の日付、時刻...
-
複数のデータ系列の線の太さを...
-
コピーしたファイルのマクロを...
-
cellsで特定の離れた範囲を選択...
-
エクセルでツールバーに「縮小...
-
Excelからnotesメールを自動で...
-
昨日まで動いていたエクセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォルダ内の全ブックのシート...
-
ExcelVBAで今開いているユーザ...
-
エクセルVBA Workbook変数に変...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
【ExcelVBA】指定の書式で、マ...
-
VB2010でExcelの行をコピーして...
-
フォルダ内の全てのBookに同じ...
-
EXCELマクロでxlsとxlsxを開く方法
-
excelマクロ、任意セルの値で名...
-
[Excel VBA] フォルダ内の複数...
-
VBA、Excelのworkbook.open に...
-
すでに開いているブックのマク...
-
EXCELマクロで上書きメッ...
-
VBA セル入力された日付データ...
-
EXCEL VBA起動時の処理
-
エクセルのマクロについて教え...
-
他のBookのユーザー定義関数を使う
-
Excel VBAを後ろで動かす方法
-
Excelの一括印刷で通し番号をつ...
おすすめ情報
call文中にworkbook.openを付け加える形にしていた場合、callがあった分だけopenに対して条件文を加えないといけないのでしょうか。
エラーメッセージはその都度出てきてしまいます
データを別ブックに転記するマクロをこちらでご教示頂いたのにも関わらず、上記のエラーになってしまいました。
申し訳ありません
ありがとうございます。今日の夜遅くに組んでいただいたそのままを使ったのですが、エラーになってしまいました。
それが、mb=workbooks.open(filename)のところでした。
そこをコメントアウトすると、callでmbを使ったことによるエラーまで難なく進みました。
御示しの通り、クローズが大前提だと身に染みて感じております。ありがとうございます。
現在、
別Bookに「別Bookにあるマクロを実行」マクロを作成しました。
https://ideone.com/2V3qZs
家では再現できたので、あとは職場で再現できるかどうかです。
返信ありがとうございます
先方は、ボタン1つで今まで手作業だったシートの中身のコピペを希望しており、日付で新しく更新した別のシートにある同名のシートを今触っている従来のものの隣にコピーして、削除するということすら手間だといわれました。
それて同一上でのシートでのコピペを試行錯誤しております
追伸 昨日の別シートでコピペマクロを実行させるマクロは、処理落ちか
1004 マクロを実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。
新たな問題が出てきました
それは良い考え方だと思います。
今までとは違う方向ですが、今までのコードを参考にしてみたいと思います
しかしながら申しにくいのですが、openが二重エラーは逃れられないと推測してますがいかがでしょうか
恒久対策としては、mbの箇所については、Thisworkbookで置き換えになります。call copy_sheet時のパラメータにmbがありますがこれも削除します。
具体的にコードを希望される場合は、その旨返信ください。
ぜひよろしくお願い申し上げます
ボタンを割り付けたいのは、どのブックなのでしょうか?
ワークシート.xlsmはあくまで開発中のものでして、このブックで成功したならば本来のペーストしたいbookに登録したいと考えております
①ボタンを割り当てたいブック
②マクロを登録したいブック
③ky 前提がよくわかりませんが、
①ボタンを割り当てたいブック
②マクロを登録したいブック
③kyu,nyu,gai,折衝取込 を日々取り込みたいブック
は、同じブックではないのでしょうか。
①②③は全て同じbookに存在することになります。
しかし③のみ別々のブックからの取込みになります
③は3つのブック、book旧、nyuとgaiはいっしょでbook入外、そして折衝取込はbook折衝取込、からの取込みになります。
異なる場合は、①②③ごとにそのブック名を提示していただけませんでしょうか。
又、③には、kyu,nyu,gai,折衝取込の4シート以外にも、他のシートがあるのでしょうか。
③には、kyu,nyu,gai,折衝取込の4シート以外にも、他のシートがあるのでしょうか。
ございます。その中のうちにある4sheetです。
ペーストに失敗してすいません
ありがとうございます
事情で返信出来ませんが試してみます