Tôi có sổ làm việc với nhiều trang tính và mỗi trang có cùng một tập hợp các dải ô được đặt tên (IE chúng được sắp xếp theo trang tính chứ không phải bảng tính).Không thể truy vấn phạm vi được đặt tên trên trang tính với các khoảng trống trong tên trong Excel
Tôi muốn truy vấn dựa trên phạm vi được đặt tên trên bất kỳ trang tính nào. Một số trang tính có tên không có dấu cách và một số trang khác có tên bằng dấu cách.
Tôi có thể dễ dàng thực hiện việc này cho những người không có không gian, nhưng cú pháp để thực hiện việc này với dấu cách thoát khỏi tôi (và một giờ google-ing).
Dải ô có tên là "Thành phần" và một tấm được đặt tên "NoSpaces", người kia "Với Spaces"
Dưới đây là đoạn code mà hoạt động tốt cho "NoSpaces" tấm:
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dictNewRecipesToCheck(arrKeys(0)) & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1;"""
strQuery = "Select * from [NoSpaces$Ingredients]"
Set objConn = New ADODB.Connection
Set objRecordSet = New ADODB.Recordset
objConn.Open sConnString
objRecordSet.Open strQuery, objConn
tôi đã thử tất cả những điều sau đây cho tờ "Với Không gian":
strQuery = "Select * from [With Spaces$Ingredients]"
strQuery = "Select * from ['With Spaces'$Ingredients]"
strQuery = "Select * from ['With Spaces$'Ingredients]"
strQuery = "Select * from [With_Spaces$Ingredients]"
Mỗi lần, tôi nhận được lỗi "Cơ sở dữ liệu Microsoft Access không thể tìm thấy đối tượng ..." lỗi.
Như tôi đã đề cập, nó hoạt động tốt cho tất cả các trang không có khoảng trống trong tên.
Bất kỳ trợ giúp nào để làm việc này trên trang tính có dấu cách, sẽ được MUCH đánh giá cao.
Cảm ơn!
cập nhật dựa trên ý kiến dưới đây:
Excel 2007
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=1;"""
Khi chạy qua đoạn code schema được cung cấp bởi @shahkalpesh nó sẽ liệt kê TABLE_NAME như chỉ là "Thành phần" cho cả hai dãy tên (mặc dù từng là scoped đến một tờ khác nhau).
Với trình điều khiển này, ngay cả [NoSpaces $ Ingredients] không hoạt động.
sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"""
Khi chạy qua mã lược đồ được cung cấp bởi @shahkalpesh, danh sách TABLE_NAME là "NoSpaces $ Ingredients" và "With Spaces '$ Ingredients". Với trình điều khiển này, [NoSpaces $ Ingredients] hoạt động tốt (không phải với trình điều khiển ACE).
Tuy nhiên, bằng cách sử dụng tên chính xác như được báo cáo theo lược đồ, ['With Spaces' $ Ingredients] không hoạt động.
Excel 2013
sConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFileLoc & ";Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=1;"""
Khi chạy qua đoạn code schema được cung cấp bởi @shahkalpesh nó sẽ liệt kê TABLE_NAME là "NoSpaces $ Thành phần" và " 'Với Spaces $' Thành phần". Với trình điều khiển này, [NoSpaces $ Ingredients] hoạt động tốt, nhưng ['With Spaces' $ Ingredients] không hoạt động.
Cuối cùng, hãy tham khảo http://db.tt/3lEYm2g1 cho một trang mẫu được tạo trong Excel 2007 có sự cố này trên (ít nhất) 2 máy khác nhau.
Sử dụng Excel 2013 Tôi đã giải quyết vấn đề bằng cách giới thiệu một phạm vi thông thường (không phải dải ô được đặt tên) VÀ sử dụng dấu hai chấm (":"). Ví dụ. '[Report 1 $ A15]' sẽ không hoạt động, nhưng '[Report 1 $ A15: A15]' hoạt động. – ZygD