Xuất dữ liệu từ file excel ra file text (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thetrungkien

Thành viên mới
Tham gia
19/12/07
Bài viết
41
Được thích
14
Chào cả nhà:
Mình có 1 vẫn đề rất nan giải là mỗi tháng phải xuất dữ liệu từ 45 file excel có cấu trúc y như nhau chỉ khác mã ĐV và số liệu khác nhau còn lại số lượng dòng, cột và cell bắt đầu y hệt nhau ra 1 file text cung và mình cứ phải dung công thức (="#70203001#" & C19 & "#" & D19 & "#" & E19 &"#" & F19 & "#" & G19 & "#" & H19 & "#" & I19 & "#") như thế nàu để lấy ra xong copy lại đưa vào file text cứ như vậy cho đến hết 45 file excel
VD: "#70203001#" sẽ căn cứ vào cell(C4) trên mỗi file excel, mỗi file excel có 2 sheet.
sau khi làm vậy hết 2 sheet sẽ copy đoạn text dán vào file text cho đến hết 45 file (ở file đính kèm mình phả làm ở cột J)
Vấn đề mình cần các bạn giúp là tạo 1 macro từ 1 file excel khác đọc lần lượt đến hết 45 file và lấy phần số liệu (màu vàng mình đã tô) đưa ra 1 file text lưu ở đâu đó. mong cả nhà giúp đỡ mình gửi 2 file đại diện (1 file là excel nguồn và 1 file text đã xuất). Cảm ơn các bạn quan tâm
 

File đính kèm

Số của bạn toàn định dạng text.
Các tổng trên hàng cuối cũng sai hết. Tất nhiên hàng tổng cuối cùng kg lấy vô file text. Nói để biết.

Công thức trên ô J19 là
(="#70203001#" & C19 & "#" & D19 & "#" & E19 &"#" & F19 & "#" & G19 & "#" & H19 & "#" & I19 & "#")
nên dùng
(="#" & c4 & "#" & C19 & "#" & D19 & "#" & E19 &"#" & F19 & "#" & G19 & "#" & H19 & "#" & I19 & "#")

Bạn có thể gửi danh sách các file excel cần chuyển . Các tên này nên ở 1 cột của 1 file excel. Nếu cần thì có cả tên sheet. Có thể file này lấy sheet này, còn file kia lấy sheet kia. Nếu lấy hết cả 2 sheet thì thôi cũng được.

Bạn có nên để dấu # ở cả đầu và cuối mỗi dòng không. Nếu thay đổi thì nói luôn

Hỏi thêm: Sao không tạo file word, dễ chuyển thành bảng, định dạng ...
 
Upvote 0
Số của bạn toàn định dạng text.
Các tổng trên hàng cuối cũng sai hết. Tất nhiên hàng tổng cuối cùng kg lấy vô file text. Nói để biết.

Công thức trên ô J19 là
(="#70203001#" & C19 & "#" & D19 & "#" & E19 &"#" & F19 & "#" & G19 & "#" & H19 & "#" & I19 & "#")
nên dùng
(="#" & c4 & "#" & C19 & "#" & D19 & "#" & E19 &"#" & F19 & "#" & G19 & "#" & H19 & "#" & I19 & "#")

Bạn có thể gửi danh sách các file excel cần chuyển . Các tên này nên ở 1 cột của 1 file excel. Nếu cần thì có cả tên sheet. Có thể file này lấy sheet này, còn file kia lấy sheet kia. Nếu lấy hết cả 2 sheet thì thôi cũng được.

Bạn có nên để dấu # ở cả đầu và cuối mỗi dòng không. Nếu thay đổi thì nói luôn

Hỏi thêm: Sao không tạo file word, dễ chuyển thành bảng, định dạng ...
Các file khác có cấu trúc y như vậy bạn ạ chỉ khác nhau mỗi (mã đơn vị trong tên file (phần bôi màu đỏ đó)thôi, VD: T00014-70203001-01203001-201705-BI-M-01), phần còn lại y chang. còn dữ liệu trong sheet G000141 lấy bắt đầu từ C19-I784, sheet G000142 lấy từ C19-G104. bạn có thể chép từ file này ra thành nhiều file chỉ cần đổi tên 6 ký tự màu đỏ thành khác đi VD 204003 và trong cell C4 của 2 sheet cũng đổi tương tự
Còn dấu # bắt buộc phải có ở đầu mỗi dòng và cuối như vậy đó bạn
 
Lần chỉnh sửa cuối:
Upvote 0
để mình chép toàn bô Code bạn thao khảo nhé (tạo 1 file bất kỳ cần 2 sheet là Main và Chua) cứ thế chạy còn file nguồn thì bạn sao chép từ file mình đã tải chỉ cần đổi cell(C4) ở cae 2 sheet là ok. khi mình làm gần xong mới phát hiện là 70% file nguồn có pass bảo về nên mở lên và bắt công thức qua, sau đó chép và dán sang sheet Chuan. chưc bạn vui vẻ, có gì trao dỏi tiêp snha
Option Explicit

Sub TonghopDulieu()
Dim basebook As Workbook
Dim mybook As Workbook
Dim MyPath As String
Dim SaveDriveDir As String
Dim fname As Variant
Dim Tenfile As String
Dim filename As String
Dim i, Loi, Dan As Integer
Dim Dan2 As Integer

Tenfile = ThisWorkbook.Name
SaveDriveDir = CurDir
MyPath = ThisWorkbook.Path 'Application.Path
ChDrive MyPath
ChDir MyPath
fname = Application.GetOpenFilename(filefilter:="Excel Files (*.xls*), *.xlsx*", MultiSelect:=True)
If IsArray(fname) Then
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set basebook = ActiveWorkbook
basebook.Sheets("main").Columns(1).Select
Sheets("main").Select
Selection.NumberFormat = "General"
Sheets("Chuan").Select
'basebook.Sheets("Chuan").Columns("A:B").Select
Columns("A:B").Select
Selection.ClearContents
'Columns("A:B").Select
Selection.NumberFormat = "General"

'rNum = 1
i = 1
Loi = 1
Dan = 1
Dan2 = 1
For n = LBound(fname) To UBound(fname)
On Error GoTo Loi
TenBook = fname(n)
Set mybook = Workbooks.Open(fname(n))
filename = mybook.Name
basebook.Activate
Sheets("main").Select
Range("A" & i).Select
ActiveCell.FormulaR1C1 = _
"=""#"" & '[" & filename & "]G000141'!R4C3 & ""#"" & '[" & filename & "]G000141'!R[18]C3 & ""#"" & '[" & filename & "]G000141'!R[18]C4 & ""#"" & '[" & filename & "]G000141'!R[18]C5 & ""#"" & '[" & filename & "]G000141'!R[18]C6 & ""#"" & '[" & filename & "]G000141'!R[18]C7 & ""#"" & '[" & filename & "]G000141'!R[18]C8 & ""#"" & '[" & filename & "]G000141'!R[18]C9 & ""#"""

Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A766"), Type:=xlFillDefault
i = i + 766
Range("A" & i).Select
ActiveCell.FormulaR1C1 = _
"=""#"" & '[" & filename & "]G000142'!R4C3 & ""#"" & '[" & filename & "]G000142'!R[-748]C[2] & ""#"" & '[" & filename & "]G000142'!R[-748]C[3] & ""#"" & ""0"" & ""#"" & '[" & filename & "]G000142'!R[-748]C[4] & ""#"" & '[" & filename & "]G000142'!R[-748]C[5] & ""#"" & '[" & filename & "]G000142'!R[-748]C[6] & ""#"" & ""0"" & ""#"""
Range("A" & i).Select
Selection.AutoFill Destination:=Range("A" & i & ":" & "A" & i + 85), Type:=xlFillDefault
i = i + 85
Range("A1" & ":" & "A" & i).Select
Selection.Copy
If n < 30 Then
basebook.Activate
Sheets("Chuan").Select
Range("A" & Dan).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Dan = Dan + i
i = 1
Else
basebook.Activate
Sheets("Chuan").Select
'Range("B1").Select
Range("B" & Dan2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Dan2 = Dan2 + i
i = 1
End If
Sheets("Main").Select
Sheets("main").Columns(1).Select
Selection.Clear
Selection.NumberFormat = "General"

'Range("A1" & ":" & "A" & i).Select

mybook.Close False

'---------------------------------------------------
Loi:
Select Case Err.Number
Case 1004
'basebook.Worksheets("Main").Cells(i, 2).Value = "File " & TenBook & " co mat khau bao ve " & sn
'i = i + 1

'MsgBox "File (" & mybook.Name & ") co Password bao ve!)", vbCritical, , "Loi"
'mybook.Close False
Case 9
'MsgBox "File (" & mybook.Name & " ) khong co Sheet " & sn & "!)", vbCritical + vbOKOnly, "Loi"
'mybook.Close False
Case -2147221080
End Select

Next n
End If
ChDrive SaveDriveDir
ChDir SaveDriveDir
Application.ScreenUpdating = True
MsgBox "Da lam xong", vbInformation
End Sub
'---------------------------
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom