![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
以下のような構文で他のブックからデータ貼付を実行するマクロを作成しています。
最後の値のみ貼付る構文が間違っているようで
「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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
-
4
EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?
Excel(エクセル)
-
5
エクセルで参照しているデータを常に最新の状態にしたい
Excel(エクセル)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
8
VBAで重複するデータがあれば1個だけ残して他の重複セルを"(空白)にしたいのですが
Excel(エクセル)
-
9
エクセルマクロで不特定なファイル名を使用するには
Excel(エクセル)
-
10
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
11
別シートの最終行に貼り付けするマクロを教えてください。 シートYのE3からE15までをコピー シート
Excel(エクセル)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
ACCESS テキストボックスを隙...
-
コンボボックスのtag情報の取得...
-
VBAでPDFのコピーとリネームを...
-
構造体の各データの表示につい...
-
MSXMLでの属性の存在確認法
-
phpでボタンを押したときに変数...
-
FindFirst を複数条件で検索
-
[python] 文字列を変数名として...
-
UWSC:ポップアップウインドウ...
-
VBA他のブックから値のみ貼付す...
-
JSONで文字列が長い時
-
メモリをアドレスを直接指定し...
-
python3について。
-
16進の10進変換について
-
実行中の変数の中身をイミディ...
-
VB6で、長い時間かかる処理...
-
テーブル内でドロップダウンメ...
-
<SELECT>タグの折り返し
-
perlでcheckboxがうまく整理で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
「*:*」って何を意味するのでし...
-
ACCESS テキストボックスを隙...
-
構造体の各データの表示につい...
-
phpでボタンを押したときに変数...
-
VBA他のブックから値のみ貼付す...
-
[python] 文字列を変数名として...
-
vbaでxmlからNodeListでデータ...
-
UWSC:ポップアップウインドウ...
-
コンボボックスのtag情報の取得...
-
エクセルVBA シート名の部分一...
-
MSXMLでの属性の存在確認法
-
C++ コマンドプロンプトでの入...
-
【メモリ不足で落ちる(python)】
-
2つのpythonがあって、一方で...
-
pythonで実体参照文字を直す方法
-
Option Strinct On のなかでの...
おすすめ情報