2016-03-28 14 views
0

listesinde nasıl bulunur? Bu kodu başka bir yayında buldum ve değiştirmeyi denedim ancak hata verdi. Amaç, belirli bir sayfadaki tüm onay kutularını ve seçenek tuşlarını, altyazılarını, değerlerini ve renklerini listelemektir. (.caption, .value ve .backcolor çalışma zamanı hatası 438. Ayrıca, bu çalışma kitabının bir parçası olan bir çalışma sayfasında bunları listelemek istiyorum, bu kodun yaptığı gibi ayrı bir dosya değil. Herhangi bir yardım büyük beğeni topluyor.Bir sayfada bulunan tüm nesneler, altyazı ve değer

Sub ListAllObjects() 
Dim ws As Worksheet 
Dim objFSO As Object 
Dim objFil As Object 
Dim Sh As Shape 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.CreateTextFile("C:\temp\summary.csv") 

objFile.writeline "Sheet, Object Type, Object name, Object Caption, Object Value, Object Color" 

For Each ws In ActiveWorkbook.Sheets 'keeing this in case I want it later 

If ws.Name = "Hotel Check Sheet" Then 

For Each Sh In ws.Shapes 
    If InStr(Sh.Name, "checkbox") > 0 Or InStr(Sh.Name, "optionbutton") > 0 Then 
    objFile.writeline ws.Name & "," & TypeName(Sh) & "," & Sh.Name & "," & Sh.Caption & "," & Sh.Value & "," & Sh.Color 
    End If 
Next 

End If 
Next 

objFile.Close 

End Sub 

cevap

0

bir "Nesne bu özelliği veya yöntemi desteklemiyor" olsun nedeni hatası Shape bir Caption, Value veya Color özelliği olmadığı için basitçe. temelde kontrolü için bir konteyner haline geliyor , sen .OLEFormat.Object de bulacaksınız ki:

With Sh.OLEFormat.Object 
    objFile.WriteLine ws.Name & "," & _ 
         TypeName(Sh.OLEFormat.Object) & "," & _ 
         .Name & "," & _ 
         .Caption & "," & _ 
         .Value & "," & _ 
         .Interior.Color 
End With 

Not th ne bir OptionButton ne de CheckBox da .Color özelliğine sahiptir. .Interior.Color'u kontrol etmeniz gerekir.

+0

Teşekkür ederiz, @Comintern. Bunu bağlamda nasıl kullanacağımı lütfen söyler misiniz? "InStr (Sh.Name," onay kutusu ")> 0 veya InStr (Sh.Name," optionbutton ")> 0 Sonra" ancak sonra yok "ifadesinin arkasına koymaya çalıştım. Ayrıca, yeni bir dosya yerine varolan çalışma kitabındaki bir sayfaya nasıl yazılacağı konusunda herhangi bir kavrayışınız var mı? –

+0

@JoePatrick - "If" ifadesini "If TypeName (Sh.OLEFormat.Object) =" CheckBox "olarak değiştirmeyi deneyin. Veya TypeName (Sh.OLEFormat.Object) =" OptionButton " – Comintern

İlgili konular