Недавно столкнулся с этой проблемой, когда я записывал большие объемы текста (~ 100 тыс. Строк) в сетевой файл. Поскольку каждая команда Print создает операции ввода-вывода, процесс записи файла был очень медленным. Однако создание большой строки путем объединения в нее новых строк также оказалось очень медленным, как объяснено в других ответах.
Я решил эту проблему, записав отдельные строки в буферный массив, затем соединив этот массив в строку, которая затем записывается в файл сразу.
Исходя из вашего примера, это будет что-то вроде:
Dim buffer() as Variant
Dim i as Long
i = 1
ReDim buffer(1 to Ubound(strvar1) * Ubound(strvar2) * Ubound(strvar3) * Ubound(strvar4)
For var1 = 1 to UBound(strvar1)
For var2 = 1 to UBound(strvar2)
For var3 = 1 to UBound(strvar3)
For var4 = 1 to UBound(strvar4)
buffer(i) = texte
i = i + 1
Next var4
Next var3
Next var2
Next var1
Open strFile For Output As #fNum
Print #fNum Join(buffer, vbCrLf)
Close #fNum
Это предотвращает как издержки инкрементных конкатенаций (функция Join масштабируется линейно с количеством строк вместо экспоненциальных, как это делает конкатенация), так и издержки ввода / вывода при записи многих строк индивидуально в сетевой файл. 1006 *