In phiếu bảo hành điện thoại (File nguồn là file *.Text)

Liên hệ QC

thaibinh8411

Thành viên mới
Tham gia
15/2/08
Bài viết
6
Được thích
0
Chào các bạn
Mình làm trong ngành điện thoại di động, mỗi lần in Phiếu bảo hành cho điện thoại khoản vài ngàn cái thấy oải quá . Phải lần lượt copy số emei từ file A sang cột J10 của file B rồi mới in (vui lòng xem 2 file đính kèm View attachment A.txt
 

File đính kèm

  • B.xls
    B.xls
    23.5 KB · Đọc: 314
Lần chỉnh sửa cuối:
Upvote 0
Gợi ý cách làm như sau:
- Ở file B Tạo thêm 1 Sheet mới.
- Bạn Import cái file A đó vào Sheet mới đó ở dạng Text.
- Duyệt qua các số đó để in phiếu tự động.

Bạn suy nghĩ thế nào? Nếu đồng ý ta tiếp tục.
Đàng nào cũng phải dùng code, đúng không? Vậy nghĩ theo hướng lấy dữ liệu trực tiếp từ file TXT đi (không cần Import) ---> Vòng lập sẽ duyệt theo từng line của file TXT
Thử xem!
 
Upvote 0
Đàng nào cũng phải dùng code, đúng không? Vậy nghĩ theo hướng lấy dữ liệu trực tiếp từ file TXT đi (không cần Import) ---> Vòng lập sẽ duyệt theo từng line của file TXT
Thử xem!

Em sử dụng code sau:

Mã:
Sub Nhap()
Dim ResultStr As String
Dim FileName As String
Dim FileNum As Integer

FileName = Application.GetOpenFilename(FileFilter:="Text File (*.txt),*.txt")
    If FileName = "" Then
      Exit Sub
    End If
FileNum = FreeFile()

Open FileName For Input As #FileNum

Application.ScreenUpdating = False
Do While Seek(FileNum) <= LOF(FileNum)
   Line Input #FileNum, ResultStr
     [J10] = "'" & ResultStr
     Sheet2.PrintOut
Loop
Close
Application.ScreenUpdating = True

End Sub
 

File đính kèm

Upvote 0
Em sử dụng code sau:

Mã:
Sub Nhap()
Dim ResultStr As String
Dim FileName As String
Dim FileNum As Integer

FileName = Application.GetOpenFilename(FileFilter:="Text File (*.txt),*.txt")
    If FileName = "" Then
      Exit Sub
    End If
FileNum = FreeFile()

Open FileName For Input As #FileNum

Application.ScreenUpdating = False
Do While Seek(FileNum) <= LOF(FileNum)
   Line Input #FileNum, ResultStr
     [J10] = "'" & ResultStr
     Sheet2.PrintOut
Loop
Close
Application.ScreenUpdating = True

End Sub
Ngoài cách trên thì Scripting.FileSystemObject cũng có khả năng đọc file TXT
PHP:
Sub Nhap()
  Dim FileName As String
  On Error GoTo ExitSub
  Range("J10").NumberFormat = "@"
  FileName = Application.GetOpenFilename("Text File (*.txt),*.txt")
  With CreateObject("Scripting.FileSystemObject").OpenTextFile(FileName, 1)
    Do
      Range("J10").Value = .ReadLine
      Sheet2.PrintOut
    Loop Until .AtEndOfStream
    .Close
  End With
ExitSub:
End Sub
Và cách này tôi nghĩ dễ hiểu hơn
 
Upvote 0
Lúc nào cũng thấy 2 bác ndu96081631, domfootwear này nói chuyện với nhau như đùa í :D

Mình thì không thích dùng code. Trong tình huống này, mình có một giải pháp đề nghị khác :
1) Bước 1, cũng giống như bác domfootwear nói í : copy số emei vào một cột trong một sheet nào đó.
Lưu ý : Nhớ định dạng cột đó là kiểu dữ liệu "Text" trước khi chọn copy từ File txt của bạn qua File Excel.
2) Bước 2 : Bây giờ là khác đây, mình sẽ dùng Ms Word
Thay vì bạn tạo file in bằng Excel thì bạn có thể định dạng form in ở Word. Sau đó dùng lệnh Mail Merge để có thể merge một lúc bao nhiêu dòng dữ liệu tùy ý từ file data Excel qua Word và in ra.

Nếu bạn quan tâm đến cách này, chúng ta sẽ tiếp tục sau đó.
Nhưng nếu bạn cần gấp, thì nên email (hối thúc) mình, vì mình không thường xuyên "túc trực" trên diễn đàn :D urdata123@gmail.com
 

File đính kèm

  • B.xls
    B.xls
    26.5 KB · Đọc: 39
Upvote 0
Em sử dụng code sau:

Mã:
Sub Nhap()
Dim ResultStr As String
Dim FileName As String
Dim FileNum As Integer

FileName = Application.GetOpenFilename(FileFilter:="Text File (*.txt),*.txt")
    If FileName = "" Then
      Exit Sub
    End If
FileNum = FreeFile()

Open FileName For Input As #FileNum

Application.ScreenUpdating = False
Do While Seek(FileNum) <= LOF(FileNum)
   Line Input #FileNum, ResultStr
     [J10] = "'" & ResultStr
     Sheet2.PrintOut
Loop
Close
Application.ScreenUpdating = True

End Sub

Chào bạn !
Mình đã in được như mong muốn khi dùng file đính kèm của bạn
Thanks bạn rất nhiều
 
Upvote 0
Bạn đang dùng Ms Word 2003 phải ko?
Mình lại đang dùng Ms Word 2007, nên về giao diện chức năng hơi khác chút - mà mình thì ko nhớ được trong Word 2003 gọi là gì, và nằm ở Tool nào. Nhưng thôi, mình cứ nói tên các chức năng, bạn tìm tên tương ứng trong Word 2003 nhe.

1) Trước tiên mình đặt tên bảng dữ liệu EMEI trong Excel.
2) Tạo trang in ở Word : định dạng kích thước trang và dàng chữ sao cho phù hợp với mẫu phiếu BH của bạn. Thao tác này tương tự như bạn tạo form in trong Excel vậy.
3) Gọi chức năng Mail Merge :
- Trong Word 2007 : chức năng này nằm ở Menu Mailing.
- Trong Word 2003 : Bạn thử tìm trong Tool, hay Data gì gì đó, có nội dung nào gọi là Mail Merge gì không...
4) Bắt đầu với Mail Merge :
- Bạn chọn file document là current document - tức file Word bạn đã tạo sẵn.
- Bạn chọn chức năng data nguồn : chọn file Excel của bạn, link với tên bảng dữ liệu bạn đã đặt tên ở trên. Chọn tất cả các dòng dữ liệu. Khi này file word của bạn đã được link với dữ liệu từ file excel.
Lưu ý nhớ đóng file Excel lại trước khi cài đặt đường link từ Word.
- Trở lại với file Word : Tại những vùng mà bạn muốn insert số Emei, bạn dùng chức năng insert merge file, bạn sẽ thấy hiện ra các dòng tiêu đề bảng dữ liệu excel của bạn để bạn chọn.
5) Xuất dữ liệu in :
- Khi cần in một lúc nhiều phiếu BH, bạn gọi lệnh Merge (trong Word 2007 gọi là Finish & Merge, còn Word 2003 thì... không nhớ!) : Bạn chọn in tất cả, hoặc từ dòng mấy đến dòng mấy (vì vậy mình mới tạo cột STT có số dòng để mình dễ chọn dòng in trong bảng biểu)
- Khi này Word 2007 tự động xuất một file mới chứa những thông tin từ dữ liệu truy xuất (Word 2003 hình như cũng vậy), và bạn cứ việc in trên file này.
Bạn có thể lưu lại file xuất này, hoặc xoá đi sau khi đã in xong, vì sau này nếu cần, bạn lại dùng file word gốc để truy xuất dữ liệu lại.
6) Về Mail Merge :
- Chức năng này thường được sử dụng nhất cho việc in nhãn khách hàng.
- Mình thích dùng nó cho việc in phiếu lương trong những công ty có số lượng nhân viên lớn.

02 file đính kèm của mình tải lên mạng chỉ mang tính tham khảo. Có thể khi tải lên rồi, đường link data giữa 02 file word và excel không còn tồn tại nữa, mà mình cần tạo link lại. Và cũng có thể chức năng Merge khi bạn mở ra xem ở file word bị lỗi nếu bạn xem ở Word 2003, vì mình tạo file trong Ms Word 2007.
Dù vậy, mình vẫn hy vọng nó hữu ích cho bạn.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom