-
Similar Content
-
By gereiz
Bom dia a todos. Adaptei um código para renomear vários arquivo com vba, que realiza a seguinte função:
1) Eu seleiono a pasta,
2) O VBA abre o PDF (Nota fiscal) , extrai a informação do texto e com a razão social fecha o pdf e renomeia ele com o nome extraido.
O problema é que após renomear o primeiro arquivo corretamente a execução do código trava, e é necessário finalizar o processo.
Segue abaixo o código.
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) Public Function ListaArquivos(ByVal Caminho As String) As String() 'Atenção: Faça referência à biblioteca Micrsoft Scripting Runtime Dim FSO As New FileSystemObject Dim result() As String Dim Pasta As Folder Dim Arquivo As File Dim Indice As Long ReDim result(0) As String If FSO.FolderExists(Caminho) Then Set Pasta = FSO.GetFolder(Caminho) For Each Arquivo In Pasta.Files Indice = IIf(result(0) = "", 0, Indice + 1) ReDim Preserve result(Indice) As String result(Indice) = Arquivo.Name Next End If ListaArquivos = result ErrHandler: Set FSO = Nothing Set Pasta = Nothing Set Arquivo = Nothing End Function Private Sub selecionar_pasta() Dim box As Folder Dim arquivos() As String Dim lCtr As Long Dim AdobeApp As String Dim StartAdobe Dim Arquivo As String Dim NomeAntigo As String Dim NomeNovo As String On Error Resume Next linha = 1 ultima_linha = Sheets("teste").Cells(Rows.Count, 1).End(xlUp).Row With Application.FileDialog(msoFileDialogFolderPicker) .Title = "Buscar pasta" .InitialFileName = ThisWorkbook.Path .Show .AllowMultiSelect = False Pasta = .SelectedItems(1) End With TextBox1 = box arquivos = ListaArquivos(Pasta) Sleep 1000 For lCtr = 0 To UBound(arquivos) Debug.Print arquivos(lCtr) 'Inserir código aqui' 'Cells(linha, 1).Value = arquivos(lCtr) 'linha = (linha + 1) 'Sleep 500 pdf = arquivos(lCtr) AdobeApp = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" Sleep 2000 For Each pdf In Pasta Adobefile = Pasta & "\" & pdf StartAdobe = Shell("" & AdobeApp & " " & """" & Adobefile & """" & "", 1) Sleep 2000 Application.SendKeys ("^a") Application.SendKeys ("^c") Sleep 2000 Dim KillPdf As String KillPdf = "TASKKILL /F /IM AcroRd32.exe" Shell KillPdf, vbHide AppActivate Application.Caption Sheets("teste").Range("A1").Activate SendKeys ("^v") DoEvents Dim Razao As String Razao = Sheets("teste").Range("A17").Value pontos = InStr(1, Razao, ":") qtdeLetras = Len(Razao) Nome = Right(Razao, qtdeLetras - pontos) Sheets("teste").Range("C1").Value = Nome Do While Not IsEmpty(Range("C1")) NomeAntigo = Pasta & "\" & pdf NomeNovo = Pasta & "\" & Sheets("teste").Range("C1").Value & ".pdf" Sheets("teste").Range("C2").Value = Adobefile Sheets("teste").Range("C3").Value = Pasta & "\" & Sheets("teste").Range("C1").Value & ".pdf" Name NomeAntigo As NomeNovo ' DoEvents Loop ' MsgBox "Nomes dos arquivos alterados!", vbOKOnly, "Processo Concluído" Next Next ' MsgBox ("Arquivos Encontrados = ") & (linha - 1) End Sub Já tentei de tudo, e não consegui resolver esse problema, se eu remover o Do while, ele executa normalmente, porem não renomeia os arquivos. Seu eu faço esse laço, ele renomeia só o primeiro e trava geral.
Qualquer esclarecimento, agradeço.
-
By carlos melo
Boa noite, trabalho com Delphi e estou tendo dificuldade em fazer conexão com meu servidor que esta na argentina, uso o firedac para fazer a conexão com o banco, so que o comando que estou utilizando esta dando erro e não sei se estou configurando certo a minha query.
Ja criei os linked server e tambem não resolveu......
uso um select dentro do delphi dessa maneira :
DELPHI
FDQuery e dentro uso esse select
Select * from [192.168.XX.XXX].banco.dbo.tabela direcionando para o meu servidor que esta na argentina sendo 192.168.xx.xxx o ip do servidor de la e o nome do banco é servicos e a tabela ordens.
Se alguem conhece ou ja fez esse tipo de conexão , estou precisando dessa grande ajuda...
obrigado
-
By andreluis78
Olá a todos.
Criei um procedimento para verificar se um usuário está cadastrado no banco de dados.
Utilizo Firebird como BD e componentes Zeos para acessar o banco.
Resolvi criar uma query em tempo de execução para fazer a verificação. Não dá nenhum erro, porém, quando digito o nome do usuário no Edit e clico
no botão que executa o procedimento, ele dá ''usuário inexistente'', mesmo se o nome do usuário estiver cadastrado no banco.
Segue o código:
procedure Tfrm_login.SpeedButton1Click(Sender: TObject); var Qry : TZQuery; begin Qry:=TZQuery.Create(nil); Qry.Connection := dm_dados.ZConnection1; //componente de conexão Qry.SQL.Add('select codigo, nome, acessar, user, pass from clientes'); Qry.Open; if Qry.Locate('USER',Edit1.Text,[]) then begin ShowMessage('usuário cadastrado'); end else begin ShowMessage('usuário inexistente'); Edit1.SetFocus; end; FreeAndNil(Qry); end;
Se alguém puder ajudar agradeço desde já.
Obrigado
-
By gabrielmdn
Boa noite meus amigos.
Estou com um problema enorme aqui. Precisei formatar o PC, e entao fiz um backup de tudo que tenho..normal
Quando abri o meu projeto no delphi e pedi para compilar ele parou na linha 114 e começou a aumentar os erros. Deixei por duas horas para ver até onde ia...e continuou
Não tenho ideia do que esta acontecendo. Se não tivesse forçado a parada forçada nao teria parado até agora.
Alguem ja passou por isso? Estou bem preocupado, pois isso nunca me aconteceu.
-
By Karlo Uchoa
Boa tarde meus amigos, Estou implementando uma integração entre um banco de dados local e outro na nuvem da Amazon. Estou com um problema sério aqui: ao fazer o Putclientes, por exemplo, ou seja, ao enviar ao servidor as alterações e inserções do Banco local, se, após um insert em lote na tabela da nuvem, o Result da função Put não conseguir retornar ao cliente rest que o chamou, por uma queda do link de internet, por exemplo, esses inserts já foram commitados na nuvem, mas os relacionamentos entre o código externo gerado e o código interno enviado, não pode ser concebida. Sendo assim, no próximo Put, os clientes sem a relação entre os códigos, serão inseridas novamente, gerando duplicidade de cadastros na nuvem. Meu problema é saber como commitar a transação na nuvem somente após o Result chegar ao cliente rest que fez a chamada. Alguém pode me ajudar com isso?
-