どなたかご教授いただければ幸いです。
エクセルファイルAの4行目の値全てを、デスクトップ上 エクセルファイルBの最終行に
値貼りつけしたいのですが、うまく動作しません。
一旦、下記コードのようにエクセルファイル4行目の値を値貼りつけしてから実行するとうまくいきました。
ただ、転記したいファイルAの4行目には関数を入れているため、できれば関数はそのまま残したいのでエラー保護含め改善策をお教えいただければ幸いです。
※補足
ファイルBにはデータを集めていきますので、最終行を取得して保存しております。
Sub 管理_保存()
Set WSH = Create Object("Wscript .Shell")
''Dim Desktop Path As String
Desktop Path = WSH .SpecialFolders("Desktop")
Application .Screen Updating = False ''画面停止
str Msg = "個人管理表に追加しますか?"
int Ret = Msg Box(str Msg, vb Yes No, "Msg Box")
If int Ret = vb No Then Exit Sub
Sheets("ファイルA").Select
Range("A4:T4").Select
Application .Cut Copy Mode = False
Selection .Copy
Selection .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone , SkipBlanks _
:=False, Transpose:=False
Rows("4:4").Select
Selection .Copy
Range("A1").Select
Workbooks .Open Filename:= Desktop Path & "\管理\ファイルB.xlsx"
n = Cells(Rows .Count, "A").End(xlUp).Row + 1
Range("A" & n).Select
ActiveSheet .Paste
Cells .Select
Application .CutCopyMode = False
Selection .Copy
Selection .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone , SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook .Save
ActiveWindow .Close
Application . ScreenUpdating = True ''画面再開
Set WSH = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは、
エディターの問題でしょうか?変数内やプロパティなどの前にある半角スペースが気になります。。コンパイルできていますか?投稿用に書き直したのでしょうか、あと、型はともかくとして、変数は宣言しましょう。
ご質問のコードをコピペで回答します。
>一旦、下記コードのようにエクセルファイル4行目の値を値貼りつけしてから実行するとうまくいきました。
なるほど、それで同じ場所に.PasteSpecial Paste:=xlPasteValues しているのですね。
取り敢えず、
>ファイルAの4行目には関数を入れているため、できれば関数はそのまま残した であるなら、不要なので削除
Workbooks .Open Filename:= Desktop Path & "\管理\ファイルB.xlsx"
ここは、取り敢えず開かれると仮定して
目的のシートが表示されている保証はありますか?例えばファイルB.xlsxはシートが1つしかないのであれば良いのですが、、、どうでしょう?
(自分使用のツール、プログラムなら良いけれど、目的シートを表示させるくらいは必要かと)
ここを値貼り付けにすればよいのです。
多分、自動記録を改造したものなのでしょうが、普通のコピペになっていますね。
Rows("4:4").Select
Selection .Copy
Range("A1").Select
Workbooks .Open Filename:= Desktop Path & "\管理\ファイルB.xlsx"
n = Cells(Rows .Count, "A").End(xlUp).Row + 1
Range("A" & n).Select
ActiveSheet .Paste
Cells .Select
Application .CutCopyMode = False
なさりたい事は
Aブックの"ファイルA"シート内容をBブックのどこか解らないシートの最終行から下に値貼り付けするのですよね。
自動記録でもう一度この動作を記録してみましょう。
記録する時は、あらかじめBブックを開いておきます。
多分、
Rows("4:4").Select
Selection.Copy
Windows("Bブック.xlsx").Activate
Rows("4:4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
Windows("Aブック.xlsm").Activate
こんな感じかな、、で
Windows("Bブック.xlsx").Activate は開いている時の対象なので
これを、
Workbooks .Open Filename:= Desktop Path & "\管理\ファイルB.xlsx"
n = Cells(Rows .Count, "A").End(xlUp).Row + 1
Range("A" & n).Select
とすれば、値貼り付けが出来ると思います。
あと、気になるのは
Application .Screen Updating = False ''画面停止
のタイミング、現状は、NOで抜けるとそのままになりますよ。
なので、実行時のみで良いと思います。
>エラー保護含め改善策をお教えいただければ幸いです。
色々必要ですが、先に挙げたシートの問題やブックが無かった時の処理などですかね。
=行ってほしいところ=
そこに行く前に、
変数宣言、作成したプロシージャのデバッグ(コンパイル)と
この時2つのブック、2つのシートが登場しますが、ブック、シートを変数にセットするかWithなどで(明示して)まとめ、整理してみましょう
Select Selectionの添削なども考えてみましょう。
=行ってほしいところEnd=
正直、コードを書く方が簡単なのだけれど、頑張りました。
エラールーチンの追加は、限定条件で良いので期待する結果が出力されるコードを作ってからに、で良いでしょうか。
ご回答ありがとうございます。
早速試してみます。
変数、スペースがあるのは、なにかしらが引っかかって質問NGになってしまったので、コードがのせいかと思いスペース等をいれておりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
ワイルドカード「*」を使うとう...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
別ブックをダイアログボックス...
-
エクセルのマクロについて教え...
-
エクセルのマクロを使ってメー...
-
【困っています2】VBA 追加処...
-
エクセルVBAが途中で止まります
-
マクロで最終行を取得したい
-
エクセルのマクロについて教え...
-
拡張メタファイルにて貼り付け
-
【ご教示ください】VBAの記述方...
-
ExcelのVBAです。フォルダ内の...
-
VBAで複数のブックを開かずに処...
-
EXCEL VBA 単語置き換え につい...
-
Excelのマクロコードについて教...
-
【マクロ】違うフォルダにある...
-
【ExcelVBA】インデックスが有...
-
vbaでvbaProjectのパスワード解...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
ワイルドカード「*」を使うとう...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBS Bookを閉じるコード
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】zip圧縮されたCSV...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
ExcelのVBAです。フォルダ内の...
-
vbaで他のブックに転記したい。...
-
フォルダ内の全てのファイルに...
-
VBAで複数のブックを開かずに処...
-
VBSでExcelのオープン確認
-
VBA 実行時エラー 2147024893
-
【Excel VBA】書き込み先ブック...
-
VBA シート名が一致した場合の...
おすすめ情報