Resume.xlw - Левый файл при работе с Excel из Access

Программирование на Visual Basic for Applications
Ee-ex
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 07.08.2006 (Пн) 15:38

Resume.xlw - Левый файл при работе с Excel из Access

Сообщение Ee-ex » 28.08.2006 (Пн) 17:20

Доброе время суток!

Программа выполняет сл. действия:
- открывает файл ексель
- вносит изменения
- закрывает измененный файл
- переносит его.

Код: Выделить всё
Dim PathFile, PathDir, Path, PathSD, Rek As String

Dim xl As Excel.Application
Dim WB As Excel.Workbook
Dim WS As Excel.Worksheet


DoCmd.SetWarnings (False)
PathDir = "K:\1\1\"
PathFile = Dir(PathDir)

Do Until PathFile = ""

PathFile = Dir(PathDir)
Path = PathDir + PathFile
If PathFile = "" Then Exit Do

Set xl = CreateObject("Excel.Application")
xl.Visible = False
Set WB = Excel.Workbooks.Open(Path)
Set WS = WB.Worksheets(1)
WB.ActiveSheet.Unprotect

Rek = WS.Cells(19, 9).Value
WS.Cells(6, 3).Value = "ффф"
WS.Cells(7, 4).Value = "150"
If Rek = 0 Then
    If Flag_Prod = 1 Then WS.Cells(8, 3).Value = "ййй" Else WS.Cells(8, 3).Value = "уцуц"
Else
    If Flag_Prod = 1 Then WS.Cells(8, 3).Value = "хххх" Else WS.Cells(8, 3).Value = "ууууу"
End If

WS.Cells(10, 3).Value = "вапрва"

WB.Application.SaveWorkspace
WB.Application.Quit
xl.Application.Quit

Set WS = Nothing
Set WB = Nothing
Set xl = Nothing

PathSD = "\\комп\папка\" + PathFile
FileCopy Path, PathSD
Kill Path
loop


На моменте WB.Application.SaveWorkspace вылетает сообщение
"Файл RESUME.XLW уже существует в данном месте. Заменить?"
Естественно, данное сообщение является совершенно неуместным. Как мне корректно сделать работу?

ЗЫ: Я полный чайник и ламер, просьба поленьями не кидать!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 28.08.2006 (Пн) 18:11

Собственно, saveworkspace не имеет особого отношения к сохранению изменений в файле.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 28.08.2006 (Пн) 19:42

Вообще то в VB я не работаю, но может так сработает:

Код: Выделить всё
    Dim PathFile, PathDir, Path, PathSD, Rek As String
    Dim XL As Excel.Application
    Dim WB As Excel.Workbook
    Dim WS As Excel.Worksheet
   
    DoCmd.SetWarnings (False)
    PathDir = "K:\1\1\"
    PathFile = Dir(PathDir)
   
    Do Until PathFile = ""
   
        PathFile = Dir(PathDir)
        Path = PathDir + PathFile
        If PathFile = "" Then Exit Do
       
        Set XL = CreateObject("Excel.Application")
        XL.Visible = False
        Set WB = XL.Workbooks.Open(Path)
        Set WS = WB.Worksheets(1)
        WS.Unprotect
       
        Rek = WS.Cells(19, 9).Value
        WS.Cells(6, 3).Value = "ффф"
        WS.Cells(7, 4).Value = "150"
        If Rek = 0 Then
                If Flag_Prod = 1 Then WS.Cells(8, 3).Value = "ййй" Else WS.Cells(8, 3).Value = "уцуц"
        Else
                If Flag_Prod = 1 Then WS.Cells(8, 3).Value = "хххх" Else WS.Cells(8, 3).Value = "ууууу"
        End If

        WS.Cells(10, 3).Value = "вапрва"
       
        'WS.Protect 'опять защитить не надо?
       
        PathSD = "\\комп\папка\" + PathFile
        WB.SaveAs PathSD
        WB.Close
        XL.Quit
       
        Set WS = Nothing
        Set WB = Nothing
        Set XL = Nothing
        Kill Path
    Loop
Привет,
KL

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 28.08.2006 (Пн) 19:53

Еще наверное вот так:

Код: Выделить всё
    Dim PathFile, PathDir, Path, PathSD, Rek As String
    Dim XL As Excel.Application
    Dim WB As Excel.Workbook
    Dim WS As Excel.Worksheet
   
    DoCmd.SetWarnings (False)
    PathDir = "K:\1\1\"
    PathFile = Dir(PathDir)
   
    Do Until PathFile = ""
   
        PathFile = Dir(PathDir)
        Path = PathDir + PathFile
        If PathFile = "" Then Exit Do
       
        Set XL = CreateObject("Excel.Application")
        XL.Visible = False
        Set WB = XL.Workbooks.Open(Path)
        Set WS = WB.Worksheets(1)
        WS.Unprotect
       
        Rek = WS.Cells(19, 9).Value
        WS.Cells(6, 3).Value = "ффф"
        WS.Cells(7, 4).Value = "150"
        If Rek = 0 Then
                If Flag_Prod = 1 Then WS.Cells(8, 3).Value = "ййй" Else WS.Cells(8, 3).Value = "уцуц"
        Else
                If Flag_Prod = 1 Then WS.Cells(8, 3).Value = "хххх" Else WS.Cells(8, 3).Value = "ууууу"
        End If

        WS.Cells(10, 3).Value = "вапрва"
       
        'WS.Protect 'опять защитить не надо?
       
        WB.Close True
        XL.Quit
       
        Set WS = Nothing
        Set WB = Nothing
        Set XL = Nothing

        PathSD = "\\комп\папка\" + PathFile
        FileCopy Path, PathSD
        Kill Path
    Loop
Привет,
KL

Ee-ex
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 07.08.2006 (Пн) 15:38

Сообщение Ee-ex » 29.08.2006 (Вт) 9:54

2 lapink2000
Мне бы так с VB не работать! :)

Сенкс, Save as отлично сработало.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 57

    TopList