質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

1回答

3742閲覧

転記マクロを実行しても転記されない

sanmaru

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2022/03/19 10:53

昨晩からマクロを勉強している初心者です。
他のエクセルから内容を転記するマクロを作成しております。
転記したいエクセルの一覧をマクロのあるブックのシート1に記載しており、
これを読んで転記するマクロを作成したいと考えております。
参考で転記しているシート1の2列目のファイル名は転記できています。
エラーは対処してでなくなりましたが、肝心の転記がなぜかできません。

どなたかお知恵をお貸しいただけますでしょうか。
下記マクロになります。
エラー対処を行ったせいで煩雑になっているかもしれません。
読みづらかったら申し訳ありません。
以上、よろしくお願いいたします。

Sub 過去事例を全て抽出する()

Dim wb1 As Workbook '抽出元のワークブック代数
Dim wb2 As Workbook '抽出先のワークブック代数
Dim ws1 As Worksheet '抽出元参照のワークシート代数
Dim ws2 As Worksheet '抽出先のワークシート代数
Dim ws3 As Worksheet '抽出元のワークシート代数

Set wb2 = ThisWorkbook 'このブックを指定する
Set ws1 = wb2.Worksheets("仕様差異確認表一覧")
Set ws2 = wb2.Worksheets("仕様差異過去事例")

Dim maxrow1 As Long '参照する最終行の代数
Dim maxrow2 As Long '抽出元の最終行の代数
Dim maxrow3 As Long '抽出先の最終行の代数

maxrow1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row '参照する最終行の指定

Dim i As Long '参照する行の変数
Dim j As Long '抽出先の最終行の変数
Dim k As Long
Dim l As Long
For i = 4 To maxrow1 '参照する行の4行目から最終行まで
Workbooks.Open (ws1.Cells(i, 1)) '4行目から開く

Dim bn As String bn = ws1.Cells(i, 2) Set wb1 = Workbooks(bn) '開いたブックを指定する Set ws3 = wb1.Worksheets(1) maxrow2 = wb1.Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row '抽出元の最終行の変数 maxrow3 = ws2.Cells(Rows.Count, 1).End(xlUp).Row '抽出先の最終行の変数 j = maxrow2 - 14 k = maxrow3 + 1 l = j + k ws2.Range(ws2.Cells(k, 2), ws2.Cells(l, 11)) = ws3.Range(ws3.Cells(14, 1), ws3.Cells(maxrow2, 10)) ws2.Range(ws2.Cells(k, 1), ws2.Cells(l, 1)) = ws1.Cells(i, 2) Application.DisplayAlerts = False wb1.Close Application.DisplayAlerts = True Set wb1 = Nothing Set ws3 = Nothing

Next

Set wb2 = Nothing
Set ws1 = Nothing
Set ws2 = Nothing

End Sub

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
参考)
book1 sheet1:4行1列からエクセルのフルパス
book1 sheet2:2行目まで行タイトル、以下転記スペース
book2 sheet1:14行目から最終行までをコピー→book1 sheet2の最下行の一つ下に貼り付け

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sanmaru

2022/03/19 11:36

閲覧がついていてうれしいです。 以下、経緯がわからないといけないかと思い補足します。 book1 sheet2 : 4行2列からファイル名が記載されています。 フルパスとファイル名自体は別のマクロにてサブフォルダ以下90件程のエクセルを呼び出しています。 ファイル名を読み込む処理が結構重く、ファイル名の呼び出しマクロと中身の転記マクロを分けております。 このマクロが完成次第、sheet1に手入力で追加したエクセルのフルパスを記載し、アクティブセルで転記するマクロを作成予定です。 以上、失礼いたします。
sanmaru

2022/03/19 11:37

上記誤記です。 book1 sheet1 : 4行2列からファイル名です。
guest

回答1

0

ベストアンサー

ws2.Range(ws2.Cells(k, 2), ws2.Cells(l, 11)) = ws3.Range(ws3.Cells(14, 1), ws3.Cells(maxrow2, 10)) ws2.Range(ws2.Cells(k, 1), ws2.Cells(l, 1)) = ws1.Cells(i, 2)

この2行を、下記のように書き換えた場合はどうでしょうか。

ws3.Range(ws3.Cells(14, 1), ws3.Cells(maxrow2, 10)).Copy ws2.Range(ws2.Cells(k, 2), ws2.Cells(l, 11)).PasteSpecial xlPasteValues ws1.Cells(i, 2).Copy ws2.Range(ws2.Cells(k, 1), ws2.Cells(l, 1)).PasteSpecial xlPasteValues

投稿2022/03/19 14:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sanmaru

2022/03/19 14:42

無事に走りました。 リンク切れなどでまま止まってしまうので改善が必要ですが、 一区切りつきました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問