Exportação de Dados para o MSPROJECT

01/03/2010

Boa tarde! Gostaria de uma solução para exportar para o MSPROJECT da MicroSoft. Uso DELPHI 2010. Exemplo: Tenhos vários itens em uma tabela e gostaria de uma rotina para enviar os dados para cada coluna no MSPROJECT em cada coluna respectivamente: Colunas: TAREFA, DATA INICIO DA TAREFA e DATA FIM DA TAREFA, entre outras. Vejam o exemplo: Try MSProject := CreateOleObject('MSProject.Application'); Try MSProject.Visible := True; MsProject.FileOpen('C:\SGOWIN\PROJECT.mpp'); Except on E: Exception do ShowMessage('Exception Error...' + E.Message); End; Except on E: Exception do ShowMessage('MS Project Aplicação não localizado...' + E.Message); End; DM1.QViewCronogramaItem.First; While Not DM1.QViewCronogramaItem.Eof Do Begin MSProject.ActiveProject.Tasks.Add(DM1.QViewCronogramaItemNOMEITEM.AsString); MSProject.ActiveProject.SetTaskStart.Add(DM1.QViewCronogramaItemDTINITEM.AsDateTime); MSProject.ActiveProject.SetTaskFinish.Add(DM1.QViewCronogramaItemDTFINITEM.AsDateTime); DM1.QViewCronogramaItem.Next; End; Como usava um componente de terceiro para o DELPHI 7, este não tem para o DELPHI 2010 e a empresa não tem mais. Um solução pra mim por favor Hélio Marques Analista/Programador.
Hélio Marques

Hélio Marques

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

01/03/2010

Olá,

A integração do DElphi com aplicativos Office se faz através de activex, exatamente como você postou no exemplo. Os ActiveX são idependentes de Sistema Operacinal ou versão do Delphi ficando apenas atrelados a versão do aplicativo que esta integrando, ou seja, se é MSPorject 2000 então termos que ter na maquina o Activex do MsProject 2000, se é MSPorject 2003 então termos que ter na maquina o Activex do MsProject 2003, e por ai vai.

Minha pergunta é o codigo que você mostrou abaixo não funciona no Delphi 2010 ?? Lembre-se que para testar na maquina onde roda o Delphi deverá ter instalado o MSProject ou pelo menos o arquivo TLB do memso.


Como citei, o código a principio parece esta correto.

Att,
 
GOSTEI 0
Hélio Marques

Hélio Marques

01/03/2010

Rodrigo, primeiro obrigado pela atenção. O exemplo que coloquei consegui na internet e não funciona no DELPHI 2010 porque o mesmo é em cima de um componente de terceiro, no qual o fabricante não existe mais e este componente somente funciona no DELPHI 7. Gostaria, se possível um exemplo que envie somente a TAREFA, DATA INICIAL e FINAL. Usando exatamente os ACTIVEX. Obrigado desde já pela atenção.
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

01/03/2010

Olá Franciso,


Todos os comandos exibidos no codigo que vc enviou estou disponiveis no delphi. Eu não consigo testar aqui pois como não tenho o MSProject Instalado a linha MSProject := CreateOleObject('MSProject.Application'); retonra nil e da um Access Violation.


Se eu possuisse a MSProject Instalado na minha maquina ele encontraria o ActiveX eeu conseguiria executrar o código. Verifique a versão do MsProject Istalado na sua maquina, se prerferir importa a TypeLibrary pelo delphi. Ele vai gerar uma unit para você e se desejar criar um componente inclusive.

Acesse o Menu Component->Import Component. Marque a opção Import a Type Library. Feito isso avance e procure na lista a TypeLibrary do MSProject. Selecione na lista e avance.

Nesta tela ele mostra as classes que o Delphi vai gerar, pede para você em qual paleta quer colocar os componentes o diretorio onde ele vai gerar as unit e o source path. Marcando o checkbox o delphi gerar um Wrapper para os componentes.



Na proxima tela você pode apenas gerar a unit, gerar e adicionar o um pacote novo ou um pacote exitente ou se vc estiver com seu projeto aberto pode gerar a unit e adicionar ao projeto. A ultima opção e a ideal pois ele cria e adiciona ao seu projeto. Lembre-se de abrir seu projeto antes.

Feito isso finalize.

Eu importei aqui o Excel, e ele gerou uma série de interfaces com metodos. Observe:

(...)
_ApplicationDisp = dispinterface
    ['{000208D5-0000-0000-C000-000000000046}']
    property Application: ExcelApplication readonly dispid 148;
    property Creator: XlCreator readonly dispid 149;
    property Parent: ExcelApplication readonly dispid 150;
    property ActiveCell: ExcelRange readonly dispid 305;
    property ActiveChart: ExcelChart readonly dispid 183;
    property ActiveDialog: DialogSheet readonly dispid 815;
    property ActiveMenuBar: MenuBar readonly dispid 758;
    property ActivePrinter[lcid: Integer]: WideString dispid 306;
    property ActiveSheet: IDispatch readonly dispid 307;
    property ActiveWindow: Window readonly dispid 759;
    property ActiveWorkbook: ExcelWorkbook readonly dispid 308;
    property AddIns: AddIns readonly dispid 549;
    property Assistant: Assistant readonly dispid 1438;

(...)


 Alguns metodos que podemos utilizar:

      function Find;
      procedure Select;
      procedure Copy
      Etc...
   


Os metodos do project podem ser diferente mas uma analise do codigo gerado irá lhe ajudar.


Att,


GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

01/03/2010

Olá Amigo, Podemos ajudar em algo mais? Estamos aguardando para encerrar o chamado !! Att,
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

01/03/2010

Olá,]

Estaremos colocando o chamado como concluido.


Caso tenha mais alguma duvida podera reabri-lo que voltaremos a atendê-lo.

Att,


GOSTEI 0
Hélio Marques

Hélio Marques

01/03/2010

Tudo ok! Obrigado.
GOSTEI 0
POSTAR