我正在尝试将海拔.xyz文本文件组织为Visual Modflow 4.2 .VMG格式,用于地下水建模。高程的特定格式如下:
(488列,456行,3层)
(第1层,第1列,从下至上) (7个空格)海拔1(7个空格)海拔2 ....(7个空格)海拔10(下一行)(7个空格)海拔11 .......海拔20(下一行) ... 海拔456 (第1层,第2列,从底部到顶部)
.xyz文件如下所示:
X坐标(标签)Y坐标(标签)Z坐标 我将其粘贴在前3列的活动Excel工作表中。直到大约300.000行。
因此它从第一列到其所有行从上到下。
我需要制作的文件没有指定坐标,它们只是假设从下到上的顺序,并且坐标已经按照所需顺序设置了。因此,这是每条线10个高程,每条高程之间有7个空格。
`Private Sub Elevation_VMG()
Dim ElevacionesArray(1 To 488, 1 To 456) As Variant 'array with 3 layers,
488 columns, 456 rows
Dim I As Integer 'counters
Dim J As Integer
Dim S As Integer
Dim C As Integer
Dim H As Integer
Dim MyFile As String
MyFile = Application.DefaultFilePath & "C:\output.txt"
Close #1
Open "MyFile" For Output As #1
C = 2
For I = 1 To 488 '497 columnas
For J = 1 To 456 '464 filas
ElevacionesArray(I, J) =
ActiveWorkbook.Worksheets("Hoja1").Cells(3, C).Value
C = C + 1
Next J
Next I
For I = 1 To 488
C = 1
For J = 1 To 456
If C >= 10 Then
Write #1, vbNewLine
C = 1
'Array to textfile
Write #1, " " + ElevacionesArray(I, J)
C = C + 1
Next J
Next I
Close #1
End Sub`
我在VBA上还是excel的新手,所以我认为这是某种格式,我做错了,现在我遇到了1004错误。
答案 0 :(得分:0)
我已经清理了代码中的明显错误,并评论了我进行了哪些更改以帮助您理解:
Private Sub Elevation_VMG()
Dim ElevacionesArray(1 To 488, 1 To 456) As Variant 'array with 3 layers,488 columns, 456 rows
Dim I As Integer 'counters
Dim J As Integer
Dim S As Integer
Dim C As Long ' 488*456 requires a Long to hold a number of that size
Dim H As Integer
Dim MyFile As String
MyFile = Application.DefaultFilePath & "\output.txt" ' Removed reference to C drive
Close #1
Open MyFile For Output As #1 ' Removed quotes
C = 2
For I = 1 To 488 '497 columnas
For J = 1 To 456 '464 filas
ElevacionesArray(I, J) = ActiveWorkbook.Worksheets("Hoja1").Cells(C, 3).Value ' swapped (3, C) row/columns here
C = C + 1
Next J
Next I
For I = 1 To 488
C = 1
For J = 1 To 456
If C >= 10 Then
Write #1, vbNewLine
C = 1
End If
'Array to textfile
Write #1, " " + ElevacionesArray(I, J)
C = C + 1
Next J
Next I
Close #1
End Sub