Создать файл Excel с полным разрешением и вставить в данные с помощью ASP (VBScritp)? - PullRequest
1 голос
/ 24 марта 2011

Пожалуйста, помогите мне.

Я хочу создать файл Excel с данными и полным разрешением на запись (Все пользователи) с использованием asp (vb script).

Set objExcel = CreateObject("Excel.Application")

Set objWorkbook = objExcel.Workbooks.Add()

objWorkbook.SaveAs(strFileName)

Я использовал этот метод для создания файла Excel, но этот файл Excel получил разрешение только на чтение. Итак, как мне нужно сделать для разрешения на запись и как вставить данные в этот файл Excel.

Спасибо

Ответы [ 3 ]

0 голосов
/ 10 июля 2017

Я сталкивался с этим раньше. Вы должны выйти из Excel или закрыть книгу, как только вы закончите. Пока Excel работает и рабочая книга открыта, она всегда будет доступна только для чтения. Как только ваш скрипт завершит работу с файлом Excel, сохраните его (как и вы), но закройте его. В идеальном мире закройте объект Excel и не устанавливайте ничего. Попробуйте добавить следующее в конце вашего скрипта:

objWorkbook.Close
Set objWorkbook = Nothing  '<-- not needed if at the end of the script.
objExcel.Close
Set objExcel = Nothing     '<-- not needed if at the end of the script.

Помните, что Excel по своей природе является однопользовательской средой.

0 голосов
/ 28 сентября 2018
 strPathExcel="c:\myExcelFile.xlsx"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Set objWorkbook = objExcel.Workbooks.Add()
objWorkbook.SaveAs strPathExcel

'========== change the premission for Everyone to Modify ===============
 CreateObject("Wscript.Shell").Run "ICACLS """& strPathExcel & """ /grant everyone:M ",0,False

'====== how to write inside excel sheet you just create and save then close ======= 
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)

' write to  a cell.
objSheet.Cells(3, 2).Value = "Test"

' Add a row before row 5.
objSheet.Range("B5").EntireRow.Insert

' Label the new rows. Row 4 is unchanged, but what was row 5 is now row 6.
objSheet.Cells(4, 1).Value = "Row 4"
objSheet.Cells(5, 1).Value = "Row 5"
objSheet.Cells(6, 1).Value = "Row 6"

' Save the change  and quit.
objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
0 голосов
/ 24 марта 2011

Я не уверен, почему это делается только для чтения, но вы можете использовать функцию SetAttr, чтобы изменить права доступа к файлам для записи. Эта страница содержит дополнительную информацию и пример кода.

...