Hola amigos, estoy tratando de enviar datos desde un sp de SQL a excel y
aunque actualmente logre enviar los datos y que se formateen los mismo (con
color, y negrita) luego que ejecuto mi sp el sistema operativo lanza un error
en Excel.exe y no entiendo porque... :o( alguien tiene una idea de que puede
estar pasando?
Ademas, necesito enviar los datos y que estos se agrupen en excel, alguien
tiene idea de como hacer eso? estuve revisando OLE pero aun no doy con la
solucion a mi problema
El codigo que uso es:
alter PROCEDURE [ABC123_2]
@PathAttach VARCHAR(50)=NULL
AS
BEGIN
PRINT @PathAttach
SET @PathAttach= '''' + @PathAttach + ''''
PRINT @PathAttach
DECLARE @desc varchar(255) -- text desctiption OF the error
DECLARE @Counter int-- internal counter TO iterate through the records OF
the CURSOR
SET @Counter=0
DECLARE @ExlValue varchar(100) -- this variable holds the value that
should be assigned TO Excel cell
DECLARE @ObjProp varchar(100) -- holds the FULL description OF the property
DECLARE @WordObject int, @RetCode int, @Document int , @Filename
varchar(255)
EXEC @RetCode = sp_OACreate 'Excel.Application', @WordObject OUTPUT, 4
PRINT 'se creo'
EXEC @RetCode = sp_OAMethod @WordObject, 'Workbooks.Open', @Document
OUTPUT,'C:\SUCCESS2.xls'--@PathAttach
PRINT 'se abrio'
PRINT 'se coloco propiedad'
SET @ObjProp='Application.ActiveWorkbook.Sheets(1).Cells(25, 4).value'
Robotico de SQL'
-
4).font.colorindex'
@ObjProp='Application.ActiveWorkbook.Sheets(1).Range("A2:F4").Group(null,null,null,null)'
EXEC @RetCode = sp_OASetProperty @WordObject, @ObjProp, 1
-
PRINT 'voy a grabar'
EXEC @RetCode = sp_OAMethod @WordObject,
'Application.ActiveWorkbook.Save',NULL
IF @RetCode <> 0 or @@Error <> 0
BEGIN
PRINT 'grabe'
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
SELECT @RetCode, @desc
EXEC sp_OADestroy @WordObject
PRINT 'se paro'
EXEC sp_OAStop
end
ELSE
begin
PRINT 'error'
EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
SELECT @RetCode, @desc
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_OADestroy @WordObject
PRINT 'se destruyo'
EXEC sp_OAStop
PRINT 'se paro'
end
END
Leer las respuestas