YENİ dosya ve klasörler oluşturma


-2
Sub Test()
Dim myDir As String
Dim Folder1 As String

StartDate = DateValue("2-Nov-2014")
NumberOfDays = 1

For N = 0 To NumberOfDays - 1
Folder1 = UCase(Format(StartDate + N, "MMM YYYY"))
Folder2 = Format(StartDate + N, "DD MMM YYYY")
If Dir("C:\GRANDVARIATIONS\FILES\" & Folder1, vbDirectory) = "" Then
MkDir "C:\GRANDVARIATIONS\FILES\" & Folder1
End If
If Dir("C:\GRANDVARIATIONS\FILES\" & Folder1 & "\" & Folder2, vbDirectory) = "" Then
MkDir "C:\GRANDVARIATIONS\FILES\" & Folder1 & "\" & Folder2
End If




On Error Resume Next
Set oDoc = GetObject(sDocPath)
Set oWord = oDoc.Parent
If Err <> 0 Then
Set oWord = CreateObject("Word.Application")
Set oDoc = oWord.Documents.Add
End If

oDoc.SaveAs ("C:\GRANDVARIATIONS\FILES\" & Folder1 & "\" & Folder2 & "\ANSWERS.Docx")
oDoc.Close

Next N
End Sub

Bir "FILES" klasöründe zaten "1-Nov-2014" var ve yukarıdaki kodu kullanarak "2-Nov-2014" isimli başka bir dosya oluşturabiliyorum.

Ancak, "3-Kasım-2014" isimli bir dosya oluştururken, yine "StartDate = DateValue (" 2-Nov-2014 ")" yerine "StartDate = DateValue (" 3-Nov-2014 ")" değiştirmem gerekiyor.

Her yeni bir dosya oluşturmak istediğimde bu değeri değiştirmek zorunda kalmamamın bir yolu var mı?


1
Tarihi belirtmezseniz, hangi tarihi kullanmak istediğinizi nasıl bilebilir? Bugünün tarihi olan bir şey mi olmalı?
Ƭᴇcʜιᴇ007

Şey, randevuyla alakalı değil. Sadece bir sonraki dosyayı kronolojik sırada oluşturmak istiyorum. Diyelim ki "FILES" adındaki bir klasörde "1-nov-2014" adında bir dosya zaten varsa, kodun bu klasörü aramasını ve içinde "2-nov-2014" adında yeni bir dosya oluşturmasını istiyorum. o.
EXCEL LOVER 19:

Tamam, bilmek güzel - bu bilgiyi sorunuza göre düzenlemelisiniz. Her neyse, klasörler üzerinde yineleme yapmanız, hangisinin en yenisi olduğunu belirlemeniz ve ardından değişkeni o tarihe ayarlamanız gerekir. Şimdiye kadar ne denedin? Tam olarak nerede sıkışıp kalıyorsun?
ᴇcʜιᴇ007

Eğer burada 3-nov-2014 isimli bir dosya gerekliyse "StartDate = DateValue (" 2-Nov-2014 "):" StartDate = DateValue ("3-Nov-2014"): 'i düzenlemeliyim.
EXCEL LOVER

msgstr "Klasörler üzerinde yinele, hangisinin en yenisi olduğunu belirle ve sonra değişkeni o tarihe ayarla". Eğer bu başka bir yolla yapılabilseydi, bu en çok takdir edilecektir.
EXCEL LOVER

Yanıtlar:


1
Sub Test()
Dim myDir As String
Dim Folder1 As String
Dim rRange1 As Range

Set rRange1 = Worksheets("Sheet1").Range("D3")

StartDate = Worksheets("Sheet1").Range("D3")
NumberOfDays = 1

For N = 0 To NumberOfDays - 1
    Folder1 = UCase(Format(StartDate, "MMM YYYY"))
    Folder2 = Format(StartDate + N, "DD MMM YYYY")
    If Dir("C:\GRANDVARIATIONS\FILES\" & Folder1, vbDirectory) = "" Then
        MkDir "C:\GRANDVARIATIONS\FILES\" & Folder1
    End If
    If Dir("C:\GRANDVARIATIONS\FILES\" & Folder1 & "\" & Folder2, vbDirectory) = "" Then
        MkDir "C:\GRANDVARIATIONS\FILES\" & Folder1 & "\" & Folder2
    End If




On Error Resume Next
    Set oDoc = GetObject(sDocPath)
    Set oWord = oDoc.Parent
    If Err <> 0 Then
        Set oWord = CreateObject("Word.Application")
        Set oDoc = oWord.Documents.Add
    End If

oDoc.SaveAs ("C:\GRANDVARIATIONS\FILES\" & Folder1 & "\" & Folder2 & "\ANSWERS.Docx")
oDoc.Close

Next N
End Sub

0

Klasörleri oluşturmak için bugünün tarihini kullanmak istediğinizi varsayalım,

StartDate = DateValue("2-Nov-2014")

için:

StartDate = DateValue(date)

Başka bir şey istiyorsan, korkarım sorunun açık değil ve daha fazla netliğe ihtiyacı var.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.