Jump to content
Fivewin Brasil

Search the Community

Showing results for tags 'Excel'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Categories

There are no results to display.

Forums

  • FiveWin
    • WorkShop
    • Advantage Server
    • FiveScript
    • FiveWin Avaliação
    • TopConnect
    • Classes
    • Programação
    • FiveWin - Conversão de 16 bits para 32 bits
    • Seminário
    • Artigos / Tutoriais
    • Off - Topic
  • Suporte Estendido
    • Duvidas Gerais

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 5 results

  1. Bom-dia! Simplesmente parou de funcionar enviar dados para o Excel no mesmo Windows 10 que estava funcionando, acho que depois de uma atualização Segue parte do PRG e Log de erro function gerarlote(vTot,oMeter,oText,nOption,numlote) LOCAL oExcel, oHoja dbSelectArea( "con" ) // seleciona arquivo contábil con->( dbGoTop() ) vNomenum := "Lote_"+"&numlote."+".txt" // usando macro precisa por ponto if nOption = 2 // foi selecionado arquivo texto copy to &vNomenum delimited // separado por virgula WinExec("Notepad &vNomenum",1) // 1 = diretorio corrente return nil endif nRow := 1 // reinicia a linha da planilha nCount := 0 // Zerar o total do meter oExcel := TOleAuto():New( "Excel.Application" ) <======== AQUI O ERRO oExcel:WorkBooks:Add() oHoja := oExcel:Get( "ActiveSheet" ) *::: Seleciona a guia BOLETINS para preenchimento //oExcel:Sheets("Planilha1"):Name := "Boletins" // nomear a 1ª guia //oExcel:Sheets("Boletins"):Select() // selecionar a guia nomeada oMeter:cCaption := "Lote dos Boletins" oHoja := oExcel:Get( "ActiveSheet" ) FOR nCol := 1 TO FCOUNT() // percorrer todas as colunas oHoja:Cells( nRow, nCol ):Value := FieldName( nCol ) // linhadegrade(oHoja,nRow,nCol) NEXT Error.log Application =========== Path and name: C:\Boletim\boletim.EXE (32 bits) Size: 4,255,744 bytes Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20180715) FiveWin version: FWH 18.05 C compiler version: Borland/Embarcadero C++ 7.3 (32-bit) Windows version: 6.2, Build 9200 Time from start: 0 hours 2 mins 45 secs Error occurred at: 02/02/2020, 22:31:06 Error description: Error TOleAuto/65535 : TOLEAUTO:NEW Args: [ 1] = C Excel.Application Stack Calls =========== Called from: => THROW( 0 ) Called from: source\rtl\win32ole.prg => TOLEAUTO:NEW( 0 ) Called from: C:\Boletim\excel_bol.prg => GERARLOTE( 584 ) Called from: C:\Boletim\excel_bol.prg => (b)ENVIA_BOLETIM( 556 ) Called from: C:\Boletim\excel_bol.prg => (b)MSGMETER( 216 ) Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 94 ) Called from: => TDIALOG:DISPLAY( 0 ) Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1037 ) Called from: => DIALOGBOXINDIRECT( 0 ) Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 287 ) Called from: C:\Boletim\excel_bol.prg => MSGMETER( 219 ) Called from: C:\Boletim\excel_bol.prg => ENVIA_BOLETIM( 556 ) Called from: C:\Boletim\excel_bol.prg => (b)MONTARLOTE( 285 ) Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 179 ) Called from: .\source\classes\CONTROL.PRG => TBUTTON:HANDLEEVENT( 1686 ) Called from: .\source\classes\WINDOW.PRG => _FWH( 3451 ) Called from: => SENDMESSAGE( 0 ) Called from: .\source\classes\DIALOG.PRG => TDIALOG:COMMAND( 409 ) Called from: => TWINDOW:HANDLEEVENT( 0 ) Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1050 ) Called from: => DIALOGBOX( 0 ) Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 287 ) Called from: C:\Boletim\excel_bol.prg => MONTARLOTE( 290 ) Called from: C:\Boletim\BOLETIM.PRG => (b)MAIN( 186 ) Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 693 ) Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 970 ) Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1722 ) Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1953 ) Called from: .\source\classes\WINDOW.PRG => _FWH( 3451 ) Called from: => WINRUN( 0 ) Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1052 ) Called from: C:\Boletim\BOLETIM.PRG => MAIN( 267 ) System ====== CPU type: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz 2195 Mhz Hardware memory: 8095 megs Free System resources: 90 % GDI resources: 90 % User resources: 90 % Windows total applications running: 6 1 , 2 , C:\Boletim\boletim.EXE 3 , C:\WINDOWS\System32\shcore.dll 4 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17763.914_none_4d607d8 5 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL 6 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.914_none_7e4b706e762fa5c Variables in use ================ Procedure Type Value ========================== THROW Param 1: O Class: ERROR Local 1: U Local 2: U TOLEAUTO:NEW Param 1: C "Excel.Application" Local 1: U Local 2: U Local 3: O Class: TOLEAUTO Local 4: O Class: ERROR Local 5: C "C" GERARLOTE Param 1: N 1 Param 2: O Class: TMETER Param 3: O Class: TSAY Param 4: N 1 Param 5: C " " Local 1: U Local 2: U (b)ENVIA_BOLETIM Param 1: O Class: TMETER Param 2: O Class: TSAY Param 3: O Class: TDIALOG Param 4: L .F. Param 5: O Class: TBUTTON (b)MSGMETER Param 1: U (b)TDIALOG:TDIALOG Param 1: O Class: TDIALOG TDIALOG:DISPLAY TDIALOG:HANDLEEVENT Param 1: N 15 Param 2: N 0 Param 3: N 0 Local 1: O Class: TDIALOG DIALOGBOXINDIRECT Param 1: N 4194304 Param 2: C "€ È€ &ÿ·ÿŸ E E x p o r t a n d o o a r q u i v o c o n t a b i l P , v S T A T I C P # — w T M E T E R P > 4 ! x B U T T O N & C a n c e l a " Param 3: N 855676 Param 4: O Class: TDIALOG TDIALOG:ACTIVATE Param 1: U Param 2: U Param 3: U Param 4: L .T. Param 5: B {|| ... } Param 6: L .T. Param 7: U Param 8: U Param 9: U Param 10: U Param 11: U Local 1: O Class: TDIALOG Local 2: N 855676 Local 3: U Local 4: U Local 5: U Local 6: O Class: TDIALOG MSGMETER Param 1: B {|| ... } Param 2: C " " Param 3: C "Exportando o arquivo contabil" Local 1: O Class: TDIALOG Local 2: O Class: TMETER Local 3: O Class: TSAY Local 4: O Class: TBUTTON Local 5: O Class: TFONT Local 6: L .F. Local 7: L .F. Local 8: N 0 ENVIA_BOLETIM (b)MONTARLOTE Param 1: O Class: TBUTTON TBUTTON:CLICK Local 1: O Class: TBUTTON TBUTTON:HANDLEEVENT Param 1: N 2048 Param 2: N 0 Param 3: N 0 Local 1: O Class: TBUTTON Local 2: U _FWH Param 1: N 0 Param 2: N 2048 Param 3: N 0 Param 4: N 0 Param 5: N 28 Local 1: O Class: TBUTTON SENDMESSAGE Param 1: N 3736930 Param 2: N 2048 Param 3: N 0 Param 4: N 0 TDIALOG:COMMAND Param 1: N 302 Param 2: N 3736930 Local 1: O Class: TDIALOG Local 2: O Class: TBUTTON Local 3: N 0 Local 4: N 302 Local 5: N 3736930 Local 6: U TWINDOW:HANDLEEVENT Param 1: N 273 Param 2: N 302 Param 3: N 3736930 TDIALOG:HANDLEEVENT Param 1: N 273 Param 2: N 302 Param 3: N 3736930 Local 1: O Class: TDIALOG DIALOGBOX Param 1: N 4194304 Param 2: C "montalote" Param 3: N 5244362 Param 4: O Class: TDIALOG TDIALOG:ACTIVATE Param 1: U Param 2: U Param 3: U Param 4: L .T. Param 5: U Param 6: L .T. Param 7: U Param 8: U Param 9: U Param 10: U Param 11: U Local 1: O Class: TDIALOG Local 2: N 5244362 Local 3: U Local 4: U Local 5: U Local 6: O Class: TDIALOG MONTARLOTE Local 1: O Class: TDIALOG Local 2: U Local 3: O Class: TBUTTON Local 4: U Local 5: U Local 6: U Local 7: U Local 8: U Local 9: U (b)MAIN Param 1: O Class: TBTNBMP TBTNBMP:CLICK Local 1: O Class: TBTNBMP TBTNBMP:LBUTTONUP Param 1: N 36 Param 2: N 37 Param 3: O Class: TBTNBMP Local 1: U Local 2: L .T. Local 3: N 0 TCONTROL:HANDLEEVENT Param 1: N 514 Param 2: N 0 Param 3: N 2359333 Local 1: O Class: TBTNBMP Local 2: U TBTNBMP:HANDLEEVENT Param 1: N 514 Param 2: N 0 Param 3: N 2359333 Local 1: O Class: TBTNBMP _FWH Param 1: N 2359333 Param 2: N 514 Param 3: N 0 Param 4: N 2359333 Param 5: N 7 Local 1: O Class: TBTNBMP WINRUN Param 1: N 5244362 TWINDOW:ACTIVATE Param 1: C "MAXIMIZED" Param 2: U Param 3: U Param 4: U Param 5: U Param 6: U Param 7: U Param 8: B {|| ... } Param 9: U Param 10: U Param 11: U Param 12: U Param 13: U Param 14: U Param 15: U Param 16: U Param 17: U Param 18: U Param 19: U Param 20: L .F. Local 1: O Class: TWINDOW Local 2: U Local 3: U MAIN Linked RDDs =========== DBF DBFFPT DBFBLOB DBFCDX DBFNTX DataBases in use ================ 1: SENHAS RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 7 .F. .F. Indexes in use TagName => upper(senhas->usuari) USUARI Relations in use 2: SIS RddName: DBFCDX ============================== RecNo RecCount BOF EOF 2808 2808 .F. .F. Indexes in use TagName Relations in use 3: DIA RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 0 .T. .T. Indexes in use TagName Relations in use 4: NUM RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 1194 .F. .F. Indexes in use TagName Relations in use 5: LTS RddName: DBFCDX ============================== RecNo RecCount BOF EOF 186 186 .F. .F. Indexes in use TagName Relations in use 6: FUN RddName: DBFCDX ============================== RecNo RecCount BOF EOF 580 1998 .F. .F. Indexes in use TagName => fun->matricula FUN Relations in use 7: CAD RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 1996 .F. .F. Indexes in use TagName => cad->matricula CAD Relations in use 8: TAB RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 763 .F. .F. Indexes in use TagName => tab->cod TAB Relations in use 9: ERR RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 0 .T. .T. Indexes in use TagName Relations in use 10: BIN RddName: DBFCDX ============================== RecNo RecCount BOF EOF 3319 3318 .F. .T. Indexes in use TagName Relations in use 11: LHO RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 16 .F. .F. Indexes in use TagName Relations in use 12: => CON RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 8 .F. .F. Indexes in use TagName => con->histor HISTOR Relations in use 13: PAR RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 0 .T. .T. Indexes in use TagName Relations in use 14: IND RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 5 .F. .F. Indexes in use TagName Relations in use 15: MEM RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 1 .F. .F. Indexes in use TagName Relations in use 16: CACF RddName: DBFCDX ============================== RecNo RecCount BOF EOF 1 9 .F. .F. Indexes in use TagName Relations in use Classes in use: =============== 1 ERROR 2 HASHENTRY 3 HBCLASS 4 HBOBJECT 5 TINI 6 TFONT 7 TWINDOW 8 TCONTROL 9 TICON 10 TBRUSH 11 TMENU 12 TREG32 13 TMENUITEM 14 TBAR 15 TRECT 16 TBTNBMP 17 TMSGBAR 18 TMSGITEM 19 TTIMER 20 TBITMAP 21 TDIALOG 22 TGET 23 GET 24 TCLIPGET 25 TBUTTON 26 TWBROWSE 27 TSCROLLBAR 28 TRADMENU 29 TRADIO 30 TCHECKBOX 31 TSAY 32 TMETER 33 TOLEAUTO 34 TSTRUCT Memory Analysis =============== 1200 Static variables Dynamic memory consume: Actual Value: 0 bytes Highest Value: 0 bytes
  2. Amiguinhos, Eis uma forma rápida de importação de tabelas .DBF para arquivos .CSV e/ou .XLS de forma rápida: use tabela oExcel := TOleAuto():New( "Excel.Application" ) oWorkbook := oExcel:WorkBooks oWorkbook:Open( (DBF_TEMP) ) oExcel:DisplayAlerts := .f. oExcel:Visible := .t. oWorksheet := oExcel:Get( "ActiveSheet" ) oWorksheet:SaveAs( cPathDados + "DBF_TEMP.CSV", 6 ) oWorksheet:SaveAs( cPathDados + "DBF_TEMP.XLS", 56 ) Só não resolvi o processo preso na task manager.
  3. Amiguinhos, Estrutura básica para gerar uma listagem ou relatório em Excel: Function XLSTotalVendas() LOCAL oExcel, oHoja LOCAL nRow := 1, nCol M->TOT_0001 := 0 M->TOT_0002 := 0 M->TOT_0003 := 0 M->TOT_0004 := 0 M->QUEBRAR := .T. M->RESUMIR := .T. /* ABERTURA E INDICES */ USE ITENS // Contem os campos DATAPED(D), CUSTO(N,15,2), VALOR(N,15,2), DESCONTO(N,15,2) INDEX ON dataped // Sera usado como ponto de quebra CursorWait() oExcel := TOleAuto():New( "Excel.Application" ) oExcel:WorkBooks:Add() oHoja := oExcel:Get( "ActiveSheet" ) nRows := oHoja:UsedRange:Rows:Count() nCols := oHoja:UsedRange:Columns:Count() oHoja:PageSetup:Orientation := 2 oHoja:PageSetup:PrintGridlines := .t. // Margens oHoja:PageSetup:LeftMargin := 0.25 oHoja:PageSetup:RightMargin := 0.25 oHoja:PageSetup:TopMargin := 0.25 oHoja:PageSetup:BottomMargin := 0.25 oHoja:PageSetup:HeaderMargin := 0.25 oHoja:PageSetup:FooterMargin := 0.25 // Area de Impressao oHoja:PageSetup:PrintArea = "$A$1:$O$60" // Define nome para planilha oHoja:name:='Tabela de Precos' // Toda planilha oHoja:Cells:Font:Name := "Arial" oHoja:Cells:Font:Size := 8 // Formatando o titulo oHoja:Cells( 1, 1 ):Value := "NOME DO RELATORIO" oHoja:Cells( 1, 1 ):Font:Size := 18 oHoja:Cells( 1, 1 ):Font:Name := "Arial" oHoja:Range( "A1:G1" ):HorizontalAlignment := 7 oHoja:Cells( 1, 1 ):Select() nRow := 2 nCol := 1 DBGOTOP() /* USAR COM QUEBRA */ /* ********************************************** */ IF M->QUEBRAR M->QUEBRA_1 := dtos(dataped) // fara a quebra por data ENDIF /* */ DO WHILE .T. // EOF() if nRow = 2 //oSheet:Range("A:A"):Set("ColumnWidth",32) // AJUSTA TAMAÑO UN RANGO A UN VALOR // Colocando nomes nas colunas oHoja:Cells( nRow, nCol+0 ):Value := "Data" oHoja:Cells( nRow, nCol+1 ):Value := "Desconto" oHoja:Cells( nRow, nCol+2 ):Value := "Custo Total" oHoja:Cells( nRow, nCol+3 ):Value := "Valor Total" oHoja:Cells( nRow, nCol+4 ):Value := "Lucro Total" oHoja:Cells( nRow, nCol+5 ):Value := "Lucro (%)" // Formatando estilo oHoja:Cells( nRow, nCol+0 ):Font:Bold := .T. // :Font:Size / :Font:Color oHoja:Cells( nRow, nCol+1 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+2 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+3 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+4 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+5 ):Font:Bold := .T. // Formatando tamanho oHoja:Cells( nRow, nCol+0 ):ColumnWidth := 10 oHoja:Cells( nRow, nCol+1 ):ColumnWidth := 8 oHoja:Cells( nRow, nCol+2 ):ColumnWidth := 14 oHoja:Cells( nRow, nCol+3 ):ColumnWidth := 14 oHoja:Cells( nRow, nCol+4 ):ColumnWidth := 14 oHoja:Cells( nRow, nCol+5 ):ColumnWidth := 10 // Formatando tamanho oHoja:Cells( nRow, nCol+0 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+1 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+2 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+3 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+4 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+5 ):Interior:ColorIndex := 6 // nRow := 3 endif /* USAR COM RESUMO */ /* ********************************************** */ IF M->RESUMIR M->QUEBRA_1=dtos(dataped) M->SUM_0001 := 0 M->SUM_0002 := 0 M->SUM_0003 := 0 M->SUM_0004 := 0 DO WHILE M->QUEBRA_1=dtos(dataped) // Faz enquanto nao QUEBRA M->SUM_0001 := M->SUM_0001 + desconto M->SUM_0002 := M->SUM_0002 + custo M->SUM_0003 := M->SUM_0003 + valor M->SUM_0004 := M->SUM_0004 + valor-custo SKIP ENDDO SKIP -1 ELSE M->SUM_0001 := desconto M->SUM_0002 := custo M->SUM_0003 := valor M->SUM_0004 := valor-custo ENDIF /* */ // Formatando um campo oHoja:Cells( nRow, nCol+0 ):Value := dataped oHoja:Cells( nRow, nCol+1 ):NumberFormat := "###.###.##0,00"; oHoja:Cells( nRow, nCol+1 ):Value := M->SUM_0001 oHoja:Cells( nRow, nCol+2 ):NumberFormat := "###.###.##0,00"; oHoja:Cells( nRow, nCol+2 ):Value := M->SUM_0002 oHoja:Cells( nRow, nCol+3 ):NumberFormat := "###.###.##0,00"; oHoja:Cells( nRow, nCol+3 ):Value := M->SUM_0003 oHoja:Cells( nRow, nCol+4 ):NumberFormat := "###.###.##0,00"; oHoja:Cells( nRow, nCol+4 ):Value := M->SUM_0004 oHoja:Cells( nRow, nCol+5 ):NumberFormat := "###.###.##0,00"; oHoja:Cells( nRow, nCol+5 ):Value := div(M->SUM_0004,M->SUM_0003)*100 // Somatoria dos subtotais oHoja:Cells( nRow, nCol+0 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+2 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+3 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+4 ):Font:Bold := .T. // oHoja:Cells( nRow, nCol+2 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+3 ):Interior:ColorIndex := 6 oHoja:Cells( nRow, nCol+4 ):Interior:ColorIndex := 6 // SKIP /* */ nRow := nRow + 1 if eof() exit endif //SKIP ENDDO // oHoja:Cells( nRow, nCol+2 ):Value := "CUSTO TOTAL" oHoja:Cells( nRow, nCol+3 ):Value := "VALOR TOTAL" oHoja:Cells( nRow, nCol+3 ):Value := "LUCRO TOTAL" nRow := nRow + 1 oHoja:Cells( nRow, nCol+2 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+2 ):Font:Italic := .T. oHoja:Cells( nRow, nCol+2 ):Font:Size := 10 oHoja:Cells( nRow, nCol+2 ):NumberFormat := "###.###.##0,00" oHoja:Cells( nRow, nCol+2 ):Value := "=soma("+chr(64+nCol+2)+"3:"+chr(64+nCol+2)+alltrim(str(nRow-1))+")" // oHoja:Cells( nRow, nCol+3 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+3 ):Font:Italic := .T. oHoja:Cells( nRow, nCol+3 ):Font:Size := 10 oHoja:Cells( nRow, nCol+3 ):NumberFormat := "###.###.##0,00" oHoja:Cells( nRow, nCol+3 ):Value := "=soma("+chr(64+nCol+3)+"3:"+chr(64+nCol+3)+alltrim(str(nRow-1))+")" // oHoja:Cells( nRow, nCol+4 ):Font:Bold := .T. oHoja:Cells( nRow, nCol+4 ):Font:Italic := .T. oHoja:Cells( nRow, nCol+4 ):Font:Size := 10 oHoja:Cells( nRow, nCol+4 ):NumberFormat := "###.###.##0,00" oHoja:Cells( nRow, nCol+4 ):Value := "=soma("+chr(64+nCol+4)+"3:"+chr(64+nCol+4)+alltrim(str(nRow-1))+")" // oExcel:Visible := .T. /* CASO QUEIRA IMPRIMIR */ //oHoja:PrintOut() // Funciona OK /* CASO QUEIRA SALVAR */ //oExcel:WorkBooks:SaveAs(cFilePath(GetModuleFileName(GetInstance()))+"\planilha.xls") oHoja:End() oExcel:End() CursorArrow() RETURN
  4. Boa tarde Estou precisando importar uma planilha do excel que tem vários planilhas todas nomeadas, como falo para ler somente uma ou como faço para escolher pois cada uma vou alimentar uma tabela diferente. tenho a planilha TABELA DE CUSTOS.XML depois tenho dentro dela as seguinte "frotas", "motoristas", "oficina", etc...
  5. Boas... Por favor, alguém sabe se existe uma função ou exemplo que identifique se o MS Word ou MS Excel estão instalados na CPU ? Obrigado.
×
×
  • Create New...