gpt4 book ai didi

vba - 使用Application.GetOpenFilename后在vba中关闭文件

转载 作者:行者123 更新时间:2023-12-02 11:15:03 25 4
gpt4 key购买 nike

我正在一个名为 OpenSees 的软件中对钢筋混凝土建筑进行分析。分析结果写入txt文件中,因此为了分析这些结果,我使用vba读取txt文件并将其写入Excel中。第一次写入数据没有问题。

当第一次将 txt 文件写入 Excel 后,我尝试在不关闭 Excel 的情况下第二次运行 OpenSees 时,出现了问题。 Opensees 指出 txt 文件已打开,因此无法覆盖它们。我想在使用 Close #1 之后文件就被关闭了。

到目前为止,我要做的是第一次运行 OpenSees,使用 vba 将结果写入 Excel,保存并关闭 Excel,第二次运行 OpenSees,...等等。

我用来编写文件的主要代码是

ruta1 = Application.GetOpenFilename("text Files (*.out),*.out", MultiSelect:=True)
If Not IsEmpty(ruta1) Then

For i = LBound(ruta1) To UBound(ruta1)

Open ruta1(i) For Input As #1

Do Until EOF(1)
Line Input #1, linea
valor = Split(linea, " ") ' valor(i) : 0 time - 1 Ux - 2 Uy - 3 Rz
h5.Cells(f_elong + j, c_elong) = valor(1) / hw * 100
h5.Cells(f_elong + j, c_elong + 1) = valor(2) / lw * 100
h6.Cells(f_FD + j, c_FD) = valor(1) / hw * 100
j = j + 1
Loop

Close #1

Next

End If

最佳答案

不确定这是否能解决您的问题,但不要硬编码文件编号;请改用 FreeFile 函数,让 VBA 为您提供文件编号:

Dim fileNumber As Integer
fileNumber = FreeFile

Open ruta1(i) For Input As #fileNumber

Do Until EOF(fileNumber)
Line Input #fileNumber, linea
...
Loop

Close #fileNumber

此外,您正在处理外部资源 - 这里应该有适当的错误处理,并带有一个清理子例程,以确保在程序退出之前关闭所有打开的文件:

    On Error GoTo CleanFail

Dim fileNumber As Integer
...

CleanExit:
Close 'hammer: no file number closes all opened files
Exit Sub

CleanFail:
MsgBox Err.Description, vbCritical
Resume CleanExit
End Sub

关于vba - 使用Application.GetOpenFilename后在vba中关闭文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com