Voor een gegevens bestand te maken heb ik onderstaande code geschreven:
In
staat een getal, het aantal padnamen dat beschikbaar is.
zijn de padnamen, allemaal in kolom 33 beginnend vanaf rij 2 lopende tot de rij die hierboven aangegeven staat.
heb ik erin gezet om te kijken hoelang het duurt voordat alles gekopieerd is. Ik heb namelijk een lijst met 500 excel bestanden die zo nagezocht moet worden, maar wil eerst kijken hoelang het duurt om 10% te doen. Hierna wordt dit bestand op een server aangezet, als het werkende is.
Het kan zijn dat er code anders geschreven kan worden, maar dit is niet het probleem.
Als in het blad wat ik opvraag iets staat als onderstaande foto, krijg ik een foutmelding in de regel:

Hoe los ik dit op?
3 oplossingen zijn voor mij OK:
1. Deze regel als witregel schrijven (als "" schrijven)
2. Deze regel overslaan
3. Dit bestand overslaan
Liefst zie ik oplossing 1.
Code:
Sub test()
Application.Calculation = xlManual
Application.ScreenUpdating = False
Const ForReading = 1, ForAppending = 8
Const TriStateUseDefault = -2, TriStateTrue = -1, TriStateFalse = 0
Dim objFSO As Object, objTS As Object
Dim src As Workbook
Dim pad As String
Dim Stammap, Totaalrij As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile("J:\Data\Meetmiddelen\test.csv", ForAppending, TriStateUseDefault)
Worksheets("Blad1").Range("$AE$2") = Now
Dim RIJ, RIJEXT, X, Y, Z As Integer, A, B, C, D, E, F, G As String
X = Worksheets("Blad1").Range("$AG$1")
For RIJ = 2 To X
pad = Worksheets("Blad1").Cells(RIJ, 33)
Set src = Workbooks.Open(pad, False, True)
src.Worksheets("Blad2").Activate
Cells.Select
Selection.EntireColumn.Hidden = False
Selection.EntireRow.Hidden = False
'MsgBox Cells(9, 6)
For RIJEXT = 9 To 500
If IsError(Cells(RIJEXT, 1)) = False Then
A = Cells(RIJEXT, 1)
Else
A = ""
End If
If IsError(Cells(RIJEXT, 2)) = False Then
B = Cells(RIJEXT, 2)
Else
B = ""
End If
If IsError(Cells(RIJEXT, 3)) = False Then
C = Cells(RIJEXT, 3)
Else
C = ""
End If
If IsError(Cells(RIJEXT, 4)) = False Then
D = Cells(RIJEXT, 4)
Else
D = ""
End If
If IsError(Cells(RIJEXT, 5)) = False Then
E = Cells(RIJEXT, 5)
Else
E = ""
End If
If IsError(Cells(RIJEXT, 6)) = False Then
F = Cells(RIJEXT, 6)
Else
F = ""
End If
If IsError(Cells(RIJEXT, 7)) = False Then
G = Cells(RIJEXT, 7)
Else
G = ""
End If
Totaal_rij = pad & ";" & _
A & ";" & _
B & ";" & _
C & ";" & _
D & ";" & _
E & ";" & _
F & ";" & _
G
objTS.WriteLine Totaal_rij
Next RIJEXT
RIJEXT = 9
src.Close False
Set src = Nothing
Next RIJ
src.Close False
Set src = Nothing
Worksheets("Blad1").Range("$AE$3") = Now
End Sub
In
Code:
Worksheets("Blad1").Range("$AG$1")
Code:
pad = Worksheets("Blad1").Cells(RIJ, 33)
Code:
Worksheets("Blad1").Range("$AE$3") = Now
Het kan zijn dat er code anders geschreven kan worden, maar dit is niet het probleem.
Als in het blad wat ik opvraag iets staat als onderstaande foto, krijg ik een foutmelding in de regel:
Code:
objTS.WriteLine Totaal_rij

Hoe los ik dit op?
3 oplossingen zijn voor mij OK:
1. Deze regel als witregel schrijven (als "" schrijven)
2. Deze regel overslaan
3. Dit bestand overslaan
Liefst zie ik oplossing 1.
Laatst bewerkt: