[VBA Excel]

Pagina: 1
Acties:
  • 241 views

Acties:
  • 0 Henk 'm!

  • alkoura
  • Registratie: December 2008
  • Laatst online: 13-02-2023
* Sorry voor de titel maar dit kan blijkbaar niet meer ge-edit worden.

Hoi,

Ik probeer wat vba te leren voor Excel maar stuit al op een probleem.

Ik zou graag de waarden van bepaalde cellen uit verschillende Excel bestanden veranderen. Daarvoor heb ik een beetje code geschreven met de bedoeling de bestanden een voor een te openen, cell wijzigen en vervolgens saven en sluiten.
Mijn code loopt vast op volgende regel:
Workbooks("C:\test\" & sBuf).Worksheets("sheet1").Range("A2").Value = "Changed"

De code die vooraf gaat is: Workbooks.Open Filename:="C:\test\" & sBuf
Het bestand gaat dan ook open maar bij de change value loopt het mis met volgende error:
Runtime error 9: Subscript out of range.

Ik heb me suf gezocht naar een mogelijke oorzaak maar ik vind niets.
De volledige code:

Sub ReadAsciiFile()
Dim sFileName As String
Dim iFileNum As Integer
Dim sBuf As String
sFileName = "C:\test\list.txt" 'Dit bevat een lijst met alle bestanden in de directory test
If Len(Dir$(sFileName)) = 0 Then 'checken of het bestand bestaat
Exit Sub
End If

iFileNum = FreeFile()
Open sFileName For Input As iFileNum

Do While Not EOF(iFileNum)
Line Input #iFileNum, sBuf

Debug.Print sBuf
If InStr(sBuf, ".xls") Then
test = "c:test\" & sBuf
Workbooks.Open Filename:="C:\test\" & sBuf
Workbooks("C:\test\" & sBuf).Worksheets("sheet1").Range("A2").Value = "Changed"
'lijn hierboven loopt mis
Workbooks("C:\test\" & sBuf).Save
Workbooks("C:\test\" & sBuf).Close
End If
Loop
Close iFileNum
End Sub

Graag advies :)

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
De naam die je gebruikt klopt, in ieder geval in 2007, niet. Oplossing:
Workbooks.Open Method
[...]
Return Value
A Workbook object that represents the opened workbook.
offtopic:
Gebruik de volgende keer [code=vb]-tags, post VBA-vragen in OFF en gebruik Afbeeldingslocatie: http://tweakimg.net/g/forum/images/icons/icon_hand.gif voor titelsuggesties. ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • alkoura
  • Registratie: December 2008
  • Laatst online: 13-02-2023
Code veranderd en nu werkt het wel:
Sub ReadAsciiFile()
Dim sFileName, test As String
Dim iFileNum As Integer
Dim sBuf As String
sFileName = "C:\test\list.txt" 'Dit bevat een lijst met alle bestanden in de directory test
If Len(Dir$(sFileName)) = 0 Then 'checken of het bestand bestaat
Exit Sub
End If

iFileNum = FreeFile()
Open sFileName For Input As iFileNum

Do While Not EOF(iFileNum)
Line Input #iFileNum, sBuf

Debug.Print sBuf
If InStr(sBuf, ".xls") Then
test = "c:test\" & sBuf
Workbooks.Open Filename:="C:\test\" & sBuf
ActiveWorkbook.ActiveSheet.Cells(2, 1).Value = "changed" 'rij en dan kolom
ActiveWorkbook.Close True
End If
Loop
Close iFileNum
End Sub

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
pedorus schreef op zondag 29 november 2009 @ 21:16:
Gebruik de volgende keer [code=vb]-tags, post VBA-vragen in OFF en gebruik [afbeelding] voor titelsuggesties. ;)
Wat hij zegt. Let daar in het vervolg op.

Aangezien het al opgelost is en het topic verder nogal onleeabaar is gaat deze op slot.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Dit topic is gesloten.