Excel 2007 đôi khi mở tệp HTML làm văn bản nguồn.

Tôi sử dụng máy tính chạy hệ điều hành XP Pro. Tôi có một macro Excel 2007 tính toán URL rồi mở liên kết từ web dưới dạng tệp HTML (chức năng "surveyoutputservlet" của BLS với các tham số biến đổi, trả về dữ liệu thống kê dưới dạng HTML). Macro này đã hoạt động tốt trong nhiều tháng. Nhưng hôm qua, tệp bắt đầu mở dưới dạng tệp văn bản chứa mã nguồn HTML - trong một phần của ngày. Sau đó, macro lại hoạt động bình thường.

Thay đổi duy nhất gần đây trên máy tính của tôi là tôi đã nâng cấp IE từ phiên bản 7 lên phiên bản 8.

Có vẻ như có một số thiết lập nào đó làm thay đổi hành vi của lệnh Workbooks.Open mà tôi đang sử dụng. Hoặc có thể là một số thay đổi trong mã tệp mà Excel đang sử dụng để đọc tệp?
Hay là tôi hoàn toàn sai?
Giúp đỡ!




Trả lời:

Hãy đăng mã của bạn lên.

Chúng ta cần xác định xem vấn đề nằm ở IE hay Excel . Nếu bạn:

  1. Tải xuống tệp HTML về máy tính của bạn
  2. Mở Excel
  3. Mở tệp HTML từ bên trong Excel

Vấn đề này còn tiếp diễn không?



Trả lời:

Hãy đăng mã của bạn lên.

Chúng ta cần xác định xem vấn đề nằm ở IE hay Excel . Nếu bạn:

  1. Tải xuống tệp HTML về máy tính của bạn
  2. Mở Excel
  3. Mở tệp HTML từ bên trong Excel

Vấn đề này còn tiếp diễn không?


Trước tiên, xin chân thành cảm ơn câu trả lời của bạn.

Câu trả lời ngắn gọn cho câu hỏi tiếp theo của bạn là không - tôi không còn gặp vấn đề gì nữa.

Tệp tin mở đúng cách từ ổ cứng của tôi - cả khi tôi mở thủ công và bằng macro. Để rõ hơn - đoạn mã này trong macro không hoạt động đúng cách - Excel mở tệp tin ở dạng mã nguồn:

http://data.bls.gov/PDQ/servlet/SurveyOutputServlet?data_tool=dropmap&series_id=CES0000000001&output_type=column

Khi tôi mở tệp này bằng IE rồi lưu lại (c:\temp\Bureau of Labor Statistics data.mht), thì nó mở đúng cách cả khi mở thủ công lẫn thông qua macro.

(Workbooks.Open filename:=infileid, UpdateLinks:=0, ReadOnly:=xread)

Tóm lại, vấn đề của tôi là: khi tôi tính toán tên tệp đầu vào (thường bằng cách thay đổi đối số series_id) và sử dụng lệnh Workbooks.open trong macro, tệp đó không còn mở trong Excel dưới dạng tệp htm một cách nhất quán nữa.



Trả lời:

Có lẽ vấn đề nằm ở cách bạn mở tập tin. Ví dụ, tôi đã đăng tải một bảng HTML rất đơn giản lên SkyDrive của mình:

http://cid-46f2d0fe5f97aadb.office.live.com/browse.aspx/.Public/Sample

Tên tệp là sampleHTML.html.

Nếu bạn tải xuống tệp hoặc mở trực tiếp tệp, nó sẽ mở trong IE và hiển thị bảng. Tôi có thể mở tệp trong Excel 2007 bằng cách:

Dữ liệu > Lấy dữ liệu bên ngoài từ web

và sử dụng cùng URL mà IE hiển thị cho cùng một tệp. Tôi đã ghi lại macro như sau:

Sub Macro1()
'
' Macro1 Macro
'

'
Với ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://public.bay.livefilestore.com/y1prhOqt5wk_kRXKGiTmwLXauyWq9MIuGrvcDz4Db7eTyfVxEt7Bglm4ISnOWGmikxAge2x9aAfTc2QoC2AvY8zeA/sampleHTML.html?psid=1" _
, Điểm đến:=Phạm vi("$J$12"))
.Name = "sampleHTML.html?psid=1_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = Sai
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
Kết thúc bằng
End Sub

Hãy thử đưa dữ liệu này vào Excel rồi sau đó thử với dữ liệu của bạn.



Trả lời:

Cảm ơn bạn một lần nữa vì đã quan tâm đến vấn đề của tôi.

Macro bạn cung cấp không hoạt động với tôi. Trình gỡ lỗi đã chỉ ra rằng khi cố gắng thực thi lệnh .Refresh BackgroundQuery:=False, macro không thể tìm thấy tệp trên internet.

Tuy nhiên, tôi có thể báo cáo điều này: Như tôi đã đề cập trong email trước, phương pháp của tôi là sử dụng Workbooks.open để lấy tệp từ internet thay vì DataQuery.open. Hóa ra, macro của tôi đã có thể mở tệp mẫu của bạn trong Excel 2007 mà không gặp vấn đề gì (tất nhiên, bảng tính đó khá lộn xộn trong Excel vì nội dung của nó, nhưng hầu hết mọi thứ trên trang web đều có ở đâu đó).

Tôi chưa quen với phương pháp QueryTables.Open, vì vậy cần tìm hiểu kỹ hơn để xác định xem nó so sánh như thế nào với phương pháp Workbooks.Open và liệu nó có phù hợp với nhu cầu của tôi hay không.

Cuối cùng, tôi vẫn nghi ngờ rằng tập tin mà tôi lấy từ BLS đôi khi (một lần nữa, đây là vấn đề không phải lúc nào cũng xảy ra với tôi) lại chứa một số ký tự khác biệt — có thể là ký tự không in được ở đầu, hoặc có thể toàn bộ tập tin được mã hóa theo một cách bất thường — khiến Excel 2007 nhầm lẫn về bản chất của tập tin, dẫn đến việc nó mở tập tin đó dưới dạng tệp văn bản thay vì hiểu nó là tệp HTML.

Comments

Popular posts from this blog

Xử lý hàng loạt các tệp Excel được bảo vệ bằng mật khẩu

Thu hẹp và mở rộng cột trong Excel

Excel: Tìm và trả về "số cuối cùng" trong một cột, trong đó cột chứa: cả ô trống và số dương tùy ý (lớn hơn 0).