以下のような構文で他のブックからデータ貼付を実行するマクロを作成しています。
最後の値のみ貼付る構文が間違っているようで
「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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
-
4
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
5
EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?
Excel(エクセル)
-
6
Excel>PERSONAL.XLSが開かれているので読み取り専用を推奨されてしまう
Excel(エクセル)
-
7
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
8
ブックを開かずに、フォルダ内にある複数ブックの、特定セルの値を抽出した
Excel(エクセル)
-
9
エクセルマクロで不特定なファイル名を使用するには
Excel(エクセル)
-
10
エクセル マクロ名にブック名が付いた場合の修正方法
Excel(エクセル)
-
11
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
実行時エラー 438 の解決策をおしえてください。
Visual Basic(VBA)
-
14
VBAで任意のファイルを読み出して貼り付けたい
Excel(エクセル)
-
15
毎回変わる範囲を検索し、コピペするマクロについてご教示ください。
Excel(エクセル)
-
16
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
17
エクセルVBA 作業後に選択範囲を解除する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
講義でわからないのですが以下...
-
VBA他のブックから値のみ貼付す...
-
C言語について
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
C言語 家系図
-
「*:*」って何を意味するのでし...
-
[python] 文字列を変数名として...
-
ACCESS テキストボックスを隙...
-
実行時エラー 3020の対策
-
Objective-Cでのエラー
-
vbaでxmlからNodeListでデータ...
-
構造体の各データの表示につい...
-
セグメンテーション違反
-
JSONで文字列が長い時
-
子windowsからsubmit()後にclos...
-
formで特定のinputを送信しない...
-
c言語 16進数の2進数への変換
-
メモリをアドレスを直接指定し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
「*:*」って何を意味するのでし...
-
ACCESS テキストボックスを隙...
-
パイソンプログラミング
-
VBAでPDFのコピーとリネームを...
-
パイソンのクラスのブログラム
-
【メモリ不足で落ちる(python)】
-
[python] 文字列を変数名として...
-
パイソンのクラスについて
-
vscode 文字化け
-
PythonのExperimentに関する質...
-
vbaでxmlからNodeListでデータ...
-
phpでボタンを押したときに変数...
-
UWSC:ポップアップウインドウ...
-
VBA他のブックから値のみ貼付す...
-
構造体の各データの表示につい...
-
コンボボックスのtag情報の取得...
-
VBAで特殊文字を出力したい
おすすめ情報