Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 1
  • 135

Tworzę aplikację w Excelu, gdzie arkusz jest kontenerem na różne powiązane pliki, w postaci osadzonych dokumentów Worda, PowerPointa itp. Chcę dać funkcjonalność szybkiego usunięcia załączników określonego typu np. Word. Nie mogę sobie z tym poradzić.

  • Zapytał
  • @ | 08.06.2013
  • TRENER ALTKOM AKADEMII

Odpowiedź (1)

  • 6

Z pomocą przyjdzie nam tu specjalny rodzaj pętli dedykowany dla kolekcji obiektów - For Each..Next
Kod można umieścić w module standardowym jako normalne makro lub w module arkusza i powiązać go z przyciskiem w nim osadzonym.

Oto kod wraz z komentarzem:

Private Sub pUsun_Click()    
 
 ' deklarujemy jeden obiekt z kolekcji    
 Dim OLEOb As Excel.OLEObject       
 
 ' i tworzymy pętlę przechodzącą przez wszystkie elementy tej kolekcji    
 ' wykorzystując właściwość progID obiektu OLEObject.        
 
 ' Zwraca ona wartość tekstową. Dla Worda w zależności o wersji będzie to:   
 ' Word.Document.12 lub Word.Document.8   
 ' dla PowerPointa z kolei: PowerPoint.Show.12        

 ' Ponieważ chcemy usunąć wszystkie Wordy, wystarczy nam    
 ' prosta funkcja tekstowa sprawdzająca 4 znaki od lewej         
 
 For Each OLEOb In ActiveSheet.OLEObjects        
     If Left(OLEOb.progID, 4) = "Word" Then OLEOb.Delete    
 Next        
 
 Set OLEOb = Nothing
End Sub

 

 

  • Odpowiedział
  • @ | 08.06.2013
  • TRENER ALTKOM AKADEMII