Excel VBA質問箱 IV

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

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


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

【23901】別のブックからのデータ取り込み方法 skuroyan 05/4/6(水) 21:06 質問[未読]
【23902】Re:別のブックからのデータ取り込み方法 ウッシ 05/4/6(水) 21:19 回答[未読]
【23983】Re:別のブックからのデータ取り込み方法 skuroyan 05/4/9(土) 9:11 お礼[未読]
【23984】Re:別のブックからのデータ取り込み方法 skuroyan 05/4/9(土) 9:24 質問[未読]
【23990】Re:別のブックからのデータ取り込み方法 ウッシ 05/4/9(土) 11:55 回答[未読]
【23991】Re:別のブックからのデータ取り込み方法 skuroyan 05/4/9(土) 13:23 お礼[未読]
【23993】Re:別のブックからのデータ取り込み方法 ウッシ 05/4/9(土) 13:45 回答[未読]
【24006】Re:別のブックからのデータ取り込み方法 skuroyan 05/4/9(土) 20:52 お礼[未読]

【23901】別のブックからのデータ取り込み方法
質問  skuroyan  - 05/4/6(水) 21:06 -

引用なし
パスワード
   起動しているブックのマクロ処理で、別の開いていないブックのシートのデータを読取り起動しているブックのシートに転記する方法を教えて下さい。

別のブックのシートには、別システムから作成されるデータが落とされます。現在は、別のブックをあらかじめ開いておいて、起動しているブック側からコピーペーストしていますが、「別のブックをあらかじめ開いておく」条件があり、これをよく忘れてエラーになりますので、これを改善したいのです。

【23902】Re:別のブックからのデータ取り込み方法
回答  ウッシ  - 05/4/6(水) 21:19 -

引用なし
パスワード
   こんばんは

こんな感じです、

Sub test()
  Dim tBK As Workbook
  On Error Resume Next
  Set tBK = Workbooks("別のブック.xls")
  If Err Then
    Set tBK = Workbooks.Open("C:\temp\別のブック.xls")
  End If
  On Error GoTo 0
  If tBK Is Nothing Then Exit Sub
  tBK.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets(1).Range("A1")
  tBK.Close False
  Set tBK = Nothing
End Sub

開くブックをその都度指定するなら、Aplication.GetOpenFilename を使えばいいです。

【23983】Re:別のブックからのデータ取り込み方法
お礼  skuroyan  - 05/4/9(土) 9:11 -

引用なし
パスワード
   ▼ウッシ さん:
おはようございます。やりたいことが出来ました、ご教授ありがとうございました。

【23984】Re:別のブックからのデータ取り込み方法
質問  skuroyan  - 05/4/9(土) 9:24 -

引用なし
パスワード
   ▼ウッシ さん:
この方法(UsedRange.Copy)ですと、読込元データが前回読込より減った場合、前のデータが残ってしまいます。これへの対処として、読み込んだデータを格納するシートを事前にクリヤ(Range("A2:C1000").Select Selection.ClearContents)する方法を考えましたが、これ以外に良い方法・効率的な方法はありますでしょうか?

【23990】Re:別のブックからのデータ取り込み方法
回答  ウッシ  - 05/4/9(土) 11:55 -

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

▼skuroyan さん:
>この方法(UsedRange.Copy)ですと、読込元データが前回読込より減った場合、前のデータが残ってしまいます。これへの対処として、読み込んだデータを格納するシートを事前にクリヤ(Range("A2:C1000").Select Selection.ClearContents)する方法を考えましたが、これ以外に良い方法・効率的な方法はありますでしょうか?

クリアする事は別に非効率的ではないですけど、コードは
  ThisWorkbook.Worksheets(1).UsedRange.ClearContents
  tBK.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets(1).Range("A1")
として下さい。

Selectは殆どの場合は不要です。
但しどのブックのどのシートのセルか明示する(特に複数のブック、複数のシートを扱う
場合)クセを付けて下さい。

今回のケースで別のブック.xlsを開いた後に
>Range("A2:C1000").Select Selection.ClearContents
としたら、別のブック.xlsのデータがクリアされてしまいます。

【23991】Re:別のブックからのデータ取り込み方法
お礼  skuroyan  - 05/4/9(土) 13:23 -

引用なし
パスワード
   ▼ウッシ さん:
うまくいきました、早速のが回答ありがとうございました。
>クリアする事は別に非効率的ではないですけど、コードは
>  ThisWorkbook.Worksheets(1).UsedRange.ClearContents
>  tBK.Worksheets(1).UsedRange.Copy ThisWorkbook.Worksheets(1).Range("A1")
>として下さい。

マクロ記録に頼っているため、ご指摘の通りになってました。この制御文の書き方は、EXCEL97でも同じでしょうか?(自宅:EXCEL2000、会社:EXCEL97もある、自宅で出来ても会社でエラーになったことがありました。)
>>今回のケースで別のブック.xlsを開いた後に
>>Range("A2:C1000").Select Selection.ClearContents
>としたら、別のブック.xlsのデータがクリアされてしまいます。

【23993】Re:別のブックからのデータ取り込み方法
回答  ウッシ  - 05/4/9(土) 13:45 -

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

▼skuroyan さん:
>マクロ記録に頼っているため、ご指摘の通りになってました。この制御文の書き方は、EXCEL97でも同じでしょうか?(自宅:EXCEL2000、会社:EXCEL97もある、自宅で出来ても会社でエラーになったことがありました。)

Excel97と2002が有りますけどコードは殆ど97で書いていますので大丈夫です。
複数種のバージョンで使うVBAは最も低いバージョンで開発するのが基本ですよ。

【24006】Re:別のブックからのデータ取り込み方法
お礼  skuroyan  - 05/4/9(土) 20:52 -

引用なし
パスワード
   ▼ウッシ さん:
こんにちは。
おっしゃるとおりです。この内容を元に操作性向上のため会社でマクロの改善を行ってみます。適切な即答ありがとうございました。

>Excel97と2002が有りますけどコードは殆ど97で書いていますので大丈夫です。
>複数種のバージョンで使うVBAは最も低いバージョンで開発するのが基本ですよ。

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