Avatar billede steensommer Praktikant
04. maj 2006 - 08:10 Der er 6 kommentarer og
1 løsning

Aktivere Workbook

Hej

I nedenstående hø-klik menu
1) opretter jeg en Excel Workbook eller
2) åbner en workbook eller
3) Aktiverer en workbook

Ad 1) Gennemføres hvis workbooken ikke eksisterer
Ad 2) Gennemføres hvis workbooken eksisterer men ikke er åben
Ad 3) Gennemføres såfremt workbooken eksisterer og er åben

De første 2 fungerer upåklageligt og jeg kan uden problemer (med brug af funktionen WorkbookOpen) detektere om workbooken allerede er åben. Mit problem er få aktiveret workbooken såfremt den allerede er åben altså "set focus". Jeg anvender pt en messagebox som et alternativ (ikke specielt godt)

vh Steen

  Public Function WorkbookOpen(ByVal WorkbookName As String) As Boolean
        'Returns TRUE if the workbook is open
        WorkbookOpen = False
        On Error GoTo WorkBookNotOpen
        If Len(xlApp.Workbooks(WorkbookName).Name) > 0 Then
            WorkbookOpen = True
            Exit Function
        End If
WorkBookNotOpen:

    End Function

    Private Sub ToolStripMenuItem1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click
        Dim oPath As String = "\\server\faelles\Index data\Observationsskemaer\"
        Dim owb As String = Cpr & ".obs"

        If Cpr <> "" Then

            If Dir(oPath & owb) <> "" Then
                'Undersøger om Excel er startet
                On Error Resume Next
                'Dim xlApp As New Excel.Application
                xlApp = GetObject(, "Excel.Application")

                If Err.Number = 0 Then GoTo næste
                'Ellers starter vi excel
                xlApp = CreateObject("Excel.Application")

næste:

                If WorkbookOpen(owb) = False Then
                    With xlApp
                        .Workbooks.Open(oPath & owb)
                        .Visible = True
                    End With
                Else
                    Process.GetProcessesByName("???")
                    'xlApp.Workbooks(owb).Activate()
                    MsgBox("Observationsskemaet er allerede opstartet")
                End If

            Else
                Dim xlApp As New Excel.Application

                Dim Msg, Style, Title, Response
                Msg = "Skal der oprettes et nyt observationsskema?"    ' Define message.
                Style = vbYesNo + vbDefaultButton2    ' Define buttons.
                Title = "Meddelelsesbox"    ' Define title.
                Response = MsgBox(Msg, Style, Title)
                If Response = vbYes Then
                    With xlApp
                        .Workbooks.Open("\\server\faelles\Index\dokumenter\Observationsskabelon\Patient obs.xls")
                        .Visible = True
                        Dim WB = xlApp.ActiveWorkbook

                        With WB.Worksheets("Ordination")
                            .Range("K2").Value = Navn
                            .Range("F2").Value = Cpr
                            .Range("H2").Value = HCV
                        End With

                        WB.SaveAs(Filename:=oPath & Cpr & ".obs")
                    End With

                End If

            End If
            xlBook.Close()
            xlBook = Nothing
            xlApp = Nothing

        End If
    End Sub
Avatar billede steensommer Praktikant
04. maj 2006 - 08:11 #1
Supplement: Vb .Net windows projekt.
Avatar billede steensommer Praktikant
04. maj 2006 - 08:13 #2
problemet er altså her:

              Else
                    Process.GetProcessesByName("???")
                    'xlApp.Workbooks(owb).Activate()
                    MsgBox("Observationsskemaet er allerede opstartet")
                End If

Linien: "Process.GetProcessesByName("???")" er blot et af de mange forsøg på at løse problemet.
Avatar billede khs1a Nybegynder
04. maj 2006 - 13:16 #3
vil work book altid blive oprettet af programmet?

i givet fald burde der jo være en reference i programmet til workbook hvor workbook kan gives fokus.
Avatar billede steensommer Praktikant
04. maj 2006 - 13:21 #4
Ja workbook er oprettet af programmet. Reference - hvordan mener du?
Avatar billede khs1a Nybegynder
04. maj 2006 - 13:30 #5
Hvis programmet holder status (work åben/lukket) og xlapp er en global variabel kan man så sætte focus via xlapp?
Avatar billede steensommer Praktikant
04. maj 2006 - 14:22 #6
Global variabel

    Private xlApp As New Microsoft.Office.Interop.Excel.Application

Jeg hra mine rødder i VBA til Excel og har ingen anelse om om man kan sætte focus :0(
Avatar billede steensommer Praktikant
12. november 2006 - 12:56 #7
Lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

SporingsGruppen ApS

Frontend-udvikler

Udviklings- og Forenklingsstyrelsen

Business Analysts til samfundsvigtige it-projekter

Udviklings- og Forenklingsstyrelsen

Systemejer/Application Manager til SAP-installationer

Cognizant Technology Solutions Denmark ApS

Senior Delivery Manager