何方か、回答をお願いします。
(A.xlsのAAAシート)(B.xlsのBBBシート)この2つ間のセル値をコピーしたい
のですが(共にブック名シート名に一貫性は無しで、既に開いています。)
マクロ付.xlsに下記のマクロを書いてA.xlsのAAAシートがアクティブの時にマクロを
実行してtwwにAAAシートをセット出来たのですが、Bk1にB.xlsのBBBシートをセット出来ません。
Application.Waitで止めている間にアクティブシートを変えようとしましたが駄目
Application.Dialogs(xlDialogWorkbookUnhide).Showでも駄目でした。
何方か、マクロ実行中のアクティブシート変更方法を教えて下さい。
又、この様なブック名に一貫性が無くて既に開いている物の間のコピー等はどの様に
するのか参考になる物が有れば教えて下さい。
Sub コピー()
Dim Bk1 As Worksheet
Dim tww As Worksheet
Set tww = ActiveWorkbook.Sheets(1)
'ここが分かりません
Set Bk1 = ActiveWorkbook.Sheets(1)
'-------1個目
tww.Range("D10").Value = Bk1.Range("H9").Value
Set Bk1 = Nothing: Set tww = Nothing
End Sub
No.2ベストアンサー
- 回答日時:
マクロ付.xlsの標準モジュールではなく、
ThisWorkbookのモジュールに
'=============================================================
Option Explicit
Private sht1 As Worksheet
Private WithEvents app As Application
Sub main()
If ActiveSheet.Type = xlWorksheet Then
Set app = Application
Set sht1 = Application.ActiveSheet
Application.StatusBar = "データをやり取りするシートをアクティブにしてください"
End If
End Sub
'============================================================
Private Sub app_WorkbookActivate(ByVal Wb As Workbook)
If Wb.Sheets(1).Type = xlWorksheet Then
sht1.Cells(1, 1).Value = 1
Wb.Sheets(1).Cells(2, 1).Value = sht1.Cells(1, 1).Value
Application.StatusBar = False
End If
Set app = Nothing
End Sub
として、データ交換する最初のシートをアクティブにしてThisworkbook.mainを実行してください。
次に適当なブックをアクティブにしてください。
最初にアクティブになっていたシートのA1に1が設定され、
選択したブックの最左端シートのセルA2に
最初にアクティブになっていたシートのA1の値がコピーされます。
一例です。参考にしてください。
No.4
- 回答日時:
こんばんは。
元のコードは、マクロのあるブックと、コピー元が一致しているという想定です。
>(開いているファイルは、コピー元.xls-コピー先.xls-マクロ記入.xls等の3個です。)
しかし、それは、ThisWorkbook を端にActiveBook に書き換えたら済むことだと思います。
>質問には1個のセル値のみコピーをしていますが実際は複数で位置もばらばらのセルをコピーをしています。
なお、これ自体は、配列に入れておけば、一括で管理できると思います。
'-------------------------------------------
Sub Test1()
Dim obj As Object
Dim oBook As Workbook
On Error Resume Next
Set obj = Application.InputBox("目的先のブックのシートのセルを選択してください。" & vbCrLf & _
"コピー元: " & ActiveWorkbook.Name, Type:=8)
If obj Is Nothing Then
Exit Sub
End If
On Error GoTo 0
If StrComp(TypeName(obj), "Range") = 0 Then
Set oBook = obj.Parent.Parent
If oBook Is ActiveWorkbook Then
MsgBox "それは、目的先のブックではありません。", 48
Else
MsgBox "コピー元: " & ActiveWorkbook.Name & vbCrLf & _
"コピー先: " & oBook.Name
End If
End If
End Sub
'以下は、二つ選択する方法です。
'以下の場合は、どちらかというとUserForm のほうが管理しやすいです。
'-------------------------------------------
Sub Test2()
Dim obj As Object
Dim oBook As Workbook
Dim dstBook As Workbook
On Error Resume Next
Set obj = Application.InputBox("コピー元のブックのシートのセルを選択してください。", Type:=8)
If obj Is Nothing Then
Exit Sub
End If
On Error GoTo 0
If StrComp(TypeName(obj), "Range") = 0 Then
Set oBook = obj.Parent.Parent 'ここでブックオブジェクト取得
If oBook Is ThisWorkbook Then
MsgBox "それは、目的先のブックではありません。", 48
End If
End If
Set obj = Application.InputBox("コピー先のブックのシートのセルを選択してください。" & vbCrLf & _
"コピー元: " & oBook.Name, Type:=8)
If obj Is Nothing Then
Exit Sub
End If
On Error GoTo 0
If StrComp(TypeName(obj), "Range") = 0 Then
Set dstBook = obj.Parent.Parent 'ここでブックオブジェクト取得
If dstBook Is ThisWorkbook Or dstBook Is oBook Then
MsgBox "それは、目的先のブックではありません。", 48
End If
End If
If MsgBox("コピー元: " & oBook.Name & vbCrLf & _
"コピー先: " & dstBook.Name & vbCrLf & _
"よろしいですか?", vbOKCancel) = vbOK Then
'コピー実行
End If
End Sub
No.3
- 回答日時:
こんばんは。
以下のようなコードを間に入れればよいと思います。
もちろん、自分のマクロのあるブックは、ThisWorkbook ですね。
Sub Test()
Dim obj As Object
Dim oBook As Workbook
On Error Resume Next
Set obj = Application.InputBox("目的先のブックのシートのセルを選択してください。", Type:=8)
If obj Is Nothing Then
Exit Sub
End If
On Error GoTo 0
If StrComp(TypeName(obj), "Range") = 0 Then
Set oBook = obj.Parent.Parent 'ここでブックオブジェクト取得
If oBook Is ThisWorkbook Then
MsgBox "それは、目的先のブックではありません。", 48
Else
MsgBox oBook.Name
End If
End If
End Sub
この回答への補足
Wendy02様もし良ければ、時間がある時で結構ですので補足回答をお願いします。
Application.InputBoxを使うとどうも初めのActivateWorkbook以外のブックを
選択出来ません。(開いているファイルは、コピー元.xls-コピー先.xls-マクロ記入.xls
等の3個です。)
後、質問には1個のセル値のみコピーをしていますが実際は複数で位置もばらばらのセルを
コピーをしています。
問題はlark_0925様の回答で解決しましたが、良ければ回答をお願いします。
No.1
- 回答日時:
Sub try()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name = ThisWorkbook.Name Then
MsgBox "このブックだよ " & wb.Name
Else
MsgBox "違うブックだよ " & wb.Name
End If
Next
End Sub
開いているブックのうち自Bookかそうでないかは、
こんな感じでわかるかな?
その判定結果で変数へのセットを変えてみては?
n-jun様、回答ありがとう御座います。
なるほど、全てのブックをYES,NOで判別するのですね。
今度、確認したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
【Excel VBA】シートコピー時、...
-
Excel シートのコピーの際、ペ...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
VBA シートをコピー後、ボタン...
-
エクセルのワークシートをUSBメ...
-
エクセルの1シートの内容を複...
-
エクセルシートを別のエクセル...
-
エクセルVBA 1行飛ばしで転記す...
-
VBAにて複数フォルダのエクセル...
-
エクセルで、開くのに時間のか...
-
ExcelVBAで、ユーザーフォーム...
-
Excelの行をコピーして貼り付け...
-
エクセルのページをシートごと...
-
エクセルVBAですが教えてくださ...
-
エクセルでシートを「移動また...
-
フィルターをかけてCSV保存をVBAで
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
EXCELで別のブックから式をコピ...
-
【VBA】コピー&複数個所のペー...
-
Excel 数式の保護をしたセルを...
-
エクセルVBA 1行飛ばしで転記す...
-
エクセルの1シートの内容を複...
-
Excel シートのコピーの際、ペ...
-
エクセルでシートを「移動また...
-
エクセルの表を作ってるんですが
-
PDFファイルをコピーしてエクセ...
-
エクセルのワークシートをUSBメ...
-
エクセルのページをシートごと...
-
VBA シートをコピー後、ボタン...
-
【Excel】数式をそのまま他のシ...
-
アクセスの画面をプリントスク...
-
ExcelVBAで、ユーザーフォーム...
-
【Excel VBA】シートコピー時、...
おすすめ情報