ファイルAにマクロを設定しています。


ファイルAのH4:R30を選択して表示内容をクリアにして、
ファイルBのシート「告知」を選択して、
「H4:R30」の内容をファイルAの「H4:R30」にペーストして、
ファイルBのエクセルを閉じる設定をしたいです。

そこで下記のように設定しています。


Range("H4:R30").Select
Selection.ClearContents
ChDir "\\sever\発注書"
Workbooks.Open Filename:= _
"\\sever\発注書\ファイルB.xls"
Sheets("告知").Select
Range("H4:R30").Select
Selection.Copy
Windows("ファイルA.xls").Activate
ActiveSheet.Paste
Windows("ファイルB.xls").Activate
ActiveWindow.Close
Range("E34").Select


そこで質問があります。
ファイルA.xlsですが、
ファイル名が不規則に変更となります。
となると上記の「Windows("ファイルA.xls").Activate」で
エラーになってしまいます。
※ファイル名が変った場合は当たり前ですよね・・・。

これをエラーにしない方法はありますでしょうか?
(マクロを実施しているファイルに戻るみたいな・・・)


どうぞよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2009/06/30 20:28:02
  • 終了:2009/07/01 08:26:19

回答(2件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/06/30 20:41:40

ポイント50pt

Windows で Microsoft Excel をご利用ですかね。Excel2003 という前提で回答します。


消極的な方法

On Errorステートメントを使って、Windows("ファイルA.xls").Activate でエラーになったら何とかする。


事前にファイル存在を調べる方法

FileSystemObject.FileExistsメソッドを使い、事前に "ファイルA.xls" が存在するかどうかを調べる。

id:ohtsu6

どうもありがとうございます。

Resume Nextの件参考になりました。

2009/07/01 08:18:41
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692009/06/30 21:37:05

ポイント100pt
Windows("ファイルA.xls").Activate

ThisWorkbook.Activate
id:ohtsu6

こんなカンタンなことだったのですね・・・

ありがとうございます。

2009/07/01 08:18:59
  • id:Mook
    質問の内容なら、下記のようにもかけます。

    Sub CopyFromB()
      Application.ScreenUpdating = False
      Dim thisSheet As Worksheet
      Set thisSheet = ActiveSheet
      
      thisSheet.Range("H4:R30").ClearContents
      With Workbooks.Open("\\sever\発注書\ファイルB.xls")
        Worksheets("告知").Range("H4:R30").Copy
        thisSheet.Range ("H4:R30")
        .Close
      End With
      thisSheet.Range("E34").Select
      Application.ScreenUpdating = True
    End Sub

    ご参考:SELECTするな
    http://officetanaka.net/excel/vba/speed/s2.htm
  • id:ohtsu6
    Mookさま

    いつもいつもどうもありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません