ワークブックページを1つのマスタードキュメントに結合しようとすると、1004エラーが発生します。コードはデバイス上で正しく動作しますが、友人デバイスでコードを実行しようとすると1004エラーが発生します。私は彼が2013年には優れていると信じています。私は2016年に秀でています。私のコードを両方のデバイスで使用できるものに変換する方法はありますか?複数のタブをフォルダから1つのタブにコピーするときにVBA 1004エラーが発生する
Sub CombineSheets()
Dim sPath As String
Dim sFname As String
Dim wBk As Workbook
Dim wSht As Variant
Application.EnableEvents = False
Application.ScreenUpdating = False
sPath = InputBox("Enter a full path to workbooks")
ChDir sPath
sFname = InputBox("Enter a filename pattern")
sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal)
wSht = InputBox("Enter a worksheet name to copy")
Do Until sFname = ""
Set wBk = Workbooks.Open(sFname)
Windows(sFname).Activate
Sheets(wSht).Copy Before:=ThisWorkbook.Sheets(1)
wBk.Close False
sFname = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
私はそれを実行したときに、このフォルダの場所の入力を促し、正常に動作し、それが入力された特別ワークシート名から(通常*)からコピーし、コピーする必要があり、どのファイル尋ねます。
現実的には、数百個のExcelファイルから1つのワークシートを抽出し、1つのマスター文書に結合できるコードが必要です。どちらのワークシートを選ぶか選択することができます。
ありがとうございました!
どのラインが例外をスローしますか? – braX
ウィンドウを 'アクティブ化 'しないで、アクティブなブックを暗黙的に参照する非修飾の' Sheets'コレクションを使用しないでください。 'Worksheet'オブジェクトだけで作業する場合は、' Sheets'コレクションの代わりに 'Worksheets'コレクションを使用してください。代わりに 'wBk'ワークブックオブジェクト参照を使用してください。 'wkb.Worksheets(wSht).Copy Before:= ThisWorkbook.Worksheets(1)'。 'ThisWorkbook.Save'を呼び出すのは、' wBk'を閉じた後に暗黙的に再起動されることに頼るのではなくて。 –
また、コードではユーザー入力が有効であるとみなされ、何も検証されません。おそらく入力の検証から始めるでしょうか? –