Here you go:
Option Explicit
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
Sub collectData()
Dim WshShell, sPath, sMain, sName, sDesc, sPrice, sContact
' Save it to a folder on the Desktop
set WshShell = WScript.CreateObject("WScript.Shell")
sPath = WshShell.SpecialFolders("Desktop")
sPath = sPath & "\Scratch Files\"
sMain = "Bulletin.html"
' Prompt for title, description, price, and contact
sName = getInput("Item Name")
sDesc = getInput("Item Description")
sPrice = getInput("Item Price")
sContact = getInput("Contact Information")
Call createFile(sPath, sName, sDesc, sPrice, sContact)
' Add new .html file to index file in the format: date, <a href=html location>title for link</a>
Call appendFile(sPath, sMain, sName)
set WshShell = Nothing
Call Msgbox("Your item (" & sName & ") was added")
End Sub
Function getInput(prompt)
getInput = inputbox(prompt,"Add New Item for Sale")
End Function
sub createFile(sPath, sName, sDesc, sPrice, sContact)
'Creates a new file, or appends to an existing file
Dim objFSO, objArgs(19), sTextFile, objFile, i
' Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Check if folder path exists; if not, create folder
If objFSO.FolderExists(sPath) then
Else
Call objFSO.CreateFolder(sPath)
End If
' Save file as <title of item>.html
sTextFile = sPath & sName & ".html"
' If file exists, open; else, create it
If objFSO.FileExists(sTextFile) Then
Set objFile = objFSO.OpenTextFile(sTextFile, ForAppending)
Else
Set objFile = objFSO.CreateTextFile(sTextFile)
End If
objArgs(1) = "<HTML>"
objArgs(2) = " <HEAD>"
objArgs(3) = " <TITLE>Bulletin</TITLE>"
objArgs(4) = " </HEAD>"
objArgs(5) = ""
objArgs(6) = "<BODY>"
objArgs(7) = " <CENTER><H1>Bulletin</H1></CENTER>"
objArgs(8) = "<!-Item Name-!>"
objArgs(9) = " <H1>" & sName & "</H1> "
objArgs(10) = "<!-Item Price-!>"
objArgs(11) = " <H2><U>" & sPrice & "</U></H2>"
objArgs(12) = "<!-Contact Info-!>"
objArgs(13) = " <b><Font Color='Blue'>" & sContact & "</b></font>"
objArgs(14) = " <BR /><BR /><BR />"
objArgs(15) = "<!-Item Description-!>"
objArgs(16) = " " & sDesc
objArgs(17) = "</BODY>"
objArgs(18) = "</HTML>"
' Write the details to the file
For i = 1 To UBound(objArgs)
objFile.WriteLine objArgs(i) & " "
Next
' Append a newline character
objFile.WriteLine
' Close the file
objFile.Close
set objFile = Nothing
set objFSO = Nothing
End Sub
Sub appendFile(sPath, sMain, sName)
Dim objFSO, objArgs(3), sTextFile, objFile, file, i, lBody
' Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Check if folder path exists; if not, create folder
If objFSO.FolderExists(sPath) then
Else
Call objFSO.CreateFolder(sPath)
End If
'Create filename
sTextFile = sPath & sMain
' If file exists, open; else, create it
If objFSO.FileExists(sTextFile) Then
Set objFile = objFSO.OpenTextFile(sTextFile, ForReading)
file = Split(objFile.ReadAll(), vbCrLf)
objFile.Close()
Set objFile = objFSO.OpenTextFile(sTextFile, ForWriting)
For i = Lbound(file) to Ubound(file)
If inStr(file(i), "</BODY>") then
lBody = i
Exit For
Else
objFile.WriteLine(file(i))
End If
Next
Else
Set objFile = objFSO.CreateTextFile(sTextFile)
file(1)=""
End If
objArgs(1) = Date() & " - <A HREF=""" & sName & ".html"">" & sName & " For Sale</A>"
objArgs(2) = "<BR /><BR />"
' Write the details to the file
For i = 1 To UBound(objArgs)
objFile.WriteLine objArgs(i) & " "
Next
For i = lBody to Ubound(file)
objFile.WriteLine(file(i))
Next
' Append a newline character
objFile.WriteLine
' Close the file
objFile.Close
set objFile = Nothing
set objFSO = Nothing
End Sub
collectData()
Notes:
- In the collectData sub, you can define the path where you wish to save the files (currently in Scratch Files folder on your Desktop). You can also define the name of your main webpage (currently Bulletin.html)
- There is no user validation on any prompts (the InputBox is in the Function getInput), but feel free to add some. You may want to include a default value of "$" which would require some retooling of the getInput Function's parameters (add another parameter for Default value and include a third parameter on the inputbox(..) call; follow this page for more details: http://msdn.microsoft.com/en-us/library/3yfdhzk5%28v=vs.84%29.aspx)
- I mocked up the HTML code you provided as the template in createFile() sub. If you want to change that (i.e. Add lines), you'll also need to update the objArgs variable declaration near the top of the sub.
- Same goes (see #3) for the appending template in the main webpage but that is in the appendFile() sub.
Usage:
- To add new content, users need to double-click on the *.vbs file on your computer.
- The prompts will guide them through the details to add their item.
- When the script is complete it will automatically create their *.html for them, update your main page, and inform them with a nice MsgBox (your item item name was added).
Hope this helps.