ここから本文です

ExcelのVBAで 開いたブックに文字があれば入力してあるセルすべてをコピーする ...

くろおにさまさん

2019/7/3013:31:15

ExcelのVBAで
開いたブックに文字があれば入力してあるセルすべてをコピーする
何も書いておらず白紙であればコピーせず閉じる
というプログラムを作りたいです。
IF文でしょうか?

ご教授お願いいたします。

閲覧数:
23
回答数:
3
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

tok********さん

2019/7/3016:20:13

入力のあるシートと空白のシートが混在しているブックでも閉じるんですの?
とりあえず、

If WorksheetFunction.CountA(ActiveSheet.UsedRange) > 0 Then
ActiveSheet.UsedRange.Copy
End If

入力が無いシートでは何もしません。

質問した人からのコメント

2019/8/6 11:35:07

こちらのプログラムで思い通りにできました!
ありがとうございます><

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

tai********さん

2019/7/3018:09:01

とりあえず
白紙のブックを保存しておくのを止めましょう。

プロフィール画像

カテゴリマスター

hot********さん

2019/7/3016:34:47

質問の仕様が不確かなので、何をしたいのかが不明ですが、質問通りなら、こんな感じではどうでしょうか。
ダイアログで選択したブックの中のシートを順に調べて、何かあるシートを見つけたら、最初に見つけたシートの変更セルを全てコピーして、対象ブックは開いたまま終了します。
何もないブックだった場合は警告を出して閉じます。

コピーしてから何をするのかとかの情報が不足してます。
最初に何かを見つけたシートのセルだけなのか、書き込みがあるすべてのシートかなども不明です。

Sub sample()
Dim file As String
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
file = Application.GetOpenFilename("Excel ブック,*.xls?") 'ファイル選択ダイアログ
If file = "False" Then Exit Sub 'キャンセルなら終了
Set wb = Workbooks.Open(file) 'ブックを開く
For Each ws In wb.Worksheets 'シートを順に
Set rng = ws.Cells.Find("*", LookIn:=xlValues) '何かあるか調べる
If Not rng Is Nothing Then 'あったら
ws.UsedRange.Copy '見つけたセルをコピー
Exit Sub '終了
End If
Next
MsgBox "何もありません"
wb.Close False '(何もなかったので)ブックを保存せずに閉じる
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる