29 de dezembro de 2007

Notificações de Download: 28 Dezembro

Get Office Live Basics for free

Get Office Live Basics Free for Your Small Business

Get your own professional Web site, e-mail accounts, and reporting for free.

Office Update

Scan your computer for updates that help improve the stability and security of the Office programs on your computer.

All recently published Office and home downloads

21 de dezembro de 2007

Notificações de Download: 21 Dezembro

Download Free 2008 Calendar Templates

Download Free 2008 Calendar Templates

Free calendars you can customize for your needs, available in Microsoft Office Word, Excel, and more.

2007 Office System Converter: Microsoft Filter Pack

This download will install and register IFilters with the Microsoft Windows Indexing Service. These IFilters are used by Microsoft Search products to index the contents of specific document formats.

Microsoft Office Open XML File Format Converter for Mac 0.2.1 (Beta)

With the Open XML Converter, you can convert Open XML files to a format that is compatible with Microsoft Office 2004 for Mac and Microsoft Office v. X for Mac.

Microsoft Dynamics CRM 4.0 Data Migration Manager

Using the Microsoft Dynamics CRM 4.0 Data Migration Manager, you can convert and upload data from another CRM system to Microsoft Dynamics CRM 4.0.

Office Update

Scan your computer for updates that help improve the stability and security of the Office programs on your computer.

All recently published Office and home downloads

19 de dezembro de 2007

Paulo Morgado - The Web client software factory in action














O Microsoft MVP Paulo Morgado vai estar no geekSpeak no dia 23 de Janeiro de 2008 com a Sessão Jan 23 - Paulo Morgado - The Web client software factory in action.

Boa Sorte Paulo

Post Original
Estou no geekSpeak!

18 de dezembro de 2007

Office Communications Server 2007

WEBCAST´S EM PORTUGUÊS


























Sessão 1: Office Communications Server 2007 - Desenho de arquitectura
Sessão 2: Office Communications Server 2007 - Instant messaging e Presença
Sessão 3: Office Communications Server 2007 - Implementação e utilização de soluções de conferência
Sessão 4: Integração de Exchange Server 2007 Unified Messaging e Office Communications Server 2007
Sessão 5: Office Communications Server 2007 - Ferramentas de Gestão e Resolução de problemas
Sessão 6: Office Communications Server 2007 - Conformidade e Arquivo
Sessão 7: Voz no Office Communications Server 2007: Cenários, Arquitecturas e Topologias.
Sessão 8: Office Communications Server 2007 - Activação e Configuração de utilizadores para Voz

MOSS Service Pack 1

O 2007 Microsoft Office Servers Service Pack 1 já está disponível através do Site da Microsoft.
Download details: The 2007 Microsoft Office Servers Service Pack 1 ...

O SP1 corrige cerca 250 problemas conhecidos dentro das tecnologias:

Groove
Shared Point Server
Project e Project Server

A Lista total de problemas conhecidos é divulgada em:
Download the 2007 Office Servers Service Pack 1 Changes_all.xls package now.

942383 Problemas corrigidos no 2007 Groove
942387 Problemas corrigidos no Project Server 2007
942390 Descrição do SharePoint Server 2007 o problemas


O SP1 está disponível em todas as línguas





















Microsoft® Office Server Language Pack 2007, 32-Bit Edition:
Office Server Language Pack 2007 SP1, 32-Bit Edition
Microsoft® Office Server Language Pack 2007, 64-Bit Edition:
Office Server Language Pack 2007 SP1, 64-Bit Edition

Outros Downloads recomendados

Windows SharePoint Services 3.0 Service Pack 1 (SP1)
The 2007 Microsoft Office Servers Language Pack Service Pack 1 (SP1)
Windows SharePoint Services 3.0 Language Pack Service Pack 1 (SP1)
SharePoint Server 2007 SDK: Software Development Kit
Exchange Server 2007 Service Pack 1

17 de dezembro de 2007

TechDays 2008

TechDays 2008 já tem Site e novidades


http://www.techdays.pt

O Maior evento português de Development e IT já tem site. Sugiro vivamente que se registem no mesmo, atenção às novidades

Tecnologias em Destaque:

Microsoft Windows Server 2008
Microsoft Visual Studio 2008
Microsoft SQL Server 2008

14 de dezembro de 2007

Como desabilitar "Escreva uma questão para ajuda" no Office por VBA

Adiciona simplesmente a linha de código em baixo no arranque do teu projecto VBA

Application.CommandBars.DisableAskAQuestionDropdown = True

Como criar um projecto ADP no Access 2007

Parece fácil, mas o UI (User Interface) mudou bastante

1. Escolher Criar uma nova Base Dados

2. Clicar no botão para Escolher Localização

3. Salva o teu projecto como ADP depois liga-te ao SQL com as tuas credenciais para um projecto novo ou existente.

11 de dezembro de 2007

Converter Números para Extenso (Euros)

Esta Função como o nome indica foi originalmente criada para converter Números em Extenso,
apesar de poder ser aproveitada para Euros têm uma limitação, ou seja 1.000.000.000 (Um Milhão), tem de ser modificado para ("Mil Milhões de Euros") e 1.000.000.000.000 (Um Bilião) para ("Um Milhão de Milhões de Euros") Visto que estamos na Europa e não nos Estados Unidos.


 

Option Compare Database


Private Declare Function GetLocaleInfo& _
Lib "kernel32" Alias "GetLocaleInfoA" ( _
ByVal Locale As Long, _
ByVal LCType As Long, _
ByVal lpLCData As String, _
ByVal cchData As Long)


Private Const LOCALE_USER_DEFAULT& = &H400
Private Const LOCALE_SDECIMAL& = &HE
Private Const LOCALE_SCURRENCY& = &H14
Private Const LOCALE_SMONDECIMALSEP& = &H16

Public Enum enmFormat
Maiusculas
Minusculas
PrimeiraMaiuscula
End Enum

Private arrGrupo() As String
'2 Dimensions
'1º -> [0]=Numeric value from group; [1]=extenso
'2ª -> Counter

Private Const e = "e "
Private Const Virgula = ", "

Private Const ZERO = "Zero "
Private Const um = "Um "
Private Const DOIS = "Dois "
Private Const TRES = "Três "
Private Const QUATRO = "Quatro "
Private Const CINCO = "Cinco "
Private Const SEIS = "Seis "
Private Const SETE = "Sete "
Private Const OITO = "Oito "
Private Const NOVE = "Nove "
Private Const DEZ = "Dez "

Private Const ONZE = "Onze "
Private Const DOZE = "Doze "
Private Const TREZE = "Treze "
Private Const CATORZE = "Catorze "
Private Const QUINZE = "Quinze "
Private Const DEZASSEIS = "Dezasseis "
Private Const DEZASSETE = "Dezassete "
Private Const DEZOITO = "Dezoito "
Private Const DEZANOVE = "Dezanove "

Private Const VINTE = "Vinte "
Private Const TRINTA = "Trinta "
Private Const QUARENTA = "Quarenta "
Private Const CINQUENTA = "Cinquenta "
Private Const SESSENTA = "Sessenta "
Private Const SETENTA = "Setenta "
Private Const OITENTA = "Oitenta "
Private Const NOVENTA = "Noventa "
Private Const CEM = "Cem "
Private Const CENTO = "Cento "
Private Const DUZENTOS = "Duzentos "
Private Const TREZENTOS = "Trezentos "
Private Const QUATROCENTOS = "Quatrocentos "
Private Const QUINHENTOS = "Quinhentos "
Private Const SEISCENTOS = "Seiscentos "
Private Const SETECENTOS = "Setecentos "
Private Const OITOCENTOS = "Oitocentos "
Private Const NOVECENTOS = "Novecentos "
Private Const MIL = "Mil "

Private Const MILHAO = "Milhão "
Private Const MILHOES = "Milhões "
Private Const BILIAO = "Bilião "
Private Const BILIOES = "Biliões "

Private strUnidades(9) As String
Private strTeens(99) As String
Private strDezenas(9) As String
Private strCentenas(9) As String
Private strMilhares(9) As String

Private mstrDecSep As String * 1
Private mstrDefaultErrorMsgOverflow As String
Private Const ERR_OVERF = "Overflow"

'Singular
Private mstrDefaultSufixoInteiro1 As String
Private Const SUF_INT1 = "Euro "
Private mstrDefaultSufixoDecimal1 As String
Private Const SUF_DEC1 = "Centimo "

'Plural
Private mstrDefaultSufixoInteiro2 As String
Private Const SUF_INT2 = "Euros "
Private mstrDefaultSufixoDecimal2 As String
Private Const SUF_DEC2 = "Centimos "

Private Const MAX_NUMBER As Double = 999999999999.99

Private Sub msEncher()

'strUnidades(0) = ZERO ' Must be an empty string
strUnidades(1) = um
strUnidades(2) = DOIS
strUnidades(3) = TRES
strUnidades(4) = QUATRO
strUnidades(5) = CINCO
strUnidades(6) = SEIS
strUnidades(7) = SETE
strUnidades(8) = OITO
strUnidades(9) = NOVE

'strTeens(0) = ZERO ' Must be an empty string
strTeens(1) = um
strTeens(2) = DOIS
strTeens(3) = TRES
strTeens(4) = QUATRO
strTeens(5) = CINCO
strTeens(6) = SEIS
strTeens(7) = SETE
strTeens(8) = OITO
strTeens(9) = NOVE
strTeens(10) = DEZ
strTeens(11) = ONZE
strTeens(12) = DOZE
strTeens(13) = TREZE
strTeens(14) = CATORZE
strTeens(15) = QUINZE
strTeens(16) = DEZASSEIS
strTeens(17) = DEZASSETE
strTeens(18) = DEZOITO
strTeens(19) = DEZANOVE

strDezenas(0) = ""
strDezenas(1) = "-"
strDezenas(2) = VINTE
strDezenas(3) = TRINTA
strDezenas(4) = QUARENTA
strDezenas(5) = CINQUENTA
strDezenas(6) = SESSENTA
strDezenas(7) = SETENTA
strDezenas(8) = OITENTA
strDezenas(9) = NOVENTA

strCentenas(0) = ""
strCentenas(1) = CEM
strCentenas(2) = DUZENTOS
strCentenas(3) = TREZENTOS
strCentenas(4) = QUATROCENTOS
strCentenas(5) = QUINHENTOS
strCentenas(6) = SEISCENTOS
strCentenas(7) = SETECENTOS
strCentenas(8) = OITOCENTOS
strCentenas(9) = NOVECENTOS


End Sub

Private Function mfTraduzir(xGrupo%, xstr$) As String
'Traslate 3 numbers group
'(right pad)
On Error GoTo erro
Dim blnAnteriorRedondo As Boolean 'quando grupo anterior = '*00'
Dim ret$, xlen%
xlen = Len(xstr$)
Dim Unid As Byte, strUnid$
Dim Teen As Byte, strTeen$
Dim Dezena As Byte, strDezn$
Dim Centena As Byte, strCent$

mstrDefaultSufixoInteiro1 = SUF_INT1
mstrDefaultSufixoDecimal1 = SUF_DEC1
mstrDefaultSufixoInteiro2 = SUF_INT2
mstrDefaultSufixoDecimal2 = SUF_DEC2


Unid = CByte(Right(xstr$, 1))
Teen = CByte(Right(xstr$, 2))
Dezena = CByte(Mid(xstr$, xlen - 1, 1))
Centena = CByte(Mid(xstr$, xlen - 2, 1))
If Centena Then
strCent = IIf(Teen = 0, strCentenas(Centena), _
IIf(Centena = 1, CENTO, strCentenas(Centena)) & _
IIf(Teen = 0, "", e)) & " "
End If

strDezn = IIf(Teen > 19, strDezenas(Dezena), strTeens(Teen)) & _
IIf(Unid And Teen > 19, e, "")

strUnid = IIf(Teen > 19, strUnidades(Unid), "")

ret = strCent & strDezn & strUnid

Dim strNumAnterior$, strExtAnterior$

On Error Resume Next
strNumAnterior = arrGrupo(0, xGrupo - 1) 'grupo anterior
strExtAnterior = arrGrupo(1, xGrupo - 1)
blnAnteriorRedondo = Val(Right(strNumAnterior, 2)) = 0
On Error GoTo erro

Select Case xGrupo
Case 0 ' 000

Case 1 '000xxx

arrGrupo(1, xGrupo - 1) = _
IIf(blnAnteriorRedondo, _
IIf(Val(strNumAnterior) = 0, "", e) & strExtAnterior, _
e & strExtAnterior)

ret = IIf(Val(xstr) = 0, "", _
IIf(Val(xstr) = 1, MIL, ret & MIL))

Case 2 '000xxxxxx
arrGrupo(1, xGrupo - 1) = _
IIf(Val(strNumAnterior) = 0 And Val(arrGrupo(0, xGrupo - 2)) = 0, _
"", IIf(Val(strNumAnterior) > 0, IIf(Val(arrGrupo(0, xGrupo - 2)) = 0, _
e, Virgula), "") & strExtAnterior)

ret = IIf(Val(xstr) = 0, "", _
IIf(Val(xstr) = 1, ret & MILHAO, ret & MILHOES))

Case 3 ' 000xxxxxxxxx
arrGrupo(1, xGrupo - 1) = _
IIf(Val(strNumAnterior) = 0 And Val(arrGrupo(0, xGrupo - 2)) = 0 _
And Val(arrGrupo(0, xGrupo - 3)) = 0, _
"", IIf(Val(strNumAnterior) = 0, "", _
IIf(Val(arrGrupo(0, xGrupo - 2)) = 0, e, Virgula)) & strExtAnterior)

ret = IIf(Val(xstr) = 0, "", _
IIf(Val(xstr) = 1, ret & BILIAO, ret & BILIOES))
End Select

mfTraduzir = Trim(ret) & " "
Exit Function
erro:
If Err = 5 Then
Resume Next
Else
MsgBox Err & vbCrLf & Err.Description
Resume Next
End If
End Function
Private Sub Class_Initialize()
msEncher
mstrDecSep = mfstrGetDecimalSep
mstrDefaultErrorMsgOverflow = ERR_OVERF
End Sub


Public Function gfGet( _
ByVal dblX As Double, _
Optional xmoeda As String, _
Optional ByVal lngFormat As Long = PrimeiraMaiuscula) As String
On Error GoTo erro

Static mblnInitialized As Boolean

If Not mblnInitialized Then
msEncher
mstrDecSep = mfstrGetDecimalSep
mstrDefaultErrorMsgOverflow = ERR_OVERF
mblnInitialized = True
End If


If dblX > MAX_NUMBER Then
gfGet = mstrDefaultErrorMsgOverflow
Exit Function
End If

Dim strNeg$

If dblX < dblx =" dblX" strneg = "Menos " xmoeda = "" xmoeda = "PTE" dblx =" Format(dblX,"> "" Then
If CDbl(strInteiro) > 0 Then
retInt = mfstrProcessar(strInteiro)
Else
retInt = ZERO
End If
retInt = retInt & IIf(CDbl(strInteiro) = 1, mstrDefaultSufixoInteiro1, mstrDefaultSufixoInteiro2)
End If

If strDecimal <> "" Then
If CDbl(strInteiro) = 0 Then
retInt = ""
Else
retInt = retInt & e
End If
retDec = mfstrProcessar(strDecimal)
retDec = retDec & IIf(CDbl(strDecimal) = 1, mstrDefaultSufixoDecimal1, mstrDefaultSufixoDecimal2)
End If


ret = retInt & retDec

gfGet = strNeg & IIf(lngFormat = Minusculas, LCase(ret), _
IIf(lngFormat = Maiusculas, UCase(ret), _
ret))

Exit Function
erro:
gfGet = Err.Number & "; " & Err.Description
End Function

Private Sub msGetParts(ByVal strAll$, ByRef strInt$, ByRef strDec$)
Dim intVirgLoc%
intVirgLoc = InStr(1, strAll, mstrDecSep)

If intVirgLoc > 0 Then
strInt = Mid(strAll, 1, intVirgLoc% - 1)
strDec = Mid(strAll, intVirgLoc% + 1)
If Len(strDec) = 1 Then strDec = strDec & "0"
Else
strInt = strAll$
strDec = ""
End If

End Sub

Private Function mfstrProcessar(strPart$) As String
Dim lp%, xlen%, cnt%, ret$, buf$
Dim xstart%
xlen = Len(strPart$)
For lp = 1 To xlen Step 3

'Send numbers in 3 didit groups
xstart = xlen - (3 * cnt)
xstart = IIf(xstart <= 0, 1, xstart)
buf = Right(Left(strPart$, xstart), 3)
ReDim Preserve arrGrupo(1, cnt)
arrGrupo(0, cnt) = CDbl(buf)
arrGrupo(1, cnt) = mfTraduzir(cnt, Format(buf, "000"))
cnt = cnt + 1
Next

'Spell joining the translated numbers
Dim xtemp As String
For lp = UBound(arrGrupo, 2) To 0 Step -1
xtemp = xtemp & arrGrupo(1, lp)
Next

'Cut Fake spaces
Dim red1$, inred1%, red2$, inred2%
Dim tempA$, tempB$
inred1 = 999: inred2 = 999

red1 = " ": red2 = " ,"


Do Until inred1 + inred2 = 0

inred1 = InStr(1, xtemp, red1)
inred2 = InStr(1, xtemp, red2)

If inred1 > 0 Then
xtemp = Trim(Left(xtemp, inred1) & Right(xtemp, Len(xtemp) - (inred1 + 1)))
End If

If inred2 > 0 Then Mid(xtemp, inred2, 2) = ", "

Loop
ret = xtemp & IIf(Right(xtemp, 1) <> " ", " ", "")
mfstrProcessar = ret

End Function

Private Function mfstrGetDecimalSep() As String
Dim ret&
Dim buf As String * 10
ret = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, buf, Len(buf))
mfstrGetDecimalSep = Left(buf, InStr(1, buf, vbNullChar) - 1)
End Function


' ////////////// PROPS /////////////////////

Public Property Get DecimalSep() As String
DecimalSep = mstrDecSep
End Property
Public Property Let DecimalSep(x As String)
mstrDecSep = x
End Property
Public Property Get OverflowMsg() As String
OverflowMsg = mstrDefaultErrorMsgOverflow
End Property
Public Property Let OverflowMsg(x As String)
mstrDefaultErrorMsgOverflow = x
End Property
Public Property Get MaxNumber() As Double
MaxNumber = MAX_NUMBER
End Property
Public Property Get SufixoInteiroSingular() As String
SufixoInteiroSingular = mstrDefaultSufixoInteiro1
End Property
Public Property Let SufixoInteiroSingular(x As String)
mstrDefaultSufixoInteiro1 = x & IIf(Right(x, 1) = "", "", " ")
End Property
Public Property Get SufixoInteiroPlural() As String
SufixoInteiroPlural = mstrDefaultSufixoInteiro2
End Property
Public Property Let SufixoInteiroPlural(x As String)
mstrDefaultSufixoInteiro2 = x & IIf(Right(x, 1) = "", "", " ")
End Property
Public Property Get SufixoDecimalSingular() As String
SufixoDecimalSingular = mstrDefaultSufixoDecimal1
End Property
Public Property Let SufixoDecimalSingular(x As String)
mstrDefaultSufixoDecimal1 = x & IIf(Right(x, 1) = "", "", " ")
End Property
Public Property Get SufixoDecimalPlural() As String
SufixoDecimalPlural = mstrDefaultSufixoDecimal2
End Property
Public Property Let SufixoDecimalPlural(x As String)
mstrDefaultSufixoDecimal2 = x & IIf(Right(x, 1) = "", "", " ")
End Property



4 de dezembro de 2007

A Microsoft acabou de anunciar que irá atrasar o lançamento da sua próxima versão do Office para Mac.

Previamente anunciada para lançamento no segundo semestre de 2007, a nova versão do Office 2008 para Mac deverá ser lançada só na próxima Macworld, em janeiro de 2008.



Segundo a Microsoft, o atraso é devido a mudança para processadores Intel, que interrompeu todo o desenvolvimento que já havia sido feito, ao desenvolvimento dos novos formatos de arquivos pela suíte e pela correção de alguns bugs que ainda restam.

Segundo Craig Eisler, gerente geral da unidade Macintosh da Microsoft, a combinação de todos esses fatores levou ao atraso.

TechDays 2008 - Portugal


Techdays 2008 já tem data marcada


Like