
以下のような構文で他のブックからデータ貼付を実行するマクロを作成しています。
最後の値のみ貼付る構文が間違っているようで
「Rangeクラスのcopyメソッドが失敗しました。」エラーメッセ―ジが出てしまいます。
どこが間違っているのでしょうか?
Option Explicit
Public Sub Macro1()
Dim Thisbook_path As String
Dim Excel_path As String
Dim Excel_name As String
'実行中のマクロが記述されているブックのフォルダへの絶対パス
Thisbook_path = ThisWorkbook.Path
Excel_path = Thisbook_path & "\" & Worksheets("本店").Cells(4, 1).Value & ".xlsm"
Excel_name = Worksheets("本店").Cells(4, 1).Value & ".xlsm"
MsgBox (Excel_name)
If Dir(Excel_path) = "" Then
MsgBox (Excel_path & "が存在しません")
Exit Sub
End If
Workbooks.Open Excel_path
ThisWorkbook.Activate
Workbooks(Excel_name).Worksheets("集計").Range("B1").Copy Destination:=Worksheets("本店").Range("B20").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Workbooks(Excel_name).Close
End Sub
No.3ベストアンサー
- 回答日時:
細かな所までは見ていませんが、ほんのちょっとの、微妙な所ではないでしょうか。
>ThisWorkbook.Activate
これが要らないと思います。
最後にブックを締めるときに邪魔にならないように、False を入れました。
'//
Public Sub Macro1()
Dim Thisbook_path As String
Dim Excel_path As String
Dim Excel_name As String
Thisbook_path = ThisWorkbook.Path
Excel_name = ThisWorkbook.Worksheets("本店").Cells(4, 1).Value & ".xlsm"
Excel_path = Thisbook_path & "\" & Excel_name
MsgBox (Excel_name)
If Dir(Excel_path) = "" Then
MsgBox (Excel_path & "が存在しません")
Exit Sub
End If
Workbooks.Open Excel_path 'Activate を抜きました。
Workbooks(Excel_name).Worksheets("集計").Range("B1").Copy
ThisWorkbook.Worksheets("本店").Range("B20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Workbooks(Excel_name).Close False '←ここにFalse を加えました。
End Sub
大変わかりやすく教えて頂きまして、誠に有難うございました。
無事に動作することができ、大変大変助かりました。
心より御礼申し上げます。
ありがとうございました。
No.2
- 回答日時:
失礼。
ファイルの有無チェックまで消してしまいましたが そっちは残しておいた方がいいですね。
ご回答いただきまして誠に有難うございました。
コピーするセルが1セルになっておりましたが、実際はもっと広い範囲指定をして使用するものでした。
最初に貼付した構文が間違っておりまして、かえってご迷惑をおかけしてしまいましたことお詫び申し上げます。
でも、新しい考え方を教わりましたので、今後に生かしていきたいと思います。
ご教授ありがとうございました。
No.1
- 回答日時:
最後の方が訳の分からない状態になってますね。
ただ見たところコピーするのは1セルなんですよね。だったらコピーなんてしなくても
数式で外部参照して その数式を値に戻せばいいんじゃないですか?
Dim Excel_name As String
Dim siki As String
Excel_name = Worksheets("本店").Cells(4, 1).Value & ".xlsm"
siki = "='" & ThisWorkbook.Path & "\[" & Excel_name & "]集計'!B1"
With Worksheets("本店").Range("B20")
.Formula = siki
.Value = .Value
End With
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
スキン式掲示板のしくみ
-
GAEでエンティティからキーやID...
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
構造体の各データの表示につい...
-
実行時エラー 3020の対策
-
vbaでxmlからNodeListでデータ...
-
年・月・日の3つのselectメニュ...
-
日付をファイルの名前にするには?
-
メモリをアドレスを直接指定し...
-
PHPのstrtotimeのようなものあ...
-
ホストの表示など
-
10進数→2進数
-
配列 各項目を$n倍するプログ...
-
Requireできない...
-
JSONで文字列が長い時
-
HTML内での分岐
-
pythonの*
-
definedはどんな時に使う?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
ACCESS テキストボックスを隙...
-
[python] 文字列を変数名として...
-
vbaでxmlからNodeListでデータ...
-
VBAでPDFのコピーとリネームを...
-
コンボボックスのtag情報の取得...
-
【メモリ不足で落ちる(python)】
-
構造体の各データの表示につい...
-
構造体の変数の値を、動的に取...
-
phpでボタンを押したときに変数...
-
VBAで特殊文字を出力したい
-
C言語でテキストを抽出
-
PHP+SQLiteでmax(id)が使えない?
-
「*:*」って何を意味するのでし...
-
C++ コマンドプロンプトでの入...
-
2つのpythonがあって、一方で...
-
VBAでシート名の定義を変更した...
-
GUI操作のCUI化
おすすめ情報