Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8880 / 13646 ツリー ←次へ | 前へ→

【30496】ブック にしもり 05/10/28(金) 17:56 質問[未読]
【30499】Re:ブック awu 05/10/28(金) 20:10 回答[未読]
【30500】Re:ブック MARBIN 05/10/28(金) 20:12 回答[未読]
【30502】Re:ブック MARBIN 05/10/28(金) 20:21 発言[未読]
【30505】Re:ブック awu 05/10/28(金) 23:50 発言[未読]
【30511】Re:ブック MARBIN 05/10/29(土) 8:25 発言[未読]
【30518】Re:ブック awu 05/10/29(土) 10:54 発言[未読]
【30519】Re:ブック MARBIN 05/10/29(土) 11:04 発言[未読]
【30520】Re:ブック awu 05/10/29(土) 11:21 発言[未読]
【30523】Re:ブック MARBIN 05/10/29(土) 11:36 発言[未読]
【30527】Re:ブック awu 05/10/29(土) 12:13 発言[未読]
【30571】Re:ブック にしもり 05/10/31(月) 8:47 お礼[未読]

【30496】ブック
質問  にしもり  - 05/10/28(金) 17:56 -

引用なし
パスワード
   こんにちは。
2つのWorkbookを開いた状態で一方のシートを他方へコピーしました。
そのときの自動記録です。

Sub Macro6()
  Sheets("ローデータ").Select
  Sheets("ローデータ").Copy Before:=Workbooks("経費集計.xls").Sheets(1)
  ActiveWorkbook.Save
End Sub

Sheets("ローデータ")はC\MY DOCUMENT\ACCOUNT\東京.XLSにあります。
経費集計.xlsはC\MY DOCUMENT\BRANCHにあります。
ここまではいいのですが、これを東京.XLSも経費集計.xlsも開かずに、シート"ローデータ"を経費集計.xlsへコピーする処理を行なうにはどうすればよろしいでしょうか。
ご教示よろしくお願いします。

【30499】Re:ブック
回答  awu  - 05/10/28(金) 20:10 -

引用なし
パスワード
   > 東京.XLSも経費集計.xlsも開かずに

これは、「手作業で開かないで」という意味でいいのですね。

それなら、こんな感じで如何ですか。

Sub Macro6()
  Dim Wb1 As Workbook
  Dim Wb2 As Workbook
  Application.ScreenUpdating = False
  Set Wb1 = Workbooks.Open("C:\MY DOCUMENT\ACCOUNT\東京.XLS")
  Set Wb2 = Workbooks.Open("C:\MY DOCUMENT\BRANCH\経費集計.xls")
  Wb1.Sheets("ローデータ").Copy Before:=Wb2.Sheets(1)
  Wb1.Close Savechanges:=False
  Wb2.Close Savechanges:=True
  Application.ScreenUpdating = True
  Set Wb1 = Nothing
  Set Wb2 = Nothing
End Sub

【30500】Re:ブック
回答  MARBIN  - 05/10/28(金) 20:12 -

引用なし
パスワード
   かぶってしまいますが・・・。

出来ないと思います。

通常は、素直に開いて処理します。

 Application.ScreenUpdating = False
 '処理
 Application.ScreenUpdating = True

とします。

ところで、
経費集計.xls
東京.XLS

Private Sub Workbook_Open()
のマクロがありませんか?
あったらマクロを起動しないようにする
コードが必要になります。

【30502】Re:ブック
発言  MARBIN  - 05/10/28(金) 20:21 -

引用なし
パスワード
   言葉が不足していました。

出来ない、というのは、
開かないで、というのは出来ない、
という意味でした。
失礼しました。

【30505】Re:ブック
発言  awu  - 05/10/28(金) 23:50 -

引用なし
パスワード
   ▼MARBIN さん:
>ところで、
>経費集計.xls
>東京.XLS
>に
>Private Sub Workbook_Open()
>のマクロがありませんか?
>あったらマクロを起動しないようにする
>コードが必要になります。

エッ??
殆んど VBA から開くと Workbook_Openは実行されませんので、
その必要ないと思いますよ。

殆んど というのは、Excel97 だけは、内容によっては必要かもね。

【30511】Re:ブック
発言  MARBIN  - 05/10/29(土) 8:25 -

引用なし
パスワード
   bookBに↓のコードを書き、

Sub test()
  Workbooks.Open Filename:="C:\Documents and Settings\marbin\デスクトップ\bookA.xls"
End Sub

bookAに、

Sub Auto_Open
Msgbox "hogehoge"
End Sub

と記述しておいたら、
bookBのコードを実行したらbookAのコードは実行されませんが、

bookAのコードを
Private Sub Workbook_Open()
Msgbox "hogehoge"
End Sub

としたらコードは実行されますが??

【30518】Re:ブック
発言  awu  - 05/10/29(土) 10:54 -

引用なし
パスワード
   ▼MARBIN さん:
>bookBに↓のコードを書き、
>
>Sub test()
>  Workbooks.Open Filename:="C:\Documents and Settings\marbin\デスクトップ\bookA.xls"
>End Sub
>
>bookAに、
>
>Sub Auto_Open
> Msgbox "hogehoge"
>End Sub
>
>と記述しておいたら、
>bookBのコードを実行したらbookAのコードは実行されませんが、
>
>bookAのコードを
>Private Sub Workbook_Open()
> Msgbox "hogehoge"
>End Sub
>
>としたらコードは実行されますが??


うぅ〜ん? そうですか。

当方の環境 Win_XP Excel2003 では、実行されません。
他のWebで調べてみても実行されない という情報があります。

Excel97は、実行されるみたいですが、今環境がありませんので確認できません。

環境は、何をお使いですか。

【30519】Re:ブック
発言  MARBIN  - 05/10/29(土) 11:04 -

引用なし
パスワード
   awuさんこんにちは。

xls:2002
win:XP SP2
です。

たとえば、フォルダ内のブックのシート一覧を取得
すりゅ場合に下記のようにしています。

 Application.EnableEvents = False
 'ブックを開いてシート名取得
 Application.EnableEvents = True

【30520】Re:ブック
発言  awu  - 05/10/29(土) 11:21 -

引用なし
パスワード
   ちなみに、MS社の技術情報に、Excel 2000を対象に、次のようなことが書かれています。
自動翻訳のせいか、文脈がちょっと変なのですが・・・

------
Microsoft Excel で Workbook_Open イベントを使用するのです。 Workbook_Open は、
手動でブックを開く各時間マクロ コードを実行する組み込むブック イベントです。
------

「手動でブックを開く」と唱っています。


> Application.EnableEvents = False

は、Workbook_Open イベントプロシージャの「実行」には、関係しないと思います。

【30523】Re:ブック
発言  MARBIN  - 05/10/29(土) 11:36 -

引用なし
パスワード
   実際にためしてみればわかることですが、
私のPCの環境で、

bookB
Sub test()
 Application.EnableEvents = False
 Workbooks.Open Filename:="C:\Documents and Settings\marbin\デスクトップ\bookA.xls"
 Application.EnableEvents = True
End Sub

bookAには

Private Sub Workbook_Open()
Msgbox "hogehoge"
End Sub

と記述。

bookBのtestを実行したら、
Msgboxは表示されませんでした。

 Application.EnableEvents = False

 Application.EnableEvents = True

を外して再度実行したらMsgboxが表示されましたよ。

【30527】Re:ブック
発言  awu  - 05/10/29(土) 12:13 -

引用なし
パスワード
   ありゃ、間違えました。

>> Application.EnableEvents = False

> は、Workbook_Open イベントプロシージャの「実行」には、関係しないと思います。


EnableEvents でしたね。

MARBINさんの環境では、関係ある ということですね。

当方の環境では、関係しません。

> 実際にためしてみればわかることですが

同じ環境がありませんのでテスト出来ない状態です。
Excel2000 は、あるのですが、あとでテストしてみます。


にしもり さん 何か変な方向に行っちゃって、ごめんなさい。

【30571】Re:ブック
お礼  にしもり  - 05/10/31(月) 8:47 -

引用なし
パスワード
   ▼awu さん、MARBINさん:
> にしもり さん 何か変な方向に行っちゃって、ごめんなさい。
わたくしの質問が思わぬ波紋を起こしてしまいました。
正直言って議論の内容についていけないのですが、お二方のアドバイスにもとづいてやってみます。
どうもありがとうございました。

8880 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free