Parâmetro definido pelo usuário usado como parte de um nome de arquivo no acesso

StackOverflow https://stackoverflow.com/questions/439815

  •  22-07-2019
  •  | 
  •  

Pergunta

Eu tenho um banco de dados Access 2007 que gera um relatório no formato Excel, o relatório depende de um parâmetro de data escolhido pelo usuário. Este parâmetro é selecionado através de uma caixa de texto (Text100) que possui um calendário pop -up. Eu gostaria de usar a data na caixa de texto (Text100) como parte do nome do arquivo. Estou usando o método de folha de transferência para criar a exportação, no entanto, não preciso dos cabeçalhos da coluna. Depois que o arquivo é criado, eu tenho o código, abra o arquivo e exclua os cabeçalhos. Além disso, o código atual está usando a data de hoje no nome do arquivo que não é preciso. O nome do arquivo precisa refletir a data que foi selecionada pelo usuário na caixa de texto do calendário pop -up

Ok, aqui está o código.

Sub Branch298nohdr()


 Dim Filename As String
 Dim Path As String
 Dim Branch As Integer
 Dim Text100 As Date
 Dim xl


    Branch = "298"
    Path = "Path" & Branch & "\"
    Filename = "Identity Report " & Branch & " " & _
                        Replace(Text100, ":", " ") & ".xls"



If Dir(Path & Filename) <> "" Then

    MsgBox "File has been created already"

If Dir(Path & Filename) <> "" Then

    GoTo 53

End If

Else


    Set xl = CreateObject("excel.application")


    TempVars.Add "branchnum", Branch    
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _
            "queryname", Path & Filename, False
    xl.workbooks.Open Path & Filename

     With xl

          .Rows("1:1").entirerow.Delete
            .Columns("L:L").select
            .Selection.NumberFormat = "0"
          .range("a1").select
            xl.workbooks(1).Close Savechanges:=True

            xl.Quit
    Set xl = Nothing
53
    MsgBox "Done!"
    End With

    TempVars.Remove "branchnum"
End If

Branch298nohdr_Exit:
    Exit Sub



End Sub

O texto 100 é onde o usuário seleciona uma data por meio de um calendário pop -up. Eu gostaria de usar essa data como parte do nome do arquivo. Atualmente, usando o Text100 como parte do nome do arquivo, ele está sendo referenciado às 12:00 da manhã e, em seguida, adiciona isso ao nome do arquivo. Espero que isso esclareça minha intenção.

O texto 100 é definido no formulário de abertura e existem vários botões que permitem ao usuário escolher entre várias ramificações ou todas as ramificações.

Foi útil?

Solução

Bem, a pergunta óbvia é: onde o Text100 é o primeiro definido?

Outro comentário de estilo, é melhor fazer

goto ExitSub
'...
ExitSub: 

Então seu "Goto 53" - é um pouco mais significativo.

Nesse ritmo, seria melhor mover sua mensagem "feita" para fora das declarações IF, e os tempvars não parecem ter um propósito; remova.

Editar:

Presumo que se o Text100 é uma caixa de texto no formulário, a linha que diz:

Dim Text100 As Date

vai substituir essa referência em seu código.

Se você está referenciando essa caixa de texto em seu código, precisa fazê -lo desta maneira:

foo = me.Text100
' or
foo = Forms!FormName.Text100

Outras dicas

É um pouco difícil determinar exatamente qual é a sua pergunta, mas acho que você está perguntando: "Como uso o conteúdo de uma caixa de texto como nome de arquivo de exportação?" Parece que em algum lugar do seu código cria uma string para o nome do arquivo que possui e agora () marcado no final para usar a data atual no nome do arquivo. Você pode simplesmente substituir o '& agora ()' por '& textbox.value'?

Um JD Long disse que é difícil ver qualquer pergunta em sua postagem. Talvez você deva editá -lo novamente.

Mas, como observação geral, você precisa escapar de todos os caracteres especiais que o usuário inseriu antes de usar a entrada no nome de um arquivo.

Os seguintes caracteres reservados não são permitidos:

< > : " / \ | ? *

Para mais detalhes sobre nomeação de arquivos no Windows, consulte: Nomeando um arquivo ou diretório em msdn.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top