Excel - Một macro để sao chép các hàng và cột

Vấn đề

Tôi đang làm việc trên một Macro để sao chép từ một sổ làm việc (trang tính) và dán vào một sổ làm việc khác (trang tính)

Office 2007 và Windows XP

Trong sổ làm việc đầu tiên, tôi có tất cả các dữ liệu theo reqs. được lọc. Làm thế nào để nói trong macro để sao chép các bản ghi 'kết quả'? Những hồ sơ kết quả luôn luôn thay đổi.

Tôi đang ghi macro với các bước sau:

  • 1. mở output.xlsx (sổ làm việc đích)
  • 2. ctrl + A (để chọn tất cả dữ liệu đã có) và xóa (tất cả)
  • 3. sổ làm việc nguồn (input.xlsm) sao chép hồ sơ kết quả
  • 4. dán đặc biệt trong sổ làm việc mục tiêu
  • 5. Sổ làm việc Souce và dừng ghi macro

Phần còn lại của macro hoạt động tốt, vấn đề là làm thế nào để thiết lập phạm vi của các bản ghi kết quả mà bạn có thể nói là động.

Dưới đây là Macro, nhưng mã được tạo tự động của nó:

 Sub Macro1 () '' Macro21 Macro '' Workbooks. Mở tên tệp: = _ "O: dataorderrefList-output.xltx" _, có thể chỉnh sửa: = True Selection.CiverseRegion.Select Selection.Clear Range ("A1"). Chọn Windows ( "ReferenceList.xlsm"). Kích hoạt Lựa chọn. Hiện tại. Chọn lựa. Sao chép Windows ("refList-output.xltx"). Kích hoạt Lựa chọn.Paste Dán đặc biệt: = xlPasteColumnWidths, Hoạt động: = xlNone, _ SkipBlanks: = Sai Lựa chọn sai.Paste Dán đặc biệt: = xlPasteFormats, Thao tác: = xlNone, _ SkipBlanks: = false, Transpose: = false Selection.Paste Special Paste: = xlPasteValues, Operation: = xlNone, SkipBlanks _: = false, Transpose A1 "). Chọn Application.CutCopyMode = false ActiveWorkbook.Save Windows (" ReferenceList.xlsm "). Kích hoạt Phạm vi (" Table_Query_from_MS_Access_Database [#Headers, [Order No]] "). 

Nó hoạt động tốt nhưng tôi phải lựa chọn dựa trên hồ sơ kết quả và định dạng khác.

Dung dịch

Đã thử đề nghị của tôi. khi bạn MERELY chọn một lựa chọn dữ liệu được lọc bao gồm cả các ô bị ẩn (ẩn do lọc) thay vào đó bạn phải sử dụng thuộc tính "Specialcells" như gợi ý cho tôi. bạn có thể sửa đổi trên cơ sở đó.

Ngoài ra còn có một điều khoản KHÔNG kích hoạt các cửa sổ khác nhau hoặc chọn các phạm vi khác nhau.

Tôi đã đưa ra giải pháp thay thế cho phần quá khứ của macro của bạn

 ThisWorkbook.Worksheet ("sheet1"). UsedRange.ecialCells (xlCellTypeVisible) .Copy Workbooks ("book4"). Worksheet ("sheet1"). Range ("A1"). Paste Paste Paste: = xlPasteValues, Paste : = xlPasteFormats _, Paste: = xlPasteColumnWidths 

Nếu hai cuốn sách được lưu, bạn nên sử dụng "book4.xls" hoặc "book4.xlsm" "sổ làm việc này có nghĩa là mô-đun của sổ làm việc nơi macro được đỗ, bạn có thể thử sửa đổi macro.

chú thích

Cảm ơn venkat1926 cho mẹo này trên diễn đàn.

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên