Cháu Chào mọi người cho cháu hỏi làm cách nào xuất dữ liệu ra file khác không cần mở lên

Liên hệ QC

1+1=2

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
5/7/20
Bài viết
62
Được thích
12
Cháu chào các cô chú diễn đàn. Năm nay cháu học năm 2 IT. cháu rất thích học code VBA. có 1 vấn đề cháu cần hỏi là
có cách nào để xuất 1 vùng của file đang mở sang file đang đóng ( mà không cần mở file đang đóng lên )
Ví dụ: Cháu có 2 file ( Home và Data), cháu muốn xuất 1 vùng B5:E44 của File home sang vùng B5:E44 của file Data đang đóng ( mà không cần mở file rồi chạy code rồi đóng lại ). Rất mong các cô chú chỉ giáo. cháu cảm ơn
 

File đính kèm

  • Home.xlsb
    8.3 KB · Đọc: 7
  • data.xlsb
    7.4 KB · Đọc: 7
Bài về cái này ở đây nhiều như quân Nguyên. Có đến khoảng 50% người hỏi về "trích dữ liệu" đã có đặt điều kiện"không mở" rồi.
 
Upvote 0
Nếu làm như bạn muốn thì không nói làm gì. Nhưng nếu tôi cố tình mở tập tin, rồi thêm dữ liệu và cuối cùng đóng tập tin thì sao? Sếp không chấp nhận? Tôi nghĩ, mục đính luôn là hoàn thành công việc. Nhưng ở đây nếu mở tập tin thì dù làm được công việc sếp vẫn không chấp nhận? Hay đây không phải vấn đề sếp hay quản lý, mà là vấn đề thách đố?
 
Upvote 0
Nếu làm như bạn muốn thì không nói làm gì. Nhưng nếu tôi cố tình mở tập tin, rồi thêm dữ liệu và cuối cùng đóng tập tin thì sao? Sếp không chấp nhận? Tôi nghĩ, mục đính luôn là hoàn thành công việc. Nhưng ở đây nếu mở tập tin thì dù làm được công việc sếp vẫn không chấp nhận? Hay đây không phải vấn đề sếp hay quản lý, mà là vấn đề thách đố?
dạ chắc chú hiểu nhầm ý của cháu. Ý là làm sao cũng được mà đừng mở Thủ công file cần dán vào thôi. code sao cũng được miển sao kết quả cuối cùng đúng là được à chú
tại cháu đang dùng code này

Mã:
Sub chepdulieu() ' Code o File A
Workbooks("FileB.xlsb").Worksheets("Sheet1").Range("A1:C5").Value = Workbooks("FileA.xlsb").Worksheets("Sheet1").Range("A1:C5").Value
End Sub

Nhưng để chạy được Cháu phải mờ thủ công 2 file lên ạ
Bài đã được tự động gộp:

Bài về cái này ở đây nhiều như quân Nguyên. Có đến khoảng 50% người hỏi về "trích dữ liệu" đã có đặt điều kiện"không mở" rồi.

dạ chắc chú hiểu nhầm ý của cháu. Ý là làm sao cũng được mà đừng mở Thủ công file cần dán vào thôi. code sao cũng được miển sao kết quả cuối cùng đúng là được à chú
tại cháu đang dùng code này

Mã:
Sub chepdulieu() ' Code o File A
Workbooks("FileB.xlsb").Worksheets("Sheet1").Range("A1:C5").Value = Workbooks("FileA.xlsb").Worksheets("Sheet1").Range("A1:C5").Value
End Sub

Nhưng để chạy được Cháu phải mờ thủ công 2 file lên ạ
 
Upvote 0
Nếu làm như bạn muốn thì không nói làm gì. Nhưng nếu tôi cố tình mở tập tin, rồi thêm dữ liệu và cuối cùng đóng tập tin thì sao? Sếp không chấp nhận? Tôi nghĩ, mục đính luôn là hoàn thành công việc. Nhưng ở đây nếu mở tập tin thì dù làm được công việc sếp vẫn không chấp nhận? Hay đây không phải vấn đề sếp hay quản lý, mà là vấn đề thách đố?
Như toi đã nói ở bài #2. Tôi e không phải thách đố gì cả, mà nó chỉ là một hiện tương (phát sần) phổ biến ở GPE thôi.
GPE là cái ổ code "trùng máu" mờ.
 
Upvote 0
dạ chắc chú hiểu nhầm ý của cháu. Ý là làm sao cũng được mà đừng mở Thủ công file cần dán vào thôi. code sao cũng được miển sao kết quả cuối cùng đúng là được à chú
tại cháu đang dùng code này

Mã:
Sub chepdulieu() ' Code o File A
Workbooks("FileB.xlsb").Worksheets("Sheet1").Range("A1:C5").Value = Workbooks("FileA.xlsb").Worksheets("Sheet1").Range("A1:C5").Value
End Sub

Nhưng để chạy được Cháu phải mờ thủ công 2 file lên ạ
Bài đã được tự động gộp:



dạ chắc chú hiểu nhầm ý của cháu. Ý là làm sao cũng được mà đừng mở Thủ công file cần dán vào thôi. code sao cũng được miển sao kết quả cuối cùng đúng là được à chú
tại cháu đang dùng code này

Mã:
Sub chepdulieu() ' Code o File A
Workbooks("FileB.xlsb").Worksheets("Sheet1").Range("A1:C5").Value = Workbooks("FileA.xlsb").Worksheets("Sheet1").Range("A1:C5").Value
End Sub

Nhưng để chạy được Cháu phải mờ thủ công 2 file lên ạ
Vậy bạn mở file đó lên bằng code theo đường link là được.
 
Upvote 0
Cháu chào các cô chú diễn đàn. Năm nay cháu học năm 2 IT. cháu rất thích học code VBA. có 1 vấn đề cháu cần hỏi là
có cách nào để xuất 1 vùng của file đang mở sang file đang đóng ( mà không cần mở file đang đóng lên )
Ví dụ: Cháu có 2 file ( Home và Data), cháu muốn xuất 1 vùng B5:E44 của File home sang vùng B5:E44 của file Data đang đóng ( mà không cần mở file rồi chạy code rồi đóng lại ). Rất mong các cô chú chỉ giáo. cháu cảm ơn
Đặt Code sau trong file Home, file Home và file Data nằm chung thư mục. Xong chạy thử code nhé.

Mã:
Sub ChenDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\data.xlsb;Extended Properties=Excel 12.0"
        .Execute ("INSERT INTO [Data$B4:E10000] SELECT [STT],[Names],[SL],[Amount] FROM [EXCEL 12.0;Database=" & ThisWorkbook.FullName & "].[Data$B4:E1000] where STT is not null")
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Đặt Code sau trong file Home, file Home và file Data nằm chung thư mục. Xong chạy thử code nhé.

Mã:
Sub ChenDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\data.xlsb;Extended Properties=Excel 12.0"
        .Execute ("INSERT INTO [Data$B4:E10000] SELECT [STT],[Names],[SL],[Amount] FROM [EXCEL 12.0;Database=" & ThisWorkbook.FullName & "].[Data$B4:E1000] where STT is not null")
    End With
End Sub

cho cháu hỏi sao cháu Sửa tiêu đề ( Stt, Name, SL, Amout ) thì chạy code nó báo lỗi. có cách nào để bỏ qua tiêu đề không chú
1594101303137.png

2 file cháu cho chung 1 thư mục rồi. TRƯỜNG hợp cháu không sửa tiêu đề thì code chạy xong ( không báo lổi ) mà mở kiểm tra file data thì thấy không có dữ liệu gì hết

1594101392180.png


Với lại cháu có tạo 1 ô chứa đường dẩn file data. Chú có thể kết vối với ô B1 được không. để sau này file data cháu để thư mục khác thì cháu chỉ sửa lại đường dẫn tại ô B1

1594101571029.png
 

File đính kèm

  • Data.xlsb
    14.2 KB · Đọc: 5
  • HOME.xlsb
    19.2 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
cho cháu hỏi sao cháu Sửa tiêu đề ( Stt, Name, SL, Amout ) thì chạy code nó báo lỗi. có cách nào để bỏ qua tiêu đề không chú
View attachment 240674

2 file cháu cho chung 1 thư mục rồi. TRƯỜNG hợp cháu không sửa tiêu đề thì code chạy xong ( không báo lổi ) mà mở kiểm tra file data thì thấy không có dữ liệu gì hết

View attachment 240675


Với lại cháu có tạo 1 ô chứa đường dẩn file data. Chú có thể kết vối với ô B1 được không. để sau này file data cháu để thư mục khác thì cháu chỉ sửa lại đường dẫn tại ô B1

View attachment 240676
1. File Home: Bạn đã điều chỉnh vùng dữ liệu, tên cột, tên sheet khác với file mẫu.

1594103675155.png

2. File Data: Bạn phải có tên cột trong vùng dữ liệu để đưa dữ liệu vào.

1594103586451.png

==> Code như sau:
Mã:
Sub ChenDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Sheet1.Range("B1") & "\Data.xlsb;Extended Properties=Excel 12.0"
        .Execute ("INSERT INTO [Sheet4$B3:E10000] SELECT FDNTRYJ,THTRS,JSRHRS,THTJ FROM [EXCEL 12.0;Database=" & ThisWorkbook.FullName & "].[Sheet4$B3:E1000] where THTJ is not null")
    End With
End Sub
 
Upvote 0
Để cho đơn giản mà bạn cũng hiểu được thì cứ record marcro lại rồi sửa code thôi. Mở file lên, chép qua, đóng file lại.
 
Upvote 0
1. File Home: Bạn đã điều chỉnh vùng dữ liệu, tên cột, tên sheet khác với file mẫu.

View attachment 240680

2. File Data: Bạn phải có tên cột trong vùng dữ liệu để đưa dữ liệu vào.

View attachment 240679

==> Code như sau:
Mã:
Sub ChenDL_HLMT()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Sheet1.Range("B1") & "\Data.xlsb;Extended Properties=Excel 12.0"
        .Execute ("INSERT INTO [Sheet4$B3:E10000] SELECT FDNTRYJ,THTRS,JSRHRS,THTJ FROM [EXCEL 12.0;Database=" & ThisWorkbook.FullName & "].[Sheet4$B3:E1000] where THTJ is not null")
    End With
End Sub
Cảm ơn chú nhiều. Code chạy đúng rồi. Nhưng hình như code của chú là nó nối tiếp dữ liệu vào file data thì phải. Cháu muốn kiểu như copy. nghĩa là file Home sao thì file data nó giống như vậy ( Đại khái như làm thủ công là : mở file Home Bôi đen B3:E1000 nhấn Ctrl + C, Mở file Data đặt con trỏ tại ô B3 nhấn Ctrl + V và các lần sau đều lặp lại như vậy không cần phải nối tiếp dự liệu). Cháu cảm ơn chú nhiều mong chú sửa lại code để giống như copy không cần nối tiếp
 
Upvote 0
mở file Home Bôi đen B3:E1000 nhấn Ctrl + C, Mở file Data đặt con trỏ tại ô B3 nhấn Ctrl + V và các lần sau đều lặp lại như vậy
Sinh viên gì mà 33 tuổi thế bác. Sinh viên IT gì mà không biết tự record rồi sửa code. Cái code kia dùng thư viện ADO bác có hiểu là gì không, rồi có hiểu câu lệnh SQL kia là gì không. Lên diễn đàn, copy cái code miễn phí về xài mà không hiểu gì, không giúp nâng cao trình độ là một dạng tội lỗi
 
Upvote 0
Sinh viên gì mà 33 tuổi thế bác. Sinh viên IT gì mà không biết tự record rồi sửa code. Cái code kia dùng thư viện ADO bác có hiểu là gì không, rồi có hiểu câu lệnh SQL kia là gì không. Lên diễn đàn, copy cái code miễn phí về xài mà không hiểu gì, không giúp nâng cao trình độ là một dạng tội lỗi
dạ gmail cháu lập là lấy của ông Anh nên tuổi cao. chứ cháu có 21 tuổi thôi ạ.
 
Upvote 0
Cảm ơn chú nhiều. Code chạy đúng rồi. Nhưng hình như code của chú là nó nối tiếp dữ liệu vào file data thì phải. Cháu muốn kiểu như copy. nghĩa là file Home sao thì file data nó giống như vậy ( Đại khái như làm thủ công là : mở file Home Bôi đen B3:E1000 nhấn Ctrl + C, Mở file Data đặt con trỏ tại ô B3 nhấn Ctrl + V và các lần sau đều lặp lại như vậy không cần phải nối tiếp dự liệu). Cháu cảm ơn chú nhiều mong chú sửa lại code để giống như copy không cần nối tiếp
Vậy bạn chép code sau vào file Home rồi chạy nhé.

Mã:
Sub ChepDL_HLMT()
    Dim wbCopy As Workbook, wbPaste As Workbook
    Set wbCopy = ThisWorkbook
    Set wbPaste = Workbooks.Open(Sheet1.Range("B1") & "Data.xlsb")
    wbCopy.Sheets("Sheet4").Range("B3:E105").copy wbPaste.Sheets("Sheet4").Range("B3")
    wbPaste.Close (True)
End Sub
 
Upvote 0
Web KT
Back
Top Bottom