Avatar billede mhp_dk Nybegynder
02. marts 2004 - 12:18 Der er 7 kommentarer og
1 løsning

VBA gem fil når indhold forskellig "Nej"

Dette script har jeg fået tidligere fra eksperten, men vil gerne have tilføjet at hvis indholdet af de celler der skal eksporteres er = "Nej" så skal feltet ikke eksporteres:
Sub Question279475()
    Dim rSheet As Worksheet
    Dim rUsedRange As Range
    Dim rRow As Range
    Dim rCell As Range
    Dim lFileNum As Long
    Dim sLine As String
    Dim sLine2 As String
   
    Set rSheet = Sheets("Output")
    Set rUsedRange = rSheet.UsedRange
    ' If rSheet contains headings not to be show'n in file - then activate next line
    'Set rUsedRange = rUsedRange.Offset(1, 0).Resize(rUsedRange.Rows.Count - 1)
    lFileNum = FreeFile

    Open "C:\stykliste.txt" For Output As #lFileNum
        For Each rRow In rUsedRange.Rows
            sLine = ""
            For Each rCell In rRow.Cells
                sLine = sLine & Trim(CStr(rCell.Value)) & ","
            Next rCell
            sLine2 = Mid(sLine, 1, Len(sLine) - 1)
            Print #lFileNum, sLine2
        Next rRow
    Close #lFileNum
   
    'Clean up
    Set rSheet = Nothing
    Set rUsedRange = Nothing
    Set rRow = Nothing
    Set rCell = Nothing
End Sub
Avatar billede slo Nybegynder
02. marts 2004 - 12:23 #1
Kopier det her ind i stedet for blokken med Open....Close #lFileNum. Det burde virke...

Open "C:\stykliste.txt" For Output As #lFileNum
        For Each rRow In rUsedRange.Rows
            sLine = ""
            For Each rCell In rRow.Cells
If CStr(rCell.Value) <> "Nej" Then
                sLine = sLine & Trim(CStr(rCell.Value)) & ","
End If
            Next rCell
            sLine2 = Mid(sLine, 1, Len(sLine) - 1)
            Print #lFileNum, sLine2
        Next rRow
    Close #lFileNum
Avatar billede mhp_dk Nybegynder
02. marts 2004 - 12:53 #2
Output filen forbliver åben af en eller anden grund
Avatar billede mhp_dk Nybegynder
02. marts 2004 - 13:17 #3
slo: jeg fåriøvrigt også fejlen ivalid procedure call or statement, men filer er der men forbliver åben.
Avatar billede slo Nybegynder
02. marts 2004 - 13:18 #4
Prøv at rette det til - (det er lavet i hånden og ikke efterprøvet!):
Open "C:\stykliste.txt" For Output As #lFileNum
        For Each rRow In rUsedRange.Rows
            sLine = ""
            For Each rCell In rRow.Cells
If CStr(rCell.Value) <> "Nej" Then
                sLine = sLine & Trim(CStr(rCell.Value)) & ","
End If
            Next rCell
If Len(sline) > 0 Then    'skal ikke skrive en tom linie
            sLine2 = Mid(sLine, 1, Len(sLine) - 1)  'fjerner sidste komma i linien
            Print #lFileNum, sLine2
End If
        Next rRow
    Close #lFileNum
Avatar billede slo Nybegynder
02. marts 2004 - 13:19 #5
Til ovenstående: Jeg tror det er gået galt, hvis du har en linie kun med "Nej".
Avatar billede mhp_dk Nybegynder
02. marts 2004 - 13:32 #6
Tak det var bedre.
Avatar billede slo Nybegynder
02. marts 2004 - 13:41 #7
For at sikre at du altid lukker din fil - lige gyldigt hvad der sker - kan du indsætte en meget simpel fejlhandler sådan her:
Efter alle dim'erne indsætter du linien:
On Error Goto Fejl
I stedet for linien:  Close #lFileNum  indsætter du flg. stump kode
  Fejl: If Err.number <> 0 Then
          MsgBox "Der skete en fejl"    'Ved at bruge Err.Source, Err.Description mv
        End If                          'kan man få suppl. oplysninger om fejlen
  Close #lFileNum
Avatar billede slo Nybegynder
03. marts 2004 - 08:39 #8
Lukker du ikke lige spørgsmålet?
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