Office belgeleriyle çalışırken, bu belgeleri Visual Basic'te doğrudan görüntülemek isteyebilirsiniz, ancak OLE kapsayıcısı denetimi kullanarak katıştırılmış OLE nesnesi oluşturmak istemiyorsanız. Bunun yerine, varolan bir belgeye bağlamak ve nesne yerinde ActiveX belge olarak açmak istiyor. Neyse ki Microsoft WebBrowser denetimi, bir çözüm sunar.
Bu makalede, varolan bir Office belgesine ulaşmak ve arabirimin WebBrowser denetimi kullanarak, Visual Basic içinde görüntülemek gösterilmiştir.
ActiveX belgeleri, daha geleneksel bir OLE nesneleri daha ActiveX denetimleri gibi davranmasına embeddable OLE nesneleri adı verilir. Normal bir katıştırılmış nesne farklı olarak, bir ActiveX belge daha büyük bir belgenin içindeki bir nesne için tasarlanmamıştır. Bunun yerine, yalnızca bir Görüntüleyici (ınternet Explorer gibi) tarafından görüntülenen veya diğer belgeleri içeren tek bir kaynak olarak toplanan belgenin tamamını, kendi içinde değerlendirilir (örneğin, bir Ciltçi dosyası).
ActiveX belgeleri doğrudan barındırma Microsoft Visual Basic şu anda desteklemez, ancak bu kısıtlamaya bir ınternet Explorer WebBrowser denetimi ve özelliklerini kullanarak çalışabilirsiniz. WebBrowser denetimini (Shdocvw.dll), ınternet Explorer'ın bir parçasıdır ve yalnızca ınternet Explorer yüklü olan sistemlerde kullanılabilir.
Bir Visual Basic uygulaması oluşturma Office belgeleri açar.
Office belgeleri açan bir Visual Basic uygulaması oluşturmak için aşağıdaki adımları kullanın:
Visual Basic'ı başlatın ve yeni bir standart projesi oluşturun. Varsayılan olarak, Form1 oluşturulur.
Proje menüsünden <a0>Bileşenler</a0> iletişim kutusunu açmak için Bileşenler ' i seçin. Bileşenleri iletişim kutusunda, Ortak iletişim denetim Microsoft ve Microsoft Internet denetimleri ekleyin. Araç kutusuna öğeleri eklemek için Tamam'ı tıklatın.
WebBrowser denetiminin CommonDialog ekleyin denetimi ve Form1 için'bir KomutDüğmesi.
Ardından, kod penceresine Form1 için aşağıdaki kodu ekleyin:
Option Explicit
Dim oDocument As Object
Private Sub Command1_Click()
Dim sFileName As String
' Find an Office file...
With CommonDialog1
.FileName = ""
.ShowOpen
sFileName = .FileName
End With
' If the user didn't cancel, open the file...
If Len(sFileName) Then
Set oDocument = Nothing
WebBrowser1.Navigate sFileName
End If
End Sub
Private Sub Form_Load()
Command1.Caption = "Browse"
' For the 2007 Microsoft Office documents, change the .Filter parameter of the
' With CommonDialog1 statement to:
' .Filter = "Office Documents " & _
' "(*.docx, *.xlsx, *.pptx)|*.docx;*.xlsx;*.pptx"
With CommonDialog1
.Filter = "Office Documents " & _
"(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt"
.FilterIndex = 1
.Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly
End With
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set oDocument = Nothing
End Sub
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, _
URL As Variant)
On Error Resume Next
Set oDocument = pDisp.Document
MsgBox "File opened by: " & oDocument.Application.Name
End Sub
Proje çalıştırmak için F5 tuşuna basın. Gözat düğmesini seçtiğinizde, Word, Excel veya dosyaya ulaþmak için Aç iletişim kutusu görüntülenir. WebBrowser denetimi içinde açın ve belgeyi açması gerektiğini seçin. Bir ileti kutusu dosyası Office uygulamasının adını görüntüler, sonra görünür.
2007 Microsoft Office programlarında WebBrowser denetimi kullanırken göz önüne alınması gerekenler
WebBrowser kullandığınızda aşağıdaki düşünülmesi gereken denetimi:
WebBrowser denetimi, zaman uyumsuz olarak belgeleri için gider. Bu belge, tümüyle yüklü yapıldı önce çağrı denetimi için Visual Basic uygulamanız döndürmesidir anlamına gelir. Bu durum WebBrowser1.Navigate call oluşur. Içerdiği belge otomatikleştirmek istiyorsanız, NavigateComplete2 olay kullanabilir, böylece belge yükleme zaman tamamladı bilirsiniz. Office belge nesnesine yapılan başvuru almak için <a0>WebBrowser</a0> nesnesinin belge özelliğinin kullanın. Önceki kodda başvuru oDocument için ayarlanır.
Birden fazla projede birden fazla WebBrowser denetimi varsa ve her denetimi ile aynı tür Office belgesini yüklenen sorunları ortaya bilinen. Diğer bir deyişle, her denetim, tüm Word belgeleri veya tüm Excel elektronik tablolarını da içerir. Proje başına yalnızca bir denetimi kullanın ve bir defada bir belgeye taşıma öneririz.
WebBrowser geçerli içeriğini temizlemek için <a0></a0>, başka bir komut düğmesinin Tıklat olay varsayılan boş sayfaya gitmek için şu kodu kullanın. Veya bazı diğer uygun yere kodunuzu bunu.
WebBrowser1.Navigate "about:blank"
WebBrowser denetimi Office'in önceki sürümlerinde ve Microsoft Office 2003 programları kullandığınızda göz önüne alınması gerekenler
WebBrowser kullandığınızda aşağıdaki düşünülmesi gereken denetimi:
WebBrowser denetimi, zaman uyumsuz olarak belgeleri için gider. Bu, WebBrowser1.Navigate çaðýrdýðýnýzda, çağrı denetimi belgenin tamamen yüklendiğinden, Visual Basic uygulaması önce için döndürmesidir anlamına gelir. Içerdiği belge otomatikleştirme hakkında düşünüyorsanız, NavigateComplete2 olay belge yükleme zaman tamamladı bilmek kullanmanız gerekebilir. Belge özelliğinin olan, önceki kod oDocument için Office belgesi nesnesine bir başvuru almak için geçilen <a1>WebBrowser</a1> nesnesinin kullanın.
WebBrowser denetimi menü birleştirme desteklemiyor. Visual Basic menünüzdeki görünmesini belgenin menü öğeleri gerekiyorsa, bunun yerine OLE kapsayıcısı denetimi kullanmalısınız.
WebBrowser denetimi genellikle bir Office belgesini görüntülemeden önce herhangi bir yerleşik araç çubuklarını gizler. Bu gibi kodu kullanarak bir kayan araç çubuğunu göstermek için Otomasyonu'nu kullanabilir:
With oDocument.Application.CommandBars("Standard")
.Position = 4 '[msoBarFloating]
.Visible = True
End With
ınternet Explorer (5.0 veya daha büyük) daha yeni sürümlerini de aşağıdaki kodu kullanarak yerleşik araç çubuklarını görüntülemek izin:
' This is a toggle option, so call it once to show the
' toolbars and once to hide them. This works with Internet Explorer 5
' but often fails to work properly with earlier versions...
WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
Birden fazla WebBrowser denetimi bir projede olması ve her denetimi ile aynı tür Office belgesini (diğer bir deyişle, tüm Word belgeleri veya tüm elektronik Excel) yüklü olması, birkaç bilinen sorunlar vardır. Bu, yalnızca her proje için bir denetim kullanın ve bir defada bir belgeye gidin, önerilir.
En yaygın sorun, devre dışı bırakılmış Office komut çubuklarını ile ilgilidir. Aynı form üzerindeki iki WebBrowser denetimi varsa, her ikisini de Word belgeleriyle yüklenen ve araç çubuklarını önceki tekniklerden birini kullanarak görüntülenmesini, etkin çalışma ve araç çubukları yalnızca bir alt kümesini olacaktır doğru. Diğer devre dışı bırakılır ve kullanılamaz.
WebBrowser geçerli içeriğini temizlemek için <a0></a0>, bu kodu kullanarak varsayılan boş sayfa için başka bir komut düğmesini tıklatarak olayının (veya bazı diğer uygun yere kodunuzu), gidin:
Makale numarası: 243058 - Last Review: 21 Ağustos 2007 Salı - Gözden geçirme: 6.2
Bu makaledeki bilginin uygulandığı durum:
Microsoft Office Excel 2007
Microsoft Office Excel 2003
Microsoft Excel 2002 Standard Edition
Microsoft Excel 2000 Standard Edition
Microsoft Excel 97 Standard Edition
Microsoft Office PowerPoint 2007
Microsoft Office PowerPoint 2003
Microsoft PowerPoint 2002 Standard Edition
Microsoft PowerPoint 2000 Standard Edition
Microsoft PowerPoint 97 Standard Edition
Microsoft Office Word 2007
Microsoft Office Word 2003
Microsoft Word 2002 Standard Edition
Microsoft Word 2000 Standard Edition
Microsoft Word 97 Standard Edition
Microsoft Visual Basic 6.0 Professional Edition
Microsoft Visual Basic 5.0 Professional Edition
Microsoft Visual Basic Enterprise Edition for Windows 6.0
Microsoft Visual Basic 5.0 Enterprise Edition
Anahtar Kelimeler:
kbmt kbexpertiseinter kbhowto KB243058 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.