下記を行いたいです。
マクロを実行するワークブックでマクロを実行
↓
最初に任意のエクセルファイルを開く
(これはファイル名がランダムの為、ダイアログボックスを開いてユーザに開きたいファイルを
選択させる)
OpenFileName = Application.GetOpenFilename("Excelブック,*.xlsx")
↓
開いたファイル先のシート(全セル)をコピー
↓
マクロを実行したワークブックの"sheet1”に上記コピーを貼り付け
↓
開いたファイルは保存せずに閉じる(警告メッセージ表示無し)
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(設定ミス)→"目的のシートの整合性が合わなかったので、コピーしないまま閉じます。"のルーチンに入りました。
ユーザ設定のところは合っています。
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" 'カンマ区切りです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
VBA EXCELファイル選択⇒指定セルコピー
Excel(エクセル)
-
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
-
4
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
5
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
6
Exel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について
Visual Basic(VBA)
-
7
エクセルマクロで不特定なファイル名を使用するには
Excel(エクセル)
-
8
VBAで文字列を数値に変換したい
Excel(エクセル)
-
9
【Excel VBA】ブックを複数開いている際、任意のブックをアクティブにしたい
Excel(エクセル)
-
10
Excel VBA別ブックのシートをコピーするには
Visual Basic(VBA)
-
11
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
12
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
13
【Excel VBA】取り込んだファイルのファイル名を取得するには?
Visual Basic(VBA)
-
14
エクセルでエラーが出て困っています。
Excel(エクセル)
-
15
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
16
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
17
エクセルVBAでファイル・シート名を指定して、現在のブックのシートにコピーしたい
Visual Basic(VBA)
-
18
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
19
エクセル マクロ 最終列までを全選択
Excel(エクセル)
-
20
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
【Excel VBA】シートコピー時、...
-
EXCELで別のブックから式をコピ...
-
Excelの行をコピーして貼り付け...
-
エクセルの1シートの内容を複...
-
【エクセル】プルダウン設定の...
-
Excel シートのコピーの際、ペ...
-
ワークシートを別ファイルにコ...
-
ExcelVBAで、ユーザーフォーム...
-
ExcelのVBAで、application.inp...
-
PDFファイルをコピーしてエクセ...
-
excel表のコピー時、列・行幅も...
-
ExcelのBook内のシートを一枚だ...
-
【Excel】数式をそのまま他のシ...
-
エクセルのワークシートをUSBメ...
-
【VBA】コピー&複数個所のペー...
-
EXCELファイルをコピーすると終...
-
エクセルマクロで上書きして貼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel 関数を使ってデータと一...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
【Excel】数式をそのまま他のシ...
-
【VBA】コピー&複数個所のペー...
-
Excelの行をコピーして貼り付け...
-
【エクセル】プルダウン設定の...
-
エクセルのワークシートをUSBメ...
-
Excel シートのコピーの際、ペ...
-
エクセルの1シートの内容を複...
-
エクセルVBA 1行飛ばしで転記す...
-
【Excel VBA】シートコピー時、...
-
エクセルシートを別のエクセル...
-
ExcelVBAで、ユーザーフォーム...
-
エクセルでシートを「移動また...
-
Excel シートに別のExcelシート...
-
Excel 数式の保護をしたセルを...
-
EXCEL2007でシートをコピーする...
-
シートが保護されていないのに...
おすすめ情報
すみません、一つ追加です。
開いたエクセルファイルをコピーする前に、そのファイルが意図しているファイルかをチェックしたいです。
そのエクセルファイルのセルA1,B1,C1,D1,E1,F2.には、特定の文字が入力されているので、それが全て正しければ上の処理を続ける、正しくなければメッセージを出して処理を終了させたいです。
開いた先のシート名はランダムです。でもワークシートは一つしかありません。
特定の文字は、A1:①、B1:②、C1:③、D1:④、E1:⑤、F2:⑥でお願いします。