以下のような構文で他のブックからデータ貼付を実行するマクロを作成しています。
最後の値のみ貼付る構文が間違っているようで
「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(エクセル)
-
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
5
EXCEL VBAで、PasteSpecialと Destinationの組み合わせ方法?
Excel(エクセル)
-
6
Excel VBAで同じフォルダ内のファイルを開くには?
Excel(エクセル)
-
7
エクセル:シート名を手入力でなく、セル「A1」の文字を出したい。
Excel(エクセル)
-
8
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
11
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
12
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
フレームの分割について
-
構造体の各データの表示につい...
-
int(input("○○"))の使い方
-
PerlでXMLを解析して出力する。
-
PICで世界時計を作りたいのですが
-
整数でないとき
-
CGI メールフォームからBCCのア...
-
CGI初心者です
-
1つのプログラム内で"html出力...
-
JSONで文字列が長い時
-
確認画面に空白がでます
-
optionのselectedは更新時は効...
-
perlがうごきません
-
awkの正規表現での最左最短マッ...
-
javaのパッケージ構成で各パッ...
-
前日の日付取得するには?
-
フォーム選択後のリンクを作る方法
-
Use of uninitialized value ---
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
FindFirst を複数条件で検索
-
VBAでPDFのコピーとリネームを...
-
「*:*」って何を意味するのでし...
-
ACCESS テキストボックスを隙...
-
構造体の各データの表示につい...
-
phpでボタンを押したときに変数...
-
VBA他のブックから値のみ貼付す...
-
[python] 文字列を変数名として...
-
vbaでxmlからNodeListでデータ...
-
UWSC:ポップアップウインドウ...
-
コンボボックスのtag情報の取得...
-
MSXMLでの属性の存在確認法
-
エクセルVBA シート名の部分一...
-
C++ コマンドプロンプトでの入...
-
【メモリ不足で落ちる(python)】
-
2つのpythonがあって、一方で...
-
pythonで実体参照文字を直す方法
-
Option Strinct On のなかでの...
おすすめ情報