Đọc tất cả các Shape dạng Characters trong visio

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

hadoan-pap

Thành viên tiêu biểu
Tham gia
8/7/15
Bài viết
460
Được thích
19
Em chào mọi người !

Dạ em có 1 file visio , trong đó có các shape dạng characters.

Dạ làm thế nào để mình có thể loop lấy được toàn bộ các shape đó trong page visio ạ.

Em mới làm đoạn khai báo như dưới nhưng chưa biết làm thế nào để loop đọc được các characters đó ạ.

Dim vsoOval As Visio.Shape
Dim vsoCharacters As Visio.Characters

Em xin cảm ơn ạ!
 
Bạn thử cách sau:
PHP:
Dim vsoOval As Visio.Shape
Set vsoPage = ActivePage
    For Each vsoShape In vsoPage.Shapes 
        ...     
    Next vsoShape
 
Upvote 0
Bạn thử cách sau:
PHP:
Dim vsoOval As Visio.Shape
Set vsoPage = ActivePage
    For Each vsoShape In vsoPage.Shapes
        ...    
    Next vsoShape
Em cảm ơn anh!

Em đang chưa biết cách làm thế nào để loop dc các ItemFromID trong từng Shapes ạ.

Nó như này: Application.ActiveWindow.Page.Shapes.ItemFromID

Trong 1 shape có 1 số ItemFromID.... và làm thế nào để loop và lấy được chúng ạ.

Em xin cảm ơn!
 
Upvote 0
Tôi nghĩ người khác nhìn vào câu hỏi của bạn giống như thầy bói mù xem voi, thậm chí ở đây không có voi để xem nữa.
 
Upvote 0
D
Tôi nghĩ người khác nhìn vào câu hỏi của bạn giống như thầy bói mù xem voi, thậm chí ở đây không có voi để xem nữa.
Dạ như hình đính kèm của em là 1 shape trên visio ạ.

Trong shape này có 2 cái ItemFromID như em có bôi đỏ ạ.

Dạ em đang chưa biết cách nào để loop được các ItemFromID này và lấy được Text của chúng ạ.

Em cảm ơn anh!
 

File đính kèm

  • Untitled.png
    Untitled.png
    89.9 KB · Đọc: 11
Upvote 0
Dạ, trong 1 Ô nếu có nhiều hơn 1 box ( ItemFromID ) thì nó chỉ lấy ra được cái ItemFromID (box) cuối cùng thôi ạ
Bạn thử dùng Item(x) hoặc ItemFromID(x) xem có lấy được thông tin của nó không.

Tôi cũng sờ cái đuôi voi thôi đấy --=0
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử dùng Item(x) hoặc ItemFromID(x) xem có lấy được thông tin của nó không.

Tôi cũng sờ cái đuôi voi thôi đấy --=0
Dạ em cũng thử loop toàn bộ các Shapes và loop để lấy cái item đấy ạ, nhưng những shapes nào mà có nhiều hơn 1 item chứa bên trong thì nó chỉ lấy ra được cái items có giá trị bé nhất thôi ạ.

Ví dụ trong Shapes có 2 box là ItemFromID(604) và ItemFromID(605) thì nó chỉ lấy ra được 1 cái là ItemFromID(604) thôi ạ. Em cũng không hiểu tại sao như vậy.

Anh có suggest gì trường hợp này không ạ?

Em cảm ơn ạ!
 
Upvote 0
Dạ em cũng thử loop toàn bộ các Shapes và loop để lấy cái item đấy ạ, nhưng những shapes nào mà có nhiều hơn 1 item chứa bên trong thì nó chỉ lấy ra được cái items có giá trị bé nhất thôi ạ.

Ví dụ trong Shapes có 2 box là ItemFromID(604) và ItemFromID(605) thì nó chỉ lấy ra được 1 cái là ItemFromID(604) thôi ạ. Em cũng không hiểu tại sao như vậy.

Anh có suggest gì trường hợp này không ạ?

Em cảm ơn ạ!
Chen tiếng Anh vô đây làm chi?

Bạn thử bấm F8 chạy từng bước trong vòng lặp thử xem nó nhận cái ItemFromID đó như thế nào: 604 thì nó thấy gì và 605 thì thấy gì?
 
Upvote 0
Chen tiếng Anh vô đây làm chi?

Bạn thử bấm F8 chạy từng bước trong vòng lặp thử xem nó nhận cái ItemFromID đó như thế nào: 604 thì nó thấy gì và 605 thì thấy gì?
Dạ em có chạy như anh bảo ạ, nó có loop và lấy được cái itemfromid đó ạ.

Nhưng có Box nào mà có 2 cái itemfromid như thế bên trong thì nó chỉ lấy ra được có 1 cái bé hơn ạ ( ví dụ 604 và 605 thì nó chỉ lấy được cái 605 ạ.)

Nhưng nếu mình show text cái itemfromid605 thì nó vẫn ra được ạ.
Bài đã được tự động gộp:

Chen tiếng Anh vô đây làm chi?

Bạn thử bấm F8 chạy từng bước trong vòng lặp thử xem nó nhận cái ItemFromID đó như thế nào: 604 thì nó thấy gì và 605 thì thấy gì?
Dạ em cũng tìm được đoạn code này ạ. Nó loop được các ID trong các shape đó, nhưng cứ box nào mà có 2 ID là nó chỉ loop hiển thị lấy được 1 cái ạ

Dim intCounter As Integer
Dim intShapeCount As Integer
Dim vsoShapes As Visio.Shapes

Set vsoShapes = ActiveDocument.Pages.Item(1).Shapes

intShapeCount = vsoShapes.Count

If intShapeCount > 0 Then
For intCounter = 1 To intShapeCount
MsgBox vsoShapes.Item(intCounter).Text
Next intCounter
Else
MsgBox " No Shapes On Page"
End If
 
Upvote 0
Web KT

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

Back
Top Bottom