VBAスキルが弱いサイトの初心者。私が何日も苦労してきた何かの助けを見つけることができることを願っています. 私は多くの例を見つけましたが、それらを一緒に結婚させることはできません. Excel 2007 を使用しています。「Summary_Reports」WB と、従業員が名前を付けた他のいくつかのワークブック (「Jim.xls」、「bob.xls」など) があります。各従業員ワークブックには、シート「Tasks」をソースとする名前付き範囲「caps」があります。各従業員 wb 内のこの名前付き範囲は、幅 (列数) は同じですが、高さ (行数) が異なる場合があり、一部の行が空になる場合があります。「Summary_Reports」wb にマクロを設定して、各従業員 wb を開き、名前付き範囲「caps」をコピーし、最初の列にデータを含むその範囲の行のみを挿入/貼り付けようとしています。「Summary_Reports」wb の「Report」シートに。最も簡単な貼り付け方法は、一番上のセルを選択して常にそこに行を挿入することだと思いました。そうすれば、各従業員は同じ場所から始まる前の行の上に挿入されます。そうすれば、シートに最後に入力された行を数えたり探したりする必要はありません。最初に "Jim.xls" を開いて名前付き範囲をワークブックから直接コピーしようとしましたが、ほとんど成功せず、構文に多くの問題がありました。そのため、従業員シートを「Summery_Reports」に取り込み、別の wb ではなくそれ自体から名前付き範囲をコピーする以下のコードになりました。おそらく最後にそれらのシートを削除してしまうでしょう。最も簡単な貼り付け方法は、一番上のセルを選択して常にそこに行を挿入することだと思いました。そうすれば、各従業員は同じ場所から始まる前の行の上に挿入されます。そうすれば、シートに最後に入力された行を数えたり探したりする必要はありません。最初に "Jim.xls" を開いて名前付き範囲をワークブックから直接コピーしようとしましたが、ほとんど成功せず、構文に多くの問題がありました。そのため、従業員シートを「Summery_Reports」に取り込み、別の wb ではなくそれ自体から名前付き範囲をコピーする以下のコードになりました。おそらく最後にそれらのシートを削除してしまうでしょう。最も簡単な貼り付け方法は、一番上のセルを選択して常にそこに行を挿入することだと思いました。そうすれば、各従業員は同じ場所から始まる前の行の上に挿入されます。そうすれば、シートに最後に入力された行を数えたり探したりする必要はありません。最初に "Jim.xls" を開いて名前付き範囲をワークブックから直接コピーしようとしましたが、ほとんど成功せず、構文に多くの問題がありました。そのため、従業員シートを「Summery_Reports」に取り込み、別の wb ではなくそれ自体から名前付き範囲をコピーする以下のコードになりました。おそらく最後にそれらのシートを削除してしまうでしょう。そうすれば、シートに最後に入力された行を数えたり探したりする必要はありません。最初に "Jim.xls" を開いて名前付き範囲をワークブックから直接コピーしようとしましたが、ほとんど成功せず、構文に多くの問題がありました。そのため、従業員シートを「Summery_Reports」に取り込み、別の wb ではなくそれ自体から名前付き範囲をコピーする以下のコードになりました。おそらく最後にそれらのシートを削除してしまうでしょう。そうすれば、シートに最後に入力された行を数えたり探したりする必要はありません。最初に "Jim.xls" を開いて名前付き範囲をワークブックから直接コピーしようとしましたが、ほとんど成功せず、構文に多くの問題がありました。そのため、従業員シートを「Summery_Reports」に取り込み、別の wb ではなくそれ自体から名前付き範囲をコピーする以下のコードになりました。おそらく最後にそれらのシートを削除してしまうでしょう。
以下で始めたことはうまくいきますが、私が知っているデータ検証は正しくありません。間違っている場合は修正してください。ただし、「大文字」の左上のセルのみをチェックしています。コンテンツがある場合はすべての「キャップ」を貼り付け、その 1 つのセルが空の場合は何も貼り付けません。すべての行の最初の列をチェックするように検証を修正するにはどうすればよいですか?また、データを含む行を表示するにはどうすればよいですか?
また、最初にシートをインポートせずに、各従業員 wb から直接「caps」データを取得するより良い方法があることも知っています。それが簡単にできるのであれば、その点についてアドバイスをいただければ幸いです。
親切にも私を助けてくれるなら、コードをコピーして貼り付けるだけでなく、実際にコードが何をするのかを知りたいと思っているので、できるだけ控えめにしてください。前もって感謝します。
Sub Import_Sheets()
Application.Workbooks.Open ("jim.xls")
Workbooks("jim.xls").Activate
Sheets("Tasks").Copy After:=Workbooks("Summary_Report.xlsm").Sheets("Report")
Application.Workbooks("Jim.xls").Close
'Go to newly copied sheet and name it.
ActiveSheet.Name = "jim"
'Copy the "caps" named range.
With Range("Caps")
If .Cells(1, 1).Value = "" Then
Else
Range("Caps").Select
Selection.Copy
Sheets("Report").Select
Range("B2").Select
Selection.Insert Shift:=xlDown
End If
End With
End Sub