Office belgesini açmak için Visual Basic'te WebBrowser denetimini kullanma

Bu makalenin Microsoft Visual C# 2005 ve Microsoft Visual C# .NET sürümü için bkz. 304662.

Özet

Bir Microsoft Office belgesini doğrudan Bir Microsoft Visual Basic formunda görüntülemek veya eklemek isteyebilirsiniz. Microsoft Visual Basic 2005 ve Visual Basic .NET, bir Office belgesini forma eklemenizi sağlayan bir OLE denetimi sağlamaz. Var olan bir belgeyi eklemek ve bir Visual Basic formu içinde yerinde ActiveX belge nesnesi olarak açmak istiyorsanız, olası bir çözüm WebBrowser denetimini kullanmaktır.

Bu makalede, WebBrowser denetimini kullanarak var olan bir Office belgesine nasıl göz atılıp Visual Basic biçiminde görüntüleneceği gösterilmektedir.

Daha Fazla Bilgi

ActiveX belgeleri, geleneksel OLE nesnelerine göre ActiveX denetimleri gibi davranan eklenebilir OLE nesneleridir. Geleneksel katıştırılmış nesnelerden farklı olarak, ActiveX belgesi daha büyük bir belgedeki kapsanan nesne olacak şekilde tasarlanmamıştır. Bunun yerine, yalnızca görüntülenen (Microsoft Internet Explorer gibi) veya diğer belgelerle (Microsoft Office Bağlayıcı dosyası gibi) tek bir kaynakta toplanan eksiksiz bir belge olarak kabul edilir. WebBrowser denetiminde barındırılan bir ActiveX belgesi her zaman etkindir; bu nedenle, geleneksel OLE katıştırılmış nesnelerinden farklı olarak yerinde etkinleştirme mantığı yoktur.

Microsoft Visual Basic .NET ve Visual Basic 2005 şu anda ActiveX belgelerini doğrudan barındırmayı desteklemese de, bu amaç için WebBrowser denetimini kullanabilirsiniz. WebBrowser denetimi (Shdocvw.dll) Internet Explorer'ın bir parçasıdır ve yalnızca Internet Explorer'ın yüklü olduğu sistemlerde kullanılabilir.

Office belgelerini açan bir Visual Basic uygulaması oluşturma

Not

Office belgelerini açan bir Visual Basic uygulaması oluşturmak için yukarıdaki iki yöntemi kullandığınızda, Visual Studio 2005'te kodu değiştirmeniz gerekir. Varsayılan olarak, Windows Forms proje oluşturduğunuzda Visual Basic projeye bir form ekler. Form, Form1 olarak adlandırılır. Formu temsil eden iki dosya Form1.vb ve Form1.designer.vb olarak adlandırılır. Kodu Form1.vb.'de yazarsınız. Form1.designer.vb dosyası, Windows Forms Tasarımcısı'nın Denetimleri Araç Kutusu'ndan sürükleyip bırakarak gerçekleştirdiğiniz tüm eylemleri uygulayan kodu yazdığı yerdir.

Visual Basic uygulaması oluşturulduktan sonra projeyi çalıştırmak için F5 tuşuna basın. Gözat'a tıkladığınızda iletişim kutusu görüntülenir ve bir Word, Excel veya PowerPoint dosyasına göz atmanızı sağlar. Herhangi bir dosyayı seçin ve Aç'a tıklayın. Belge WebBrowser denetiminin içinde açılır ve Office belge sunucusunun adını görüntüleyen bir ileti kutusu görüntülenir

Yöntem 1

  1. Microsoft Visual Studio 2005 veya Microsoft Visual Studio .NET'te Visual Basic 2005 veya Visual Basic .NET kullanarak bir Windows Uygulaması projesi oluşturun. Form1 varsayılan olarak oluşturulur.

  2. Araçlar menüsünde Araç Kutusunu Özelleştir'e tıklayarak Araç Kutusunu Özelleştir iletişim kutusunu açın. COM Bileşenleri sekmesinde Microsoft WebBrowser'a bir başvuru ekleyin. WebBrowser denetimini Windows Forms araç kutusuna eklemek için Tamam'a tıklayın. WebBrowser denetimi araç kutusunda Gezgin metniyle birlikte görünür.

    Not Visual Studio 2005'te 2. adımı yapmanız gerekmez.

  3. Araç Kutusu'nu kullanarak Form1'e bir WebBrowser denetimi, bir OpenFileDialog denetimi ve bir Düğme denetimi ekleyin. Bu adım AxWebBrowser1 üye değişkenini, OpenFileDialog1 üye değişkenini ve Button1 üye değişkenini Form1 sınıfına ekler.

  4. Form1 sınıfında aşağıdaki gibi bir özel üye tanımlayın.

    Dim oDocument as Object
    
  5. Aşağıdaki kodu Form1 sınıfına yapıştırın.

    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    
    Dim strFileName As String
    
    'Find the Office document.
        With OpenFileDialog1
            .FileName = ""
            .ShowDialog()
            strFileName = .FileName
        End With
    
    'If the user does not cancel, open the document.
        If strFileName.Length Then
            oDocument = Nothing
            AxWebBrowser1.Navigate(strFileName)
        End If
    
    End Sub
    
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As _
       System.EventArgs) Handles MyBase.Load
    
    Button1.Text = "Browse"
    
    With OpenFileDialog1
            .Filter = "Office Documents " & _
            "(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt"
            .FilterIndex = 1
        End With
    
    End Sub
    
    Private Sub Form1_Closing(ByVal sender As Object, ByVal e As _
       System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    
    oDocument = Nothing
    
    End Sub
    
    Private Sub AxWebBrowser1_NavigateComplete2(ByVal sender As Object, _
       ByVal e As AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event) _
       Handles AxWebBrowser1.NavigateComplete2
    
    On Error Resume Next
    
    oDocument = e.pDisp.Document
    
    'Note: You can use the reference to the document object to
        '      automate the document server.
        MsgBox("File opened by: " & oDocument.Application.Name)
    
    End Sub
    

Yöntem 2

  1. Microsoft Visual Studio 2005 veya Microsoft Visual Studio .NET'te Visual Basic 2005 veya Visual Basic .NET kullanarak bir Windows Uygulaması projesi oluşturun. Form1 varsayılan olarak oluşturulur.

  2. Proje menüsünde Bileşenler'i seçerek Bileşenler iletişim kutusunu açın. Bileşenler iletişim kutusunda, Microsoft Ortak İletişim Kutusu Denetimi'ne ve Microsoft İnternet Denetimleri'ne başvurular ekleyin. Öğeleri araç kutusuna eklemek için Tamam'a tıklayın.

  3. Form1'e WebBrowser denetiminin, CommonDialog denetiminin ve CommandButton'ın bir örneğini ekleyin.

  4. Ardından, Form1 için Kod penceresine 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
    

WebBrowser denetimini kullanırken dikkat edilmesi gerekenler

WebBrowser denetimini kullanırken aşağıdakileri göz önünde bulundurmanız gerekir:

  • WebBrowser denetimi belgelere zaman uyumsuz olarak göz atar. WebBrowser1.Navigate çağrısı yaptığınızda, arama, belge tamamen yüklenmeden önce denetimi Visual Basic uygulamanıza döndürür. Kapsanan belgeyi otomatikleştirmeyi planlıyorsanız, belgenin yüklenmesi tamamlandığında bildirim almak için NavigateComplete2 olayını kullanmanız gerekir. Önceki kodda oDocument olarak ayarlanan Office belge nesnesine başvuru almak için geçirilen WebBrowser nesnesinin Document özelliğini kullanın.

  • WebBrowser denetimi menü birleştirmeyi desteklemiyor.

  • WebBrowser denetimi, bir Office belgesini görüntülemeden önce yerleşik araç çubuklarını genellikle gizler. Aşağıdaki gibi bir kodu kullanarak kayan bir araç çubuğunu göstermek için Otomasyon'ı kullanabilirsiniz.

    With oDocument.Application.CommandBars("Standard")
       .Position = 4 '[msoBarFloating]
       .Visible = True
    End With
    
    

    Internet Explorer'ın daha yeni sürümleri (5.0 ve üzeri), aşağıdaki kodu kullanarak yerleşik araç çubuklarını görüntülemenizi de sağlar.

    ' 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...
    AxWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER)
    
  • Bir projede birden fazla WebBrowser denetimine sahip olma ve her denetimin aynı office belgesi türüyle (tüm Word belgeleri veya tüm Excel elektronik tabloları) yüklenmesiyle ilgili bilinen birkaç sorun vardır. Proje başına yalnızca bir denetim kullanmanız ve aynı anda bir belgeye göz atmanız önerilir.

    En yaygın sorun, devre dışı görünen Office komut çubuklarıdır. Aynı formda, her ikisi de Word belgeleriyle yüklenen iki WebBrowser denetiminiz varsa ve önceki tekniklerden birini kullanarak araç çubukları görüntülediyseniz, yalnızca bir araç çubuğu kümesi etkindir ve düzgün çalışır. Diğeri devre dışıdır ve kullanılamaz.

  • Geçerli içeriğinin WebBrowser'ını temizlemek için, Başka bir komut düğmesinin tıklama olayında (veya kodunuzda uygun başka bir yerde) aşağıdaki kodu kullanarak varsayılan boş sayfaya göz atın:

       AxWebBrowser1.Navigate("about:blank")
    

WebBrowser denetimini bir 2007 Microsoft Office programıyla birlikte kullanırken dikkat edilmesi gerekenler

Varsayılan olarak, 2007 Office programları Office belgelerini Web tarayıcısında açmaz. Bu davranış, WebBrowser denetimini de etkiler. 2007 Office belgelerini açan uygulamalar geliştirirken WebBrowser denetimi yerine özel bir ActiveX belge kapsayıcısı kullanmanızı öneririz.

WebBrowser denetimiyle geriye dönük uyumluluk gerektiren mevcut uygulamalar için, Internet Explorer'ı yapılandırmak için kayıt defterini değiştirebilirsiniz. Internet Explorer'ı 2007 Office belgelerini Web tarayıcısında açacak şekilde yapılandırmak için bu yöntemi kullanabilirsiniz. Daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

927009 Windows Internet Explorer 7'de bir 2007 Microsoft Office programı belgesini görüntülemeye çalıştığınızda yeni bir pencere açılır

Not 927009 Bilgi Bankası makalesinde belirtilen yöntemi kullanarak kayıt defterini değiştirirseniz, değişiklikler uygulamada kullandığınız WebBrowser denetimini etkiler. Değişiklikler, Internet Explorer'ın tüm örneklerini de etkiler. Ayrıca, bu yöntem Microsoft Office paketlerinin gelecek sürümleri için çalışmayabilir. Bu nedenle, bu yöntemi yalnızca mevcut bir uygulamayla uyumluluk için kullanmanızı öneririz.

Başvurular

WebBrowser denetimini kullanma hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarına tıklayın:

304562 Visual Studio 2005 ve Visual Studio .NET, Windows Forms için OLE kapsayıcı denetimi sağlamaz

927009 Windows Internet Explorer 7'de bir 2007 Microsoft Office programı belgesini görüntülemeye çalıştığınızda yeni bir pencere açılır