msoFileDialogFolderPickerを開き、すべてのExcelファイルが開かれ、1つずつデータが新しく開いたブックからコピーされ貼り付けられるフォルダを選択する、マクロのVBAコードに問題がありますマクロが実行されているブックの特定のシートに挿入します。基本的には、営業担当者のそれぞれに売上を補うためのスプレッドシートを与え、その後、スプレッドシートを営業マネージャーに提出します。誰かが各スプレッドシートを開き、データをコピーして1つのスプレッドシートに手動で貼り付けなければならないのではなく、単にこれを行うマクロを持つだけです。ファイルの場所と名前が変更される可能性があるので、私は可能な限り動的にしようとしています。これを行うより良い方法があるかもしれないので、どんな提案も高く評価されます!1つのブックから別のブックにコピーして貼り付けるために、VBAコードで実行時エラー '1004'が表示されるのはなぜですか?
ファイルを開いてコピーすると問題が発生しますが、ランタイムエラー1004 'Range Class Failed'メソッドが表示され、ワークブックに貼り付けられます。マクロを実行しています。私はThisWorkbookとThisWorkbook.Activateを試して、マクロが実行されているスプレッドシートに行くようにExcelに指示しましたが、誰も私の問題を解決しませんでした。時々私はエラーを通過するが、それでもマスターブックのデータを貼り付けることはありません。私は下に私のコードを書いている。確かに、それは主に私が見つけたコードからコピーされていますが、私はそれを自分の目的に合わせようとしました。エラーを表示する行は、 "wb1.Worksheets(1).Range(" A5 ")です。「行」を選択します。
Sub LoopAllExcelFilesInFolder()
Dim wb As Workbook
Dim wb1 As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "Select A Target Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
myExtension = "*.xls*"
myFile = Dir(myPath & myExtension)
Do While myFile <> ""
Set wb = Workbooks.Open(Filename:=myPath & myFile)
Set wb1 = ThisWorkbook
Do events
wb.Worksheets(1).Range("A5:H28").Select
Selection.Copy
wb1.Activate
wb1.Worksheets(1).Range("A5").Select
ActiveSheet.Paste
DoEvents
myFile = Dir
Loop
MsgBox "Task Complete!"
ResetSettings:
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
これは、新しくオープンしたワークブックに複数のワークシートからのものをコピーして、もともとマクロ実行中のワークブックの複数のシートに貼り付ける含ん私は最終的にはするつもりです何の簡易版です。しかし、この時点で、私はこの単純なバージョンを実行して動作させようとしています。長いコードのお手伝いと謝罪のすべてに感謝しますが、皆さんに私が何をしているのかを正確に伝えたいと思います。ありがとう!
オーケー感謝を
wb.Close
を呼び出す必要があります。私はそれが動作するようになっていると思うが、明日再びそれに取り組むことを計画しているので、確実にスレッドを開いたままにしておきたい。また、どのようにループ上にコピー&ペーストするが、既存のデータに上書き/貼り付けをしないようにするにはどうすればいいですか?基本的にすべてのデータは1つのテーブルに格納され、1つはテーブルに格納されます。 msofolderpickerで開いているワークブックの中には90個のエントリがあり、50個しかないものもあります。正確な番号を持つことはできませんので、その意味で動的にする必要があります。 –