Avatar billede splokit Nybegynder
03. juli 2006 - 10:28 Der er 8 kommentarer og
1 løsning

VB åben .xls

Private Sub CommandButton1_Click()
if Workbooks.Open "G:\X\X.xls" then
else
Workbooks.Open "G:\X\X.xls" then
End if

Det den skal er åbne en fil og hvis filen er åben skal den ikke åbne den igen!?
Avatar billede kabbak Professor
03. juli 2006 - 11:36 #1
Private Sub CommandButton1_Click()
    If Not WB_Loaded("G:\X\X.xls") Then
        Workbooks.Open "G:\X\X.xls"
    Else
        Windows("X.xls").Activate
    End If
End Sub

Public Function WB_Loaded(WB) As Boolean
    Dim W As Workbook
    For Each W In Workbooks
        If W.Name = WB Then
            WB_Loaded = True
            Exit Function
        End If
    Next W
    WB_Loaded = False
End Function
Avatar billede kabbak Professor
03. juli 2006 - 11:36 #2
et svar
Avatar billede splokit Nybegynder
03. juli 2006 - 11:53 #3
nej åbner det selv om det er åbnet.

åben "X" men hvis "X" er True skal den aktivere den og hvis den ikke er skal den åbne den og aktivere den...
Avatar billede splokit Nybegynder
03. juli 2006 - 11:57 #4
mappe 2 er den som den skal åbne hvis den ikke er åben.
Dim i, o, p As Integer
Dim arr(4 To 300, 1) As Variant

Windows("Mappe2.xls").Activate

For i = 4 To 300
    arr(i, 0) = Sheets("Ark2").Cells(i, 1).Value
    arr(i, 1) = Sheets("Ark2").Cells(i, 11).Value
Next i


Windows("Mappe1.xls").Activate

For o = 3 To 76
    For p = 4 To 300
        If Sheets("Ark1").Cells(o, 3).Value = arr(p, 0) Then
            Sheets("Ark1").Cells(o, 5) = arr(p, 1)
            Exit For
        End If
    Next p
Next o
Avatar billede brynil Nybegynder
03. juli 2006 - 16:17 #5
kabbaks forslag fungerer fint hvis du ændrer linien:

    If Not WB_Loaded("G:\X\X.xls") Then

til
    If Not WB_Loaded("X.xls") Then

Hans funktion checker på mappenavnet - W.Name - og ikke på stien.
Avatar billede bak Forsker
03. juli 2006 - 16:32 #6
jeps, brynil.
alternativt

On Error Resume Next
Workbooks("mappe2.xls").Activate
If Err.Number <> 0 Then Workbooks.Open "c:\mappe2.xls"
Avatar billede brynil Nybegynder
03. juli 2006 - 16:46 #7
Og hvis jeg lige stjæler bak's forslag, som er det korteste, til dit spm http://www.eksperten.dk/spm/718397, så kan du klare dig med:

Dim i, o, p As Integer
Dim arr(4 To 300, 1) As Variant

Application.ScreenUpdating = False

On Error Resume Next
Workbooks("mappe2.xls").Activate
If Err.Number <> 0 Then Workbooks.Open "C:\Mappe2.xls"

For i = 4 To 300
    arr(i, 0) = Sheets("Ark2").Cells(i, 1).Value
    arr(i, 1) = Sheets("Ark2").Cells(i, 11).Value
Next i
   
ActiveWorkbook.Close

Windows("Mappe1.xls").Activate

For o = 3 To 76
    For p = 4 To 300
        If Sheets("Ark1").Cells(o, 3).Value = arr(p, 0) Then
            Sheets("Ark1").Cells(o, 5) = arr(p, 1)
            Exit For
        End If
    Next p
Next o
   
Application.ScreenUpdating = True
Avatar billede splokit Nybegynder
04. juli 2006 - 18:11 #8
svar til bak. brynil du har på det første spørgsmål
Avatar billede splokit Nybegynder
03. august 2006 - 14:15 #9
Humm
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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