Excel VBA質問箱 IV

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

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


11205 / 13644 ツリー ←次へ | 前へ→

【17459】ブック間のコピー&貼り付け れいこ 04/8/30(月) 13:51 質問[未読]
【17460】Re:ブック間のコピー&貼り付け phoo 04/8/30(月) 14:09 発言[未読]
【17463】Re:ブック間のコピー&貼り付け れいこ 04/8/30(月) 14:34 質問[未読]
【17464】Re:ブック間のコピー&貼り付け Jaka 04/8/30(月) 14:56 発言[未読]
【17466】Re:ブック間のコピー&貼り付け phoo 04/8/30(月) 15:12 回答[未読]
【17461】Re:ブック間のコピー&貼り付け IROC 04/8/30(月) 14:09 回答[未読]
【17467】Re:ブック間のコピー&貼り付け れいこ 04/8/30(月) 15:28 お礼[未読]

【17459】ブック間のコピー&貼り付け
質問  れいこ  - 04/8/30(月) 13:51 -

引用なし
パスワード
   こんにちは。
VBA初心者なのですが、Book間のコピー&貼り付けができなくて
困っています。

「仕入先別VA******.xls」(←*印には年月が入ります。これは毎月変わっていきます。)というファイルと「原価低減データ.xls」という2つのファイルがデスクトップ上に
存在するとして、既に「原価低減データ.xls」を開いている状態から
新たに、「仕入先別VA******.xls」を開いて、「CK302.」というシートの内容をコピーして
「原価低減データ.xls」の「CK30」というシートに貼り付けるというコードを
書きたいのですが、途中で「インデックスが有効範囲にありません」という
エラーメッセージがでてしまいます。
これは何が原因なのでしょうか?
もしわかれば教えていただきたいです。
よろしくお願いします。
今、書いているコードは以下の通りです。

---------------------------------------------------------------------------
Sub 仕入先別VA()

'ファイルを開く
  Workbooks.OpenText Filename:= _
    "C:\Documents and Settings\AP641\デスクトップ\仕入先別VA******.xls"
    
'コピー&貼り付け
Application.Windows("原価低減データ.xls").Activate
  Sheets("CK302.").Select
  Cells.Select
  Selection.Copy
Application.Windows("仕入先別VA******.xls").Activate ←ここでエラーがでます。
  Sheets("CK30").Select
  Cells.Select
  ActiveSheet.Paste

End Sub

---------------------------------------------------------------------------

【17460】Re:ブック間のコピー&貼り付け
発言  phoo  - 04/8/30(月) 14:09 -

引用なし
パスワード
   いくつか質問させてください。

1.Application.Windows("仕入先別VA******.xls").Activate ←ここでエラーがでます。

本当にここで、エラーが発生しているのですか?
(私のほうでは、同じようなコードで実行した結果、うまくいきました。)

2.文章とロジックが合っていないみたいですが・・・。

 「原価低減データ.xls」 :Sheets("CK302.")
 「仕入先別VA******.xls」:Sheets("CK30")

で、合っていますか?

【17461】Re:ブック間のコピー&貼り付け
回答  IROC  - 04/8/30(月) 14:09 -

引用なし
パスワード
   マクロの記録で出来ないでしょうか?

【17463】Re:ブック間のコピー&貼り付け
質問  れいこ  - 04/8/30(月) 14:34 -

引用なし
パスワード
   ▼phoo さん:
>いくつか質問させてください。
>
>1.Application.Windows("仕入先別VA******.xls").Activate ←ここでエラーがでます。
>
>本当にここで、エラーが発生しているのですか?
>(私のほうでは、同じようなコードで実行した結果、うまくいきました。)

はい。ここでエラーが出てしまいます。

>2.文章とロジックが合っていないみたいですが・・・。
>
> 「原価低減データ.xls」 :Sheets("CK302.")
> 「仕入先別VA******.xls」:Sheets("CK30")

>で、合っていますか?

本来のコードには
「原価低減データ.xls」 のSheets("CK302.")は
"CK30"と2を○で囲んだ番号が入っているのですが、
このページに書き込むと何故か"302."と表示されて
しまいます。
だから、2つのシート名は異なります。

IROCさんのおっしゃるようにマクロで記録して、
「仕入先別VA200407.xls」の年月の部分を
「仕入先別VA******.xls」というように
*印に書き換えた場合でも、同じところでエラーが発生します。

【17464】Re:ブック間のコピー&貼り付け
発言  Jaka  - 04/8/30(月) 14:56 -

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

ワイルドカードが使えるものと使えないものの区別なんて考えたこともありませんが、
単純なコード書いて試せば、ある程度はわかると思うんですけど...。

Workbooks("****3").Activate
Sheets("*3").Select
これ動くと思います?
最近のXPだと動くのでしょうか?

始めのうちは、ブックやシートを開いたり新規に作ったりすると、必ずアクティブになる性質を利用した方がいいと思いますけど。

Workbooks.OpenText FileName:= _
   CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\仕入先別VA*.xls"

dd = ActiveWorkbook.Name
Workbooks(dd).Activate

【17466】Re:ブック間のコピー&貼り付け
回答  phoo  - 04/8/30(月) 15:12 -

引用なし
パスワード
   >Workbooks("****3").Activate
>Sheets("*3").Select

XPでも使えません。


****でActivateしないで、
ファイルオープン後に、Application.ActiveWorkbook.Name
でファイル名を取得した名前をアクティブにしてはいかがでしょうか?
こんなかんじで。

  Dim Path As String

'ファイルを開く
  Workbooks.OpenText Filename:= _
    "D:\A\仕入先別VA******.xls"
  
  Path = Application.ActiveWorkbook.Name
  
'コピー&貼り付け
Application.Windows("原価低減データ.xls").Activate
  Sheets("CK302.").Select
  Cells.Select
  Selection.Copy
Application.Windows(Path).Activate
  Sheets("CK30").Select
  Cells.Select
  ActiveSheet.Paste

【17467】Re:ブック間のコピー&貼り付け
お礼  れいこ  - 04/8/30(月) 15:28 -

引用なし
パスワード
   phooさんに教えて頂いた通り、
ファイルオーブン後に
ファイル名を取得して、その名前をアクティブにしたら
ちゃんと動きました!!

皆さん、いろいろとご指導ありがとうございました☆

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