Why am I getting ‘File could not be opened?’ error in ADODB.Stream
Problem
I’m currently getting Run-time error '3002': File could not be opened
on the below line FileStream.LoadFromFile fileCurrent.Path
.
What I’ve Tried
- Making sure the path is valid
- Using the immediate window, I can see that
?fileCurrent.Path
=
C:Users(puzzlepiece87)DesktopTest.txt
- Using the immediate window, I can see that
- Using a fresh text file
- I created Test.txt as a blank file in which I typed «Hello», pushed Enter, typed «Goodbye», and then saved as the ANSI default.
- Making sure the procedure being in a class module didn’t hurt anything
- I tried it in a standard module as well
- I tried moving it out of Personal.xlsb to a standard workbook
- Using a standard workbook had the same issue
Remaining Questions
- What am I doing wrong that is causing the 3002 error?
- Am I misunderstanding
.LoadFromFile
‘sFileName
parameter? It says here that it will accept any valid path and name in UNC format.
Class Module classReallyBigFiles
Option Explicit
Public Sub ReadLargeFile(ByVal fileCurrent As Scripting.File)
Dim FileStream As ADODB.Stream
Set FileStream = New ADODB.Stream
FileStream.Type = adTypeText
FileStream.LineSeparator = adCRLF
FileStream.Mode = adModeReadWrite
FileStream.Open
FileStream.LoadFromFile fileCurrent.Path
MsgBox FileStream.ReadText(-2)
FileStream.Close
End Sub
asked Feb 7, 2018 at 19:17
puzzlepiece87puzzlepiece87
1,5272 gold badges19 silver badges35 bronze badges
8
I MCVE’d too hard and left out the part where I was opening the file as Binary, then trying ADODB.Stream when the file was too big to save the entire file contents to a string by that method, but I had forgotten to close the Binary attempt first.
answered Feb 7, 2018 at 22:19
puzzlepiece87puzzlepiece87
1,5272 gold badges19 silver badges35 bronze badges
Почему я получаю «Файл не может быть открыт?»ошибка в ADODB.Stream
проблема
Я сейчас получаюRun-time error '3002': File could not be opened
в нижней строкеFileStream.LoadFromFile fileCurrent.Path
,
Что я пробовал
- Убедиться в правильности пути
- Используя непосредственное окно, я вижу, что
?fileCurrent.Path
знак равноC:Users(puzzlepiece87)DesktopTest.txt
- Используя непосредственное окно, я вижу, что
- Используя свежий текстовый файл
- Я создал Test.txt в виде пустого файла, в котором набрал «Hello», нажал «Enter», напечатал «Goodbye», а затем сохранил значение по умолчанию ANSI.
- Убедиться, что процедура в модуле класса ничего не повредила
- Я попробовал это также в стандартном модуле
- Я попытался переместить его из Personal.xlsb в стандартную книгу
- Использование стандартной рабочей книги имело ту же проблему
Оставшиеся вопросы
- Что я делаю не так, что вызывает ошибку 3002?
- Я недоразумение
.LoadFromFile
«sFileName
параметр? Здесь говорится, что он примет любой допустимый путь и имя в формате UNC.
Модуль класса classReallyBigFiles
Option Explicit
Public Sub ReadLargeFile(ByVal fileCurrent As Scripting.File)
Dim FileStream As ADODB.Stream
Set FileStream = New ADODB.Stream
FileStream.Type = adTypeText
FileStream.LineSeparator = adCRLF
FileStream.Mode = adModeReadWrite
FileStream.Open
FileStream.LoadFromFile fileCurrent.Path
MsgBox FileStream.ReadText(-2)
FileStream.Close
End Sub
2018-02-07 19:17
1
ответ
Я сделал слишком сложный MCVE и пропустил ту часть, где я открывал файл как Binary, а затем попытался ADODB.Stream, когда файл был слишком большим, чтобы сохранить все содержимое файла в строку этим способом, но я забыл закрыть Бинарная попытка первая.
2018-02-07 22:19
Почему я получаю сообщение «Не удалось открыть файл?» ошибка в ADODB.Stream
Проблема
В настоящее время я получаю Run-time error '3002': File could not be opened
в строке ниже FileStream.LoadFromFile fileCurrent.Path
.
Что я пробовал
- Убедитесь, что путь действителен
- В ближайшем окне я вижу, что
?fileCurrent.Path
=C:Users(puzzlepiece87)DesktopTest.txt
- В ближайшем окне я вижу, что
- Использование свежего текстового файла
- Я создал Test.txt как пустой файл, в котором набрал «Hello», нажал Enter, набрал «Goodbye», а затем сохранил его как файл по умолчанию ANSI.
- Убедиться, что процедура, находящаяся в модуле класса, ничему не повредила
- Я тоже пробовал это в стандартном модуле
- Я пробовал переместить его из Personal.xlsb в стандартную книгу
- При использовании стандартной книги возникла та же проблема.
Остающиеся вопросы
- Что я делаю не так, что вызывает ошибку 3002?
- Я неправильно понимаю параметр
.LoadFromFile
FileName
? Здесь написано , что он примет любой допустимый путь и имя в формате UNC.
Модуль класса classReallyBigFiles
Option Explicit
Public Sub ReadLargeFile(ByVal fileCurrent As Scripting.File)
Dim FileStream As ADODB.Stream
Set FileStream = New ADODB.Stream
FileStream.Type = adTypeText
FileStream.LineSeparator = adCRLF
FileStream.Mode = adModeReadWrite
FileStream.Open
FileStream.LoadFromFile fileCurrent.Path
MsgBox FileStream.ReadText(-2)
FileStream.Close
End Sub
1 ответ
Лучший ответ
Я слишком усердно MCVE и упустил ту часть, где я открывал файл как двоичный, а затем пытался ADODB.Stream, когда файл был слишком большим, чтобы сохранить все содержимое файла в строку с помощью этого метода, но я забыл закрыть Бинарная попытка первая.
0
puzzlepiece87
8 Фев 2018 в 01:19
- Remove From My Forums
-
Question
-
User-561325632 posted
Hello, Our existing application in .NET calls ASP web page to fetch image from server.
Following is code excerpt which is giving error in newly deployed 2008R2 64 bit server with IIS7
The error that is thrown is from 5th line below and error# is 3002.I’ve exhausted my web search before posting this issue.
I’ve used «Classic pool» with «Full control» to the directory for specific user in «Identity» in respective application pool.
Is this even supported in 64 bit server ? Any idea is appreciated.Thanks
VaquarSet Stm = CreateObject(«ADODB.Stream»)
Stm.Type = adTypeBinary
Stm.LoadFromFile(path)
If Err.description <> «» Then
Response.Write(«ScanUtil.asp:LoadFromFile:»&Err.description)
Stm.Close
Set Stm = Nothing
Response.End
End If
iSize = Stm.Size
chunk = 524288
Response.AddHeader «content-Length»,iSize
For i = 1 to iSize chunk
If Response.IsClientConnected Then
Response.BinaryWrite Stm.Read(chunk)
Response.Flush
If Err.description <> «» Then
Response.Write(«ScanUtil.asp:Read: «&path& chr(13) & chr(10)&» ErrorDesc:»&Err.Description& chr(13) & chr(10)&» ErrorNumber:»&Err.number& chr(13) & chr(10))
Stm.Close
Set Stm = Nothing
Response.End
End If
Else
Exit For
End If
Next
…
Answers
-
User-561325632 posted
Solution was to add «Response.Flush» in the last chunk read.In my code snippet, I didn’t add following code. So after «Next» when last chunk is read, I added «Flush»
If iSize Mod chunk > 0 Then
If Response.IsClientConnected Then
Response.BinaryWrite Stm.Read(iSize Mod chunk)
Response.Flush ‘ added this line, which worked fine in II6.
End If
End IfCheers
-
Marked as answer by
Tuesday, September 28, 2021 12:00 AM
-
Marked as answer by
Предложите, как улучшить StudyLib
(Для жалоб на нарушения авторских прав, используйте
другую форму
)
Ваш е-мэйл
Заполните, если хотите получить ответ
Оцените наш проект
1
2
3
4
5