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

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

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

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

パス

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

ループ

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

解決済

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

sanmaru
sanmaru

総合スコア1

VBA

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

パス

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

ループ

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

1回答

0評価

0クリップ

523閲覧

投稿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の最下行の一つ下に貼り付け

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

sanmaru

2022/03/19 11:36

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

2022/03/19 11:37

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

パス

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

ループ

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