この例では、条件の下でシートがExcelで複数のシートに分割する方法について説明します。注:多くのシートで友人(I).deleteこのコードのミス、「データソース」としてデータシート名を分割するには、次の最初のステップに注意を払う、ではないあなたは、この新しいブックをシート1。手動で「データソース」ボタンに変更されました。それとも、ソースワークシート「シート1」を変更する必要があり、「データソース」のコードをもOKされ得ます
CFGZBサブ() バリアントとしての薄暗いmyRange 薄暗いmyarrayの 範囲としての薄暗いtitleRange として文字列の薄暗いタイトル として整数の薄暗いcolumnNum myRange(:=プロンプト= Application.InputBox 「タイトル行を選択してください:」、種類:= 8 ) MyArrayという = WorksheetFunction.Transpose( myRange) セットtitleRange = Application.InputBox(プロンプト:= 「ヘッダーは最初の行でなければならない分割を選択し、そのようなものとして細胞、:」名前「」、タイプ:= 8 ) タイトル = titleRange.Value columnNum = titleRange.Column Application.ScreenUpdating= 偽 Application.DisplayAlerts = Falseの 薄暗いI&、マイアと、編曲、NUM& 薄暗いD、K 私は Sheets.Countへ= 1つのステップ- 1 シート(I).NAME場合、<> " シート1 " 次に シート(I).Delete END IF 次のI セットD =のCreateObject(" Scripting.Dictionary " ) マイア =ワークシート(" シート1 " ).UsedRange.Rows.Count 編曲 =ワークシート(" シート1").Range(セル(2 、columnNum)、細胞(マイア、columnNum)) 方には = 1 にUBound関数(編曲) D(編曲(I、1))= "" 次 のk = d.keysを 私が = 0をUBound関数(k)に 設定CONN =のCreateObject(" ADODB.Connectionの" ) conn.Open " プロバイダ= microsoft.jet.oledb.4.0; =データソースを、拡張プロパティ= 8.0優れ"&ThisWorkbook.FullName のSql = " *から選択[Sheet1の$]ここで"タイトル&&" = ' "&K(I)&" ' " Worksheets.Add後: = シート(Sheets.Count) ActiveSheetで .NAME = K(I) numに = 1 にUBound関数(MyArrayという) .Cells(1、NUM)= myarrayの(NUM、1 ) 次にNUM .Range(" A2 " ).CopyFromRecordset conn.Execute(SQL) で終了 シート(1 ).Selectの シート(1 ).Cells。選択する Selection.Copy ワークシート(Sheets.Count).Activate ActiveSheet.Cells.Select Selection.PasteSpecial貼り付け: = xlPasteFormats、操作:= xlNone、_ SkipBlanks: = Falseを、トランスポーズ:= Falseの Application.CutCopyMode = Falseの 私次 はconn.close セットCONN = 何も Application.DisplayAlerts = Trueの Application.ScreenUpdating = Trueの End Subの
1.(:最高の直接操作が失敗を避けるために、元のデータファイルを操作するのではなく、データの損失PS)のようにコピーし、同じフォルダ内のファイルをマージするには
2.このディレクトリに「合併の.xlsx」を作成します。
「合併の.xlsx」を開くには3.ダブルクリックして
同時に4. ALT + F11
オプション明示的な 複数のブックと組み合わさサブmergeonexlsは()」指定されたワークシート エラーの再開次に 変異体のX1としての暗いX変異体のWとしてブックのWSHとしてとしてワーク 暗いTのブックとしてのTSワークシートとして、整数のLとしてのHとしてロング Application.ScreenUpdating = Falseの Application.DisplayAlerts = Falseの X-Application.GetOpenFilename =(FileFilterの:. =「Excelファイル(* .XLS; *の.xlsx)、 * XLS; *の.xlsx、 すべてのファイル(* *)、*。。 。* "タイトルは:=" Excelは」を選択し、複数選択:= TRUE) に設定T =はThisWorkbook 。指定したワークシートに組み込まれたセットのt.Sheets TS =(1)「、これはシートの最初である L = ts.UsedRange .SpecialCells(xlCellTypeLastCell).Column においてX1に対する各X 場合X1 <>偽そして セットWorkbooks.Open Wは、=(X1) を設定w.Sheets WSHは=(1)「は、所望のワークシートを指定するために結合された、最初の作業場所でありますテーブル ts.UsedRange.SpecialCells = H(xlCellTypeLastCell).Row 場合L = = 1. 1 HおよびAND ts.Cells(1 ,. 1)= ""次に wsh.UsedRange.Copy ts.Cells(1 ,. 1) エルス wsh.UsedRange ts.Cellsは(H + 1 ,. 1).copy もしエンド w.Close END IF 次 Application.ScreenUpdating = Trueの Application.DisplayAlerts = Trueの エンドサブ 順次組み込まれたワークブックの複数に対応するシート内のサブmergeeveryonexlsを()」ワークブックの中に存在するワークシート、即ち、合成二に、第一、第二相当に組み込まれた最初のシートに対応...... 誤差に再開次 変異体としては、同様に、WSHのブックWのバリアントX1としての暗いXワークシートAS 薄暗いT ASワークブック、ワークシートTS AS、AS I整数、整数AS L、AS Hロング Application.ScreenUpdating = Falseの Application.DisplayAlerts = Falseの X = Application.GetOpenFilename(FileFilterの:= "エクセル文件(* .XLS; *の.xlsx)、* XLS; *の.xlsx、所有文件(* *)、*。*。。"、タイトル:= "エクセル选择" 、複数選択:= TRUE) を設定し、T =はThisWorkbook Xの各X1について X1 <>偽そして場合 = Workbooks.Open(X1)集合W iは1〜w.Sheets.Countを=ために I> t.Sheets.CountそしてT場合.Sheets.Add後:= t.Sheets(t.Sheets.Count) セットTS = t.Sheets(I) の設定WSH = w.Sheets(I) L = ts.UsedRange.SpecialCells(xlCellTypeLastCell).Column H = TS .UsedRange.SpecialCells(xlCellTypeLastCell).Row 場合のL = 1及びH = 1、ts.Cells(1、1)= ""次に wsh.UsedRange.Copy ts.Cells(1,1) それ以外 wsh.UsedRange.CopyのTS .Cells(H + 1、1) END IF 次に w.Close END IF 次 Application.ScreenUpdatingは真= Application.DisplayAlerts = Trueの End Subのを
出典ます。https://blog.csdn.net/qq_38545713/article/details/82500483