Tìm số Cột trong file Text bằng VBA

Liên hệ QC

thnghiachau

Chỉ biết ngồi BÈ và PHÁN chuyện!!!
Tham gia
14/9/09
Bài viết
844
Được thích
707
Giới tính
Nam
Nghề nghiệp
Search
Chào GPE,
Xin cho hỏi có cách nào để xác định File text có bao nhiêu cột như trong tập tin đính kèm bằng VBA không ạ?
Ví dụ trong tập tin đính kèm là có 10 cột.
Xin cám ơn.
 

File đính kèm

  • abcdef.txt
    7.5 KB · Đọc: 30
@Thớt: nếu không bắt buộc phải dùng FileSystemObject thì không nên dùng. Mở file bằng đường lối channel truyền thống ít lệ thuộc vào hệ thống điều hành.
Khi sử dụng FileSystemObject thì data từng hàng sẽ OK
1648720126656.png

nhưng khi dùng Open strFullNameTextFile For Input As #iFileNumber thì data sẽ bị "trim" mất dẫy khoảng trắng đầu...
1648720241506.png
 
Upvote 0
Upvote 0
Người ta dùng Line Input, bạn sửa thành Input rồi kêu ca. Bạn chuyển lại về Line Input xem sao.

View attachment 273832
Dạ... Cám ơn Bác nhiều...
Đúng là con sai rồi ah....
Nhân tiện cho con hỏi thêm: Nếu muốn mở file text (UNICODE) thì câu lệnh
Open strFullNameTextFile For Input As #1
mình phải chỉnh lại như thế nào ah?
Cám ơn Bác nhiều
 
Upvote 0
Dạ... Cám ơn Bác nhiều...
Đúng là con sai rồi ah....
Nhân tiện cho con hỏi thêm: Nếu muốn mở file text (UNICODE) thì câu lệnh
Open strFullNameTextFile For Input As #1
mình phải chỉnh lại như thế nào ah?
Cám ơn Bác nhiều
Trong công việc bạn phải giải quyết nhiều vấn đề, chọn phương pháp nào là do bạn quyết định, không ai bắt bạn phải dùng phương pháp này hay cấm dùng phương pháp kia.

Nếu là tôi tôi sẽ dùng Open của VBA trong các trường hợp đơn giản. Trong trường hợp unicoded thì tôi dùng CreateObject với FileSystemObject. Nếu cứ cố tình làm khổ mình thì tôi có lẽ dùng Open nhưng với mode = Binary.

Open sFile For Binary As #1

Lúc này dùng Get để đọc dữ liệu. Có lẽ phải đọc toàn bộ. Sau đó nếu muốn chia thành từng dòng, mỗi dòng chia theo từng đoạn ngăn cách bởi dấu phẩy, chấm phẩy hay gì đó thì phải tự làm, vd. dùng Instr để tìm chỗ phân cách. Nếu bạn muốn vọc thì thử xem.

Dùng FileSystemObject cũng giải quyết được công việc thì chả lý gì lại cứ phải Open của VBA. Trừ phi phải thi thố, đố nhau kiểu: dùng ít FOR nhất, code ít chữ nhất, không được dùng FileSystemObject. Nếu thế thì bạn chờ người khác.
 
Upvote 0
Trong công việc bạn phải giải quyết nhiều vấn đề, chọn phương pháp nào là do bạn quyết định, không ai bắt bạn phải dùng phương pháp này hay cấm dùng phương pháp kia.

Nếu là tôi tôi sẽ dùng Open của VBA trong các trường hợp đơn giản. Trong trường hợp unicoded thì tôi dùng CreateObject với FileSystemObject. Nếu cứ cố tình làm khổ mình thì tôi có lẽ dùng Open nhưng với mode = Binary.

Open sFile For Binary As #1

Lúc này dùng Get để đọc dữ liệu. Có lẽ phải đọc toàn bộ. Sau đó nếu muốn chia thành từng dòng, mỗi dòng chia theo từng đoạn ngăn cách bởi dấu phẩy, chấm phẩy hay gì đó thì phải tự làm, vd. dùng Instr để tìm chỗ phân cách. Nếu bạn muốn vọc thì thử xem.

Dùng FileSystemObject cũng giải quyết được công việc thì chả lý gì lại cứ phải Open của VBA. Trừ phi phải thi thố, đố nhau kiểu: dùng ít FOR nhất, code ít chữ nhất, không được dùng FileSystemObject. Nếu thế thì bạn chờ người khác.
Con xin cám ơn Bác đã hướng dẫn.
Vì mấy nay con đang nghiên cứu cái dụ Text File này nên con mới tìm hiểu mọi vấn đề có thể xẩy ra mà con có thể biết về nó.
Về FileSystemObject con đã tim hiểu được về cái dụ Unicode này, còn Open thì con tìm mà chưa ra ah.
Đúng như Bác nói, khi mình sử dụng thì tùy theo cái mà mình làm mà cân nhắc dùng cái nào thì tốt hơn. Mà muốn đựợc thế thì phải hiểu rõ hết các loại mới biết dùng cái nào.
Đôi lúc mình muốn tìm hiểu về vấn đề nào đó thì cái quan trong là mình phải biết "Key Word", như vấn đề con hỏi thì Bác đã cho con cái key word là BINARY trong open... và con sẽ tìm hiểu về nó ah.

ah, bên Bác có "nghe ầm ầm từ Ukraine không vậy?
 
Upvote 0
...

Dùng FileSystemObject cũng giải quyết được công việc thì chả lý gì lại cứ phải Open của VBA. Trừ phi phải thi thố, đố nhau kiểu: dùng ít FOR nhất, code ít chữ nhất, không được dùng FileSystemObject. Nếu thế thì bạn chờ người khác.
Ở trên tôi có nói là FileSystemObject là công cụ của Wondows Script.
Đọc file qua channel truyền thống là để tránh phụ thuộc vào nền tảng.
Điển hình, máy Mac của tôi không chạy được những code sử dụng API/ActiveX.
 
Upvote 0
ah, bên Bác có "nghe ầm ầm từ Ukraine không vậy?
Từ chỗ tôi không nghe thấy. Nói thực ra thì anh hàng xóm của người ta có thể là ân nhân đối với nhiều người. Nhưng mình cứ nghĩ tới năm 1979 khi mà nhà cửa, trường học, bệnh viện của mình bị dội bom, người mình bị giết ... Nếu mình có chút đồng cảm thì không bao giờ mình cười trên đau khổ của người khác. Họ cũng có hàng xóm như mình.

Ở trên tôi có nói là FileSystemObject là công cụ của Wondows Script.
Đọc file qua channel truyền thống là để tránh phụ thuộc vào nền tảng.
Điển hình, máy Mac của tôi không chạy được những code sử dụng API/ActiveX.
Không có chỗ nào tôi nói là BẮT BUỘC phải dùng FileSystemObject. Tôi chỉ nói là nếu tôi thì tôi dùng. Còn ai đó không thể dùng mà cứ phải bắt buộc Open thì tôi cũng chỉ ra là làm được. Nhưng vất vả thêm thôi. Chứ nói như bác thì ta tìm tất cả các code trên GPE mà dùng FileSystemObject rồi khuyên mọi người chuyển sang channel truyền thống?
 
Lần chỉnh sửa cuối:
Upvote 0
... Chứ nói như bác thì ta tìm tất cả các code trên GPE mà dùng FileSystemObject rồi khuyên mọi người chuyển sang channel truyền thống?
Bác quên rằng tôi là tín đồ của "If it ain't broke, don't fix it".
Hơi đâu mà lôi đồ cũ ra sửa lại.
 
Upvote 0
Upvote 0
Té ra anh @batman1 nhầm. Lão này xúi thật chứ chẳng có "chả lẽ" gì sất.
 
Upvote 0
Upvote 0
... Nếu mình có chút đồng cảm thì không bao giờ mình cười trên đau khổ của người khác. Họ cũng có hàng xóm như mình.
Bác nói đúng. Con rất là ghét chiến tranh dù là bất cứ lý do nào... nhưng mình là "dân đen" thì không dám nói chính trị vậy... hic
 
Upvote 0
Web KT

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

Back
Top Bottom