
下記を行いたいです。
マクロを実行するワークブックでマクロを実行
↓
最初に任意のエクセルファイルを開く
(これはファイル名がランダムの為、ダイアログボックスを開いてユーザに開きたいファイルを
選択させる)
OpenFileName = Application.GetOpenFilename("Excelブック,*.xlsx")
↓
開いたファイル先のシート(全セル)をコピー
↓
マクロを実行したワークブックの"sheet1”に上記コピーを貼り付け
↓
開いたファイルは保存せずに閉じる(警告メッセージ表示無し)

No.4ベストアンサー
- 回答日時:
以下のマクロを標準モジュールへ登録してください。
----------------------------------------------
Option Explicit
Public Sub シートコピー()
Dim OpenFileName As Variant
Dim keys As Variant
Dim rngs As Variant
Dim i As Long
Dim wb As Workbook
OpenFileName = Application.GetOpenFilename("Excelブック,*.xlsx")
If OpenFileName = False Then Exit Sub
Set wb = Workbooks.Open(OpenFileName)
keys = Array("①", "②", "③", "④", "⑤", "⑥")
rngs = Array("A1", "B1", "C1", "D1", "E1", "F2")
For i = 0 To UBound(keys)
If Range(rngs(i)).Value <> keys(i) Then
MsgBox ("不正特定文字。処理を終了します。")
wb.Close (False)
Exit Sub
End If
Next
wb.ActiveSheet.Cells.Copy ThisWorkbook.Worksheets("Sheet1").Cells(1, 1)
wb.Close (False)
MsgBox ("コピー完了")
End Sub
No.5
- 回答日時:
No.3の回答者です。
失礼しました。
>A1:①、B1:②、C1:③、D1:④、E1:⑤、F2:⑥でお願いします。
修正項目
+1を入れてください。
If (UBound(arChk) +1)<> Rng.Cells.Count Then MsgBox "Inside Err(設定ミス)", vbCritical: Exit
'チェックする文字を入れる
Const strCHEK As String = "①,②,③,④,⑤,⑥" 'カンマ区切りです。
'チェックするセルを入れる
Const strADR As String = "A1,B1,C1,D1,E1,F2" 'カンマ区切りです。
No.3
- 回答日時:
こんばんは。
>開いたファイル先のシート(全セル)をコピー
>マクロを実行したワークブックの"sheet1”に上記コピーを貼り付け
これをするということは、1回きりを意味しませんか?
実際は、もう少し工夫が必要なような気がします。
ユーザー設定のところに、チェック項目の文字とセルのアドレスを入れてください。
最低限のエラー処理はしてあります。
'//標準モジュール
Sub FileOpenCopy()
Dim FileName As Variant
Dim wb As Workbook
FileName = Application.GetOpenFilename("Excelファイル,*.xlsx")
If FileName = False Then Exit Sub
On Error Resume Next
Set wb = Workbooks.Open(FileName)
If Err() <> 0 Then
MsgBox "オープン時にエラーが発生しましたので、終了します。", vbCritical
wb.Close False
End If
On Error GoTo 0
With wb
If shChecker(.ActiveSheet) Then
.ActiveSheet.Cells.Copy ThisWorkbook.ActiveSheet.Cells(1, 1)
MsgBox "コピーは正常に終了しました。", vbInformation
Else
MsgBox "目的のシートの整合性が合わなかったので、コピーしないまま閉じます。", vbExclamation
End If
.Close False
End With
End Sub
Function shChecker(ByVal sh As Worksheet) As Boolean
'******ユーザー設定 *****
'チェックする文字を入れる
Const strCHEK As String = "A,B,C,D,E,F"
'チェックするセルを入れる
Const strADR As String = "A1,B1,C1,D1,E1,F2"
'**************************
Dim arChk: arChk = Split(strCHEK, ",")
Dim Rng As Range: Set Rng = sh.Range(strADR)
If UBound(arChk) <> Rng.Cells.Count Then MsgBox "Inside Err(設定ミス)", vbCritical: Exit Function
Dim i As Long, c
For Each c In Rng
If StrComp(Trim(arChk(i)), Trim(c.Value), vbTextCompare) <> 0 Then
Exit For
End If
i = i + 1
Next
If i > UBound(arChk) Then
shChecker = True
End If
End Function
ありがとうございます。
Inside Err(設定ミス)→"目的のシートの整合性が合わなかったので、コピーしないまま閉じます。"のルーチンに入りました。
ユーザ設定のところは合っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
Excel シートのコピーの際、ペ...
-
EXCELで別のブックから式をコピ...
-
【エクセル】プルダウン設定の...
-
ページの設定を別シートにコピ...
-
エクセルVBAですが教えてくださ...
-
エクセルシートを別のエクセル...
-
エクセルの1シートの内容を複...
-
エクセルでシートを「移動また...
-
エクセルマクロ 繰り返して、...
-
エクセルVBA 1行飛ばしで転記す...
-
ピボット集計した表を、図とし...
-
エクセルのシートを完全にコピー
-
EXCEL VBA シートをコピーする...
-
VBAでエラーメッセージが出ない...
-
【Excel VBA】シートコピー時、...
-
エクセルのワークシートをUSBメ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
Excelの行をコピーして貼り付け...
-
EXCELで別のブックから式をコピ...
-
エクセルでシートを「移動また...
-
【エクセル】プルダウン設定の...
-
エクセルの1シートの内容を複...
-
EXCEL2007でシートをコピーする...
-
Excel シートのコピーの際、ペ...
-
ページの設定を別シートにコピ...
-
CSVファイルについて質問です。
-
エクセルのワークシートをUSBメ...
-
PDFファイルをコピーしてエクセ...
-
エクセルシートを別のエクセル...
-
Excel 数式の保護をしたセルを...
-
ExcelVBAで、ユーザーフォーム...
-
【VBA】コピー&複数個所のペー...
-
エクセルのシートコピーした際...
-
VBA シートをコピー後、ボタン...
おすすめ情報
すみません、一つ追加です。
開いたエクセルファイルをコピーする前に、そのファイルが意図しているファイルかをチェックしたいです。
そのエクセルファイルのセルA1,B1,C1,D1,E1,F2.には、特定の文字が入力されているので、それが全て正しければ上の処理を続ける、正しくなければメッセージを出して処理を終了させたいです。
開いた先のシート名はランダムです。でもワークシートは一つしかありません。
特定の文字は、A1:①、B1:②、C1:③、D1:④、E1:⑤、F2:⑥でお願いします。