Arquivado
Este tópico foi arquivado e está fechado para novas respostas.
- 0
Entrada de dados formatada pelo Visual Basic
Perguntado por
Everaldo Miceli d Avila
-
Conteúdo Similar
-
Por 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.
-
Por Robson Wenzel
Olá, sou novo no VB
Estou desenvolvendo um programa de atendimento médico onde tem vários textboxs e um deles é de Valor (R$).
O meu problema é o seguinte...
No meu banco de dados o campo valor é do tipo moeda e o banco é em access
No meu programa no dataset configurei ele para double e por código consegui colocar automaticamente ponto e virgula.
Até ai acho que tudo bem...
Só que quando eu clico para salvar ele automaticamente esquece do ponto e virgula e salva no datagridview o valor sem ponto e virgula, e dai quando eu seleciono o registro ele esquece dos centavos
Ex.:
Eu digito na text box: R$ 1.250,00
E quando eu salvo aparece na datagridview: 1250
Quando seleciono o mesmo registro ele fica assim na textbox: R$ 12,50
Só se os centavos não forem zerados ele salva mais se forem 00 ele não salva
Por favor! me ajudem.
Segue o código da formula para colocar os ponto e virgula para vocês darem uma olhada e ver se tem erros...
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Public Shared Sub Moeda(ByRef txt As TextBox) Dim n As String = String.Empty Dim v As Double = 0 Try n = txt.Text.Replace(",", "").Replace(".", "") If n.Equals("") Then n = "" n = n.PadLeft(3, "0") If n.Length > 3 And n.Substring(0, 1) = "0" Then n = n.Substring(1, n.Length - 1) v = Convert.ToString(n) / 100 txt.Text = String.Format("{0:C2}", v) txt.SelectionStart = txt.Text.Length Catch ex As Exception End Try End Sub Private Sub valortxt_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles valortxt.KeyPress Select Case (valortxt.TextLength) Case 4 valortxt.SelectionStart = 5 End Select End Sub Private Sub valortxt_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles valortxt.TextChanged Atendimentos.Moeda(valortxt) End Sub ------------------------------------------------------------------------------------------------------------------------------------------------------------
-
Por Roberto Paes
System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.FileName = "cmd.exe"; startInfo.Arguments = "/C start copy " + Application.StartupPath + @"\launcher\Sanchez.Patcher.exe " + Application.StartupPath; process.StartInfo = startInfo; process.Start(); Oi pessoal, Boa noite. Me chamo Roberto e estou tendo problemas em usar o cmd com o c#. O meu código funciona perfeitamente, mas eu não consigo ocultar a janela do cmd. Bom, apresentado o meu problema. Espero que possam me ajudar.
-
Por felipegon02
Gostaria da ajuda de vocês membros, estou fazendo um projeto que é pro meu TCC utilizando o MYSQL e o Visual Basic, neste projeto queria fazer agendamento de clientes, mas para isso, queria comparar o horário selecionado pelo cliente com o banco de dados, para ver se o horário está disponível mas não sei com fazer isso. Obrigado
Estou iniciando no Visual Studio (VB) estou usando um banco de dados Access interligado com vários DBF., porém não consegui que o VS montasse a edição e gravação desta o VS dá uma mensagem de que tem erro com a grafia
" Private Sub DBF_11ABindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles DBF_11ABindingNavigatorSaveItem.Click Me.Validate() Me.DBF_11ABindingSource.EndEdit() Me.TableAdapterManager.UpdateAll(Me.DatabaseSisdespDataSet) End Sub "
alguém pode me ajudar?
Compartilhar este post
Link para o post
Compartilhar em outros sites