2011-08-08 34 views
6

Làm cách nào để kích hoạt Sổ làm việc khác của tôi từ sổ làm việc hiện tại? Tôi có một sổ làm việc hiện tại với dumb.xls và Tên sổ làm việc khác là Tire.xls.I đã mở tệp Tire.xls từ dumb.xls bằng cách sử dụng worksbooks.open filename:= "name of the file" .Có được mở nhưng vấn đề là Im không thể làm cho nó hoạt động.Làm cách nào để kích hoạt một sổ làm việc cụ thể và một trang tính cụ thể?

Nếu tôi nói cells(2,24).value=24 đặt những giá trị này vào ô của dumb.xls nhưng tôi muốn nó được thực hiện một Tire.xls.

activesheet.cells(2,24).value=24 đặt chúng trên Tire.xls. Nhưng làm cách nào để kích hoạt Sổ làm việc với tên? Tôi cần phải mở 3 đến 4 workbook excel Và thực hiện các hoạt động? Làm thế nào để kích hoạt bảng tính cụ thể

Tôi đã tìm thấy mã này trên google

 activeworkbook.worksheet("sheetname").activate ' but not working 
    windows("sheetname").activate ' people on google suggested not to use 

nó không nhận được kích hoạt. Tôi không biết làm thế nào để làm cho nó hoạt động. Bất cứ ai có thể cho tôi biết Làm cách nào để kích hoạt một sổ làm việc cụ thể và một trang tính cụ thể của sổ làm việc khác?

Ví dụ: Tôi có niko.xls và niko_2.xls được mở dưới dạng sổ làm việc từ sổ làm việc dumb.xls do đó hoàn toàn 3 sổ làm việc và tôi phải kích hoạt trang tính thứ 2 của sổ làm việc niko_2.xls. Làm cách nào để tạo? Bất cứ ai có thể giải thích cho tôi cú pháp với những ví dụ này? Cảm ơn bạn trước

Trả lời

14

Bạn không cần phải kích hoạt bảng (bạn sẽ mất một buổi biểu diễn hit khổng lồ để làm như vậy, thực sự). Vì bạn đang khai báo một đối tượng cho trang tính, khi bạn gọi phương thức bắt đầu bằng "wb." bạn đang chọn đối tượng đó. Ví dụ: bạn có thể nhảy vào giữa các sổ làm việc mà không kích hoạt bất kỳ thứ gì như sau:

Sub Test() 

Dim wb1 As Excel.Workbook 
Set wb1 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test1.xls") 
Dim wb2 As Excel.Workbook 
Set wb2 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test2.xls") 

wb1.Sheets("Sheet1").Cells(1, 1).Value = 24 
wb2.Sheets("Sheet1").Cells(1, 1).Value = 24 
wb1.Sheets("Sheet1").Cells(2, 1).Value = 54 

End Sub 
+0

Bất cứ ai có một đầu mối tại sao trên sẽ cho tôi một lỗi "Biên dịch lỗi - không hợp lệ ký tự" trên sao chép/dán? –

+1

Không chắc chắn. Tôi đang sử dụng bàn phím tiếng Nhật để biết, có thể dấu gạch chéo ngược hoặc thứ gì đó có mã ký tự khác. Hãy thử dán vào một tập tin txt sau đó Excel có thể? Tôi nhận thấy một ký tự "" dưới Sub Test() vì vậy tôi đã xóa nó chỉ trong trường hợp đó là nó. – aevanko

0
Dim Wb As Excel.Workbook 
Set Wb = Workbooks.Open(file_path) 
Wb.Sheets("Sheet1").Cells(2,24).Value = 24 
Wb.Close 

Để biết tên tờ để tham khảo trong Wb.Sheets("sheetname") bạn có thể sử dụng như sau:

Dim sht as Worksheet  
For Each sht In tempWB.Sheets 
    Debug.Print sht.Name 
Next sht 
+0

Xin lỗi, hãy cho tôi biết làm cách nào để kích hoạt trang tính?của bạn đặt một số giá trị trong nó tôi muốn làm tất cả các phân loại và hoạt động trong sổ làm việc đó hơn đóng nó? Tôi có nên cần phải luôn luôn chỉ ra Wb.sheets ("sheet1") ...... cho tôi biết điều đó? – niko

4

Bạn phải đặt tham chiếu đến sổ làm việc bạn đang mở. Sau đó, bạn có thể làm bất cứ điều gì bạn muốn với bảng tính đó bằng cách sử dụng tài liệu tham khảo của nó.

Dim wkb As Workbook 
Set wkb = Workbooks.Open("Tire.xls") ' open workbook and set reference! 

wkb.Sheets("Sheet1").Activate 
wkb.Sheets("Sheet1").Cells(2, 1).Value = 123 

thậm chí có thể thiết lập một tham chiếu đến bảng, mà sẽ làm cho cuộc sống dễ dàng hơn sau:

Dim wkb As Workbook 
Dim sht As Worksheet 

Set wkb = Workbooks.Open("Tire.xls") 
Set sht = wkb.Sheets("Sheet2") 

sht.Activate 
sht.Cells(2, 1) = 123 

Những người khác đã chỉ ra rằng .Activate có thể không cần thiết trong trường hợp của bạn. Bạn không cần phải kích hoạt một trang tính trước khi chỉnh sửa các ô của nó. Nhưng, nếu đó là những gì bạn muốn làm, nó không có hại để kích hoạt - ngoại trừ một hit nhỏ để thực hiện mà không nên được chú ý miễn là bạn làm điều đó chỉ một lần hoặc một vài lần. Tuy nhiên, nếu bạn kích hoạt nhiều lần, ví dụ: trong một vòng lặp, nó sẽ làm chậm những thứ xuống đáng kể, vì vậy kích hoạt nên tránh.

+0

Kích hoạt, giống như chọn, mất một số lượng lớn trên hiệu suất. Ví dụ, lặp lại quy trình trên 10.000 lần và với kích hoạt mất khoảng 8 giây. Nếu không có một dòng, nó chỉ mất 0.375 giây. Tất nhiên kết quả khác nhau tùy theo máy. – aevanko

+0

Tôi thừa nhận tôi đã rất ngạc nhiên khi tìm ra sự khác biệt lớn trong việc tránh chọn và kích hoạt. Dưới đây là một số REF (đề cập rằng kích hoạt có một hit về hiệu suất): http://msdn.microsoft.com/en-us/library/ff726673.aspx – aevanko

+0

Vâng, điểm tốt, mặc dù nếu OP không looping thì nó sẽ không đáng chú ý. Tôi sẽ thêm một nhận xét cho hiệu ứng đó trong câu trả lời của tôi. –

0

Mã mà làm việc đối với tôi là:

ThisWorkbook.Sheets("sheetName").Activate 
+0

Tôi đã thử tất cả các phương pháp được đề cập ở đây để chọn một trang tính (chuyển từ trang tính này sang trang tính khác). Tuy nhiên, tôi nhận được "Lỗi ứng dụng hoặc đối tượng được xác định". Trang tính tồn tại (tôi đã thêm mã để xác minh điều này thông qua một hộp thư.) Vui lòng hướng dẫn. – user1175126

0

thử này

Windows("name.xls").Activate 
+1

Bạn nên giải thích tại sao câu trả lời của bạn hữu ích hơn 2,5 năm sau. Bạn đã thử nghiệm nó, liên quan đến câu trả lời khác? – manuell

0

Bạn có thể thử này.

Workbooks("Tire.xls").Activate 

ThisWorkbook.Sheets("Sheet1").Select 
Cells(2,24).value=24 
Các vấn đề liên quan