これを説明するために最善を尽くします。うまくいけば、スクリプトのメモが私のとりとめのないことを明確にします。簡単に言えば、このスクリプトは完了すると、過去の生産シートをめくって、これらのシートから選択したデータを 1 つにコンパイルします。現在のコード内では、貼り付ける次の空のセルを特定するときに、Replace() の出力を正しく機能させるのに問題があります。ワーク ブック セクションを読み始めるときに必要なコード変更の量を制限しようとしています。それが理にかなっていることを願っています。「コピーペーストには、限られた変更で過去をコピーするコードが必要でした。私のアイデアは、ターゲット列を変更するだけで済みました。」私のスキルは限られていますが、私は学んでいるので、方法やデザインについてアドバイスやフィードバックをお気軽にお寄せください. 現在、columnCEL変数が範囲選択で機能する方法をデバッグしようとして困惑しています。誰かが私にくれた建設的なものは何でも感謝します。リンク、情報ソースなど、私はこのサイトやその他のサイトを何時間もサーフィンしてきましたが、いくつかのことがわかりました...
Sub parse()
Dim strPath As String
Dim columnCEL As String
Dim lastrow As Range
'open WB to consolidate too
Workbooks.Open "c:\prodplan\compiled\plancon.xlsx"
Set lastrow = ActiveSheet.UsedRange.End(xlDown).Offset(1, 0)
Set objexcel = CreateObject("Excel.Application")
objexcel.Visible = True
objexcel.DisplayAlerts = False
strPath = "C:\prodplan"
Set objfso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objfso.GetFolder(strPath)
'Loop through objWorkBooks
For Each objfile In objFolder.Files
If objfso.GetExtensionName(objfile.Path) = "xlsx" Then
Set objworkbook = objexcel.Workbooks.Open(objfile.Path)
objworkbook.Worksheets("plan").Select
'start header dates and shifts copy from objworkbook to consolidated WB
objworkbook.Worksheets("plan").Range("b6:p7").Select
Selection.copy
Workbooks("plancon.xlsx").Worksheets("data").Range("B1").Select
lastrow.Select
ActiveCell.PasteSpecial
'start loop for objworkbook name copy to field in plancon corisponding with date/shift and copy/past select row data.
objworkbook.Close False
'Move proccesed folder to new Dir
End If
'remove msgbox after debug
MsgBox "loop stoper remove for final application"
Next
objexcel.Quit
End Sub
"destination WB "Plancon table structure
Date shift day Total sales Inventory Travel
source WB NAME Thurs Night 3429
source WB NAME Fri Day 2735
source WB NAME Fri Night 5294
source WB NAME Sat Day 7672
source WB NAME Sat Night 0
Source structure
Shift: Thurs Fri Fri
Shift: Night Day Night
Date: 40360 40361 40361
Total sales 3429 2735 5294
Inventory 1750.5045 1685.854 3374.3956
Travel
ティム、アンディ、お時間をありがとう。あなたはどちらも正しいです。それはオフセット(1,0)でなければなりません。ティムは、宛先のワークブックを開いたときのアクティブセルに関して、「a1」に設定しましたが、指定された列に貼り付ける前にコードがLastcellをアクティブに設定するため、必要ないという考えでそれを削除しましたペーストごとにハードコードされます。貼り付けのために新しい列を入力するたびに、最後の行の指定を変更する必要がない方法を見つけようとしていました。Andy の提案は、私にとって物事を単純化してくれると信じています。例と理解のために他のコードを検索すると、usedrange が表示されませんでした」 提案を反映するようにコードを更新しました。ソース テーブルと宛先テーブルの例も追加しました。ソース テーブルには、例の形式で宛先 WB にコピーされる約 78 行のラベルが含まれています。完璧な世界では、すべての転置ペーストを選択すると、そこにたどり着きます。残念ながら、ガベージが多すぎて、手動で 87+ WB をフィルタリングするのは魅力的ではありませんでした。比較と等しいコピー範囲のいずれかでループする必要があります。または、ソース内の各行のコピー範囲と等しい検索。どちらがより速く/より生産的かについてのアドバイスはありますか? いずれにせよ、あなたの助けに感謝します/響板であること. どちらがより速く/より生産的かについてのアドバイスはありますか? いずれにせよ、あなたの助けに感謝します/響板であること. どちらがより速く/より生産的かについてのアドバイスはありますか? いずれにせよ、あなたの助けに感謝します/響板であること.