Открытие файла

  • Автор темы Alex77777
  • Дата начала
A

Alex77777

#1
при написании программы столкнуся со следующей штукой: нужно чтобы при нажатии кнопки открывался шаблон в него вносились данные из формы и сохранялся шаблон как: допустим "шаблон март 2007" (нужно чтобы в теме месяц и год был) как поставить дату в название файла понятно, но я нигде не нашел функции Format () чтобы она отображала только месяц-год, везде где есть месяц-год присутствует еще либо число, либо время (Long Date, Medium Date, Short Time) - это первая часть вопроса.
А вторая как сделать, чтобы при последующем нажатии кнопки проверялся сначала существует ли файл "шаблон март 2007", если да то открыть его и т.д., а если не существует то открыть "шаблон". Понятно, что надо использовать оператор If.... Then, вопрос как проверить существует ли файл в данной директории.

Dim x As New Excel.Workbook
Dim h As String
Dim t As Date 'переменная для месяца-года, у меня в данном случае ещзе и число стоит

h = "C:\Мои документы\шаблон.xls"

Set x = Application.Workbooks.Open(h)
x.Activate

Cells(24, 2) = txtText1
Cells(31, 3) = txtText2

t = txtText2

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs FileName:= _
"C:\Мои документы\шаблон" & "t" & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
ActiveWorkbook.Save
ActiveWorkbook.Close

пробовал через Value как-то измудриться, но в итоге ничего неполучилось красивого.

Если кто встречался с такими заморачками, подскажите как из них выкрутились.
Заранее спасибо!
 
T

Tanya

#2
1) 4 мая 2007
"шаблон" & Format$(Now, "mmm yyyy") = "шаблон май 2007"

m - номер месяцаб 1 или 2 цифры (5)
mm - номер месяца, 2 цифры (05)
mmm - название месяца с маленькой буквы (май)
mmmm - тоже, но с большой буквы (Май)

yy - 2 последние цифры года (07)
yyyy - все 4 цифры года (2007)

2) Dim FName as String 'Полное имя файла
FName="C:\Мои документы\шаблон май 2007.xls"

If Len(Dir$(FName)) then
'существует
else
'не существует
endif
 
A

Alex77777

#3
спасибо огромное, оказывается все так просто :D

кстати txtDate.Text = Format$(Now, "dd.mm.yyyy hh:nn:ss")
допускается символы ставить между днями-месяц и т.п. , только сожхранить файл с таким именем нельзя.

раз уж задал вопрос о времени - а как сделать чтобы при открытии формы таймер начинал с нуля отсчет, а не отсчитывал мне системное время компа.
а то я извратился вот таким кодом:

txtText1.Text = CStr(Time)
txtText2.Text = Time

m = txtText2.Text
n = txtTText1.Text
mn = m - n
txtText3.Text = CStr(mn)

все бы вроде ничего, да вот только если форму открыл до 00:00 ночи, то после 00:00 в текстовом поле txtText3 отсчет идет в убывающем порядке :p
 
T

Tanya

#4
используй не Time, а Now - Это и текущая дата и текущее время
 
A

Alex77777

#5
блин как я сам не додумался B)
спасибо большое за данное решение! B)