私はVBAで優れているわけではありません(私の典型的な使用例は、マクロを記録し、何も作成しないでVBAをクリーニングして変更することです)。私はKutoolsを使用してすべてを統合する前に〜300のワークブックをスリム化しようとしています。複数のExcelブックをVBAで解析する
私は統合を可能にするために、これらのブックの不要な部分を削除するために少しのvbaを思いついた。個別ワークブックのいずれかで実行した場合、このコードは問題なく動作します:
Sub PrepWorkbook()
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If Sh.Visible = True Then
Sh.Activate
Sh.Cells.Copy
Sh.Range("A1").PasteSpecial Paste:=xlValues
Sh.Range("A1").Select
End If
Next Sh
Application.CutCopyMode = False
Dim ws As Worksheet
For Each ws In Worksheets
ws.Cells.Validation.Delete
Next ws
Application.DisplayAlerts=FALSE
Sheets("Instructions").Delete
Sheets("Dropdowns").Delete
Sheets("Dropdowns2").Delete
Sheets("Range Reference").Delete
Sheets("All Fields").Delete
Sheets("ExistingData").Delete
Application.DisplayAlerts=TRUE
End Sub
私は私が私の目的に適応しようとしたのです複数のワークブック間で所定のタスクを実行しますStackOverflowの上でコードの優れたビットが見つかりました:
Sub ProcessFiles()
Dim Filename, Pathname As String
Dim wb As Workbook
Pathname = ActiveWorkbook.Path & "\Files\"
Filename = Dir(Pathname & "*.xls")
Do While Filename <> ""
Set wb = Workbooks.Open(Pathname & Filename)
DoWork wb
wb.Close SaveChanges:=True
Filename = Dir()
Loop
End Sub
Sub DoWork(wb As Workbook)
With wb
'Do your work here
.Worksheets(1).Range("A1").Value = "Hello World!"
End With
End Sub
オリジナルのスレッドはここで見つけることができます:私は「「ここにあなたの仕事をする」と「.Worksheets(1).Range( 『A1』)値に私のコードを挿入しようとした Run same excel macro on multiple excel files
= "Hello World!" "元のvba、しかし成功していない。同様に、成功していない複数のExcelワークブックにまたがってマクロを実行するために、私の解析コードをいくつかの他のソリューションに挿入してみました。
呼び出すブックが開いて保存されていますが、実際にコードが実行しようとしている実際の作業は(エラーを記録せずに)起こっていません。私が挿入しているコードの一部が、私が知っているよりももっと知り合っている人にとっては、とても分かりやすい方法で互換性がないと思われます。
誰でもヘルプ/ガイダンスを提供できますか?私は実際には、 "C:\ Temp \ Workbooks"にある300個のワークブックでオリジナルの "PrepWorkbook" VBAを実行する方法についてのコードや指示が必要です
それをやりました!どうもありがとうございます。この昨晩、私は何時間も過ごしました。とても重要なことを前に進んで私を止めていました。 – TechBA
素晴らしい、感謝のために感謝@テッカ。それは私に50点をもたらしたので、今私はこのサイトのクレイジーな人のようにコメントすることができます! VBAの学習後は、F8キーを使用してステップしてください...あなたはそこに着くでしょう! – PGCodeRider