'Первый опыт скрипта для Сёрфера. Ввиду отсутствия необходимых знаний и ограничений языка сплошь костыли да подпорки.
'Скрипт предназначен для конвертации всех сёрфовских гридов в исходной папке в формат "GS ASCII"
'При запуске необходимо выбрать один из файлов в исходной папке.
'В исходной папке будет создана папка ASCII куда будут помещены конвертированные файлы.
'Если папка ASCII уже существует, файлы в ней, при совпадении имён будут переписаны.
Option Explicit
Sub Main
Dim InFile As String 'Путь к первому файлу
Dim t(1) As Integer 'Положение слэша
Dim ttt As String 'Имя файлов в папке
Dim aaa As String 'Имя папки
On Error Resume Next 'Так, конечно, лучше не делать, но иначе выскакивает ошибка, если папка ASCII ужк существует
InFile = GetFilePath("","grd","d:\", "Выберите файлы для конвертации", 0) 'Диалоговое окно выбора одного из файлов в целевой папке
If InFile = "" Then End 'Выход из программы, если ничего не выбрано
'Вииду не знания способа получить названия папки из полного пути к файлу, действуем "влоб", через поиск последнего слэша
Do
t(1)=t(0)
t(0)=InStr(t(0)+1,InFile,"\")
Loop While t(0)>0
t(0)=Len(InFile)
aaa=Left(InFile,t(1)) 'Путь к папке
ttt=Dir(aaa) 'Имя первого файла в папке
If ttt = "" Then End 'Так, на всякий случай
MkDir aaa + "ASCII" 'Создали папку для выходных файлов
Do
If Right(ttt,4) = ".grd" Then Call bin2ASCII(aaa,ttt) 'Если файл имеет расширение grd отправляем его на конвертацию
ttt=Dir 'Имена последующих файлов
Loop Until ttt="" 'Цикл идёт до последнего файла
MsgBox "Готово!"
End Sub
'-------------------------------------------------------------------------------------------------------------------------------
Sub bin2ASCII(path_fold,path_fl)
Dim ln As Integer
Dim path_grd_out As String
Dim surf As Object
Dim path_grd As String
path_grd=path_fold +path_fl
'Добавляем к имени файла обозначение ASCII
If Right(path_fl,4) = ".grd" Then
ln=Len(path_fl)
path_grd_out=path_fold + "ASCII\" + Left(path_fl,ln-4) + "_ASCII.grd"
Else
path_grd_out=path_fold + "ASCII\" + path_fl + "_ASCII"
End If
'Кусок скопирован из справки, не до конца вкурил что для чего
Set surf = GetObject(,"Surfer.Application")
If Err.Number<>0 Then
Set surf = CreateObject("Surfer.Application")
End If
surf.GridConvert (InGrid := path_grd, _
OutGrid := path_grd_out, _
OutFmt := srfGridFmtAscii)
End Sub