Copy nhiều workbook, mở bằng Open file Path

Liên hệ QC

themorzer

Thành viên chính thức
Tham gia
24/5/13
Bài viết
95
Được thích
1
Minh có đoạn code sau
Mã:
sub open_path ()
dim wb
Dim wbsource
dim filename
set wb = workbook.worksheet("open")

filename = wb.Application.GetOpenFilename()

wbsource = workbook.open (filename)
wbsource.close False
end sub
Với đoạn code này khi mở file part thì:
- còn xuất hiện workbook xong mới tắt và có hiện Thoòng báo update link, Thoòng báo của VBA chứa trong workbook
- minh muốn copy dữ liệu các cell trong workbok đó nhưng nó mở lên lâu và copy lâu
Làm cách nào để khi mở nó chay nhanh. Vì mình copy rất nhiều workbook
 
Minh có đoạn code sau
Mã:
sub open_path ()
dim wb
Dim wbsource
dim filename
set wb = workbook.worksheet("open")

filename = wb.Application.GetOpenFilename()

wbsource = workbook.open (filename)
wbsource.close False
end sub
Với đoạn code này khi mở file part thì:
- còn xuất hiện workbook xong mới tắt và có hiện Thoòng báo update link, Thoòng báo của VBA chứa trong workbook
- minh muốn copy dữ liệu các cell trong workbok đó nhưng nó mở lên lâu và copy lâu
Làm cách nào để khi mở nó chay nhanh. Vì mình copy rất nhiều workbook
Góp ý cho bạn:
1/ Nên sửa tiêu đề là "Cách copy nhiều workbook".
2/ Nếu copy nhiều workbook thì code trên chưa đúng, bạn nên nêu rõ là cần Copy 1 sheet hay nhiều sheet của nhiều Workbook chứa trong 1 Folder hay bất kỳ Folder, chứ không nêu nội dung chung chung thì chẳng ai hiểu.
 
Upvote 0
Minh có đoạn code sau
Mã:
sub open_path ()
dim wb
Dim wbsource
dim filename
set wb = workbook.worksheet("open")

filename = wb.Application.GetOpenFilename()

wbsource = workbook.open (filename)
wbsource.close False
end sub
Với đoạn code này khi mở file part thì:
- còn xuất hiện workbook xong mới tắt và có hiện Thoòng báo update link, Thoòng báo của VBA chứa trong workbook
- minh muốn copy dữ liệu các cell trong workbok đó nhưng nó mở lên lâu và copy lâu
Làm cách nào để khi mở nó chay nhanh. Vì mình copy rất nhiều workbook
Workbook.open sẽ mở file nhưng không show đè lên file đang chạy code, nhưng do file bạn mở có 1 số lỗi hay thông báo nên nó sẽ hiện lên. Bạn phải rõ những thông báo gì để bỏ qua nó, nếu thông báo update link thì bạn mở file thì cho updatelink = false. Bạn tìm hiểu lại các thông số của workbook.open
 
Upvote 0
Góp ý cho bạn:
1/ Nên sửa tiêu đề là "Cách copy nhiều workbook".
2/ Nếu copy nhiều workbook thì code trên chưa đúng, bạn nên nêu rõ là cần Copy 1 sheet hay nhiều sheet của nhiều Workbook chứa trong 1 Folder hay bất kỳ Folder, chứ không nêu nội dung chung chung thì chẳng ai hiểu.
Mình open 1 Lần cho 1 file. Nhưng open nhiều lần cho nhiều file. Minh có nhiều button cho mỗi workbook
- open file workbook mà mình chọn. Xong copy sheet đã định sẵn.
Vì mỗi L
 
Upvote 0
Góp ý cho bạn:
1/ Nên sửa tiêu đề là "Cách copy nhiều workbook".
2/ Nếu copy nhiều workbook thì code trên chưa đúng, bạn nên nêu rõ là cần Copy 1 sheet hay nhiều sheet của nhiều Workbook chứa trong 1 Folder hay bất kỳ Folder, chứ không nêu nội dung chung chung thì chẳng ai hiểu.
Tức là ơ workbook chính có khoảng 12 button. Sao đó mỗi button đó sẽ dẫn file Path để open worksshet và copy vào 12 sheet cho workbook chính. Nhưng mỗi file đó ơn mỗi chỉ khác nhau
 
Upvote 0
Mình open 1 Lần cho 1 file. Nhưng open nhiều lần cho nhiều file. Minh có nhiều button cho mỗi workbook
- open file workbook mà mình chọn. Xong copy sheet đã định sẵn.
Vì mỗi L
Thay đổi loại Office tại A3 sheet TRANG CHỦ, khi nhấn nút chọn 1 hay nhiều File là tùy, mỗi File có bao nhiêu sheet thì lấy hết.
Lưu ý:
Nếu mỗi sheet có tiêu đề giống nhau thì tìm bài viết về gộp nhiều sheet vào 1 sheet.
 

File đính kèm

Upvote 0
Thay đổi loại Office tại A3 sheet TRANG CHỦ, khi nhấn nút chọn 1 hay nhiều File là tùy, mỗi File có bao nhiêu sheet thì lấy hết.
Lưu ý:
Nếu mỗi sheet có tiêu đề giống nhau thì tìm bài viết về gộp nhiều sheet vào 1 sheet.
dữ liệu mình không cần lấy nhiều sheet, minh định sẵn là 1 sheet, và co khoảng hơn 10 như file đính kèm, mỗi button là 1 file excel để lấy dữ liệu ở mỗi nơi khác nhau và tạo ra từng sheet copy file ứng với mỗi file đã chọn ở button
 

File đính kèm

Upvote 0
dữ liệu mình không cần lấy nhiều sheet, minh định sẵn là 1 sheet, và co khoảng hơn 10 như file đính kèm, mỗi button là 1 file excel để lấy dữ liệu ở mỗi nơi khác nhau và tạo ra từng sheet copy file ứng với mỗi file đã chọn ở button
1.Đùa à? gởi file có macro mà phần mở rộng là .xlsx ?
2. Người hỏi là @themorzer sao bạn chen ngang? Hay 2 thành viên này là một người?
 
Upvote 0
dữ liệu mình không cần lấy nhiều sheet, minh định sẵn là 1 sheet, và co khoảng hơn 10 như file đính kèm, mỗi button là 1 file excel để lấy dữ liệu ở mỗi nơi khác nhau và tạo ra từng sheet copy file ứng với mỗi file đã chọn ở button
Không cần làm nhiều nút vậy đâu, chỉ cần 1 nút là đủ.
1/ Trong ổ D, tạo 1 Folder có tên là THEO_DOI, để tất cả các File cần Copy 1 sheet vào đây.
2/ Sheet nào muốn Copy thì di chuyển nó lên sheet đầu (bên trái), xem hình.
3/ Mở File COPY SHEET NHIEU FILE và nhấn nút nó sẽ Copy sheet đầu tiên của tất cả các File chứa trong Folder có tên là THEO_DOI vào, tên sheet mới là tên của sheet đầu tiên ở mỗi File.

A_Copy.JPG
 

File đính kèm

Upvote 0
Không cần làm nhiều nút vậy đâu, chỉ cần 1 nút là đủ.
1/ Trong ổ D, tạo 1 Folder có tên là THEO_DOI, để tất cả các File cần Copy 1 sheet vào đây.
2/ Sheet nào muốn Copy thì di chuyển nó lên sheet đầu (bên trái), xem hình.
3/ Mở File COPY SHEET NHIEU FILE và nhấn nút nó sẽ Copy sheet đầu tiên của tất cả các File chứa trong Folder có tên là THEO_DOI vào, tên sheet mới là tên của sheet đầu tiên ở mỗi File.

View attachment 199305
1. mình đã Test chương trình của bạn và áp dụng. Có 1 vấn đề nữa là. Mình muốn hiện tên mỗi workbook đã mở trong sheet tổng tương ứng với các cột từ ,B,C,D,E,......
2. Lấy dữ liệu từ các sheet đã copy qua sheet chính
vd: tại B7 của sheet chính là giá trị của ô H7 sheet 1. Ô C7 lấy giá trị oi H7 sheet 2.Ô D7 lấy giá trị oi H7 sheet 3....
3. mình có đoạn code sau:
Mã:
Sub stt1()
Dim run As Long
Dim wbDst As Workbook
Set wbDst = ThisWorkbook
For run = 2 To wbDst.Worksheets.count
              stt (run)
             ' run = run + 1
              Next run
End Sub
Sub stt(st As Long)
Dim SrcRng As Range, Arr, stti As Long, n As Long, stt As Long
             Dim wsstt As Worksheet
            'Dim wb As Workbook
             On Error Resume Next
  Set wbDst = ThisWorkbook
            
             Set wsstt = wbDst.Worksheets(st)
 
            Set SrcRng = wsstt.Range([B8], [B1000].End(xlUp))
            Arr = SrcRng.Value
 
             For stti = 1 To UBound(Arr, 1)
                 If Arr(stti, 1) <> "" Then
                n = n + 1
                     Arr(stti, 1) = n
             End If
                Next
                              
 ' wsstt.Range("A8:A700").End(xlUp).Value = Arr
                 SrcRng.Offset(, -1).Value = Arr
End Sub
để đánh số thứ tự cho cac Sheet đã copy, nhưng chỉ đánh được cho Sheet đầu tiên, các Sheet còn lại nó k đánh
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom