A idéia é a seguinte. Tenho um código cuja função é atuar sobre um arquivo do Word (2010) para modificá-lo de acordo com certas regras e, depois, usá-lo como comandos de sintax de um pacote estatístico. O processo:
- Criar um arquivo .txt, vazio, onde serão incluídos os comandos da sintax.
- Este arquivo deve ser salvo em um diretório a ser escolhido usuário, com um nome escolhido pelo usuário e depois aberto para gravação.
Imaginei esta solução:
Chamar um formulario onde há:
- Uma caixa de texto, para o usuário escrever o nome do arquivo, sem extensão e sem o caminho.
- Um botão de comando que abre uma caixa de diálogo "salvar como", já com o nome do arquivo inserido, com a extensão .txt.
- Um label que intitula a caixa de texto.
O código do formulário é o seguinte:
Private Sub UserForm_Initialize()
Userform13.CAPTION = "Criar arquivo para sintax"
With Label1
.CAPTION = "Digite o nome do arquivo"
.Font.Name = "Calibri"
.Font.Size = 11
End With
With CommandButton1
.CAPTION = "Selecionar"
.Font.Name = "Calibri"
.Font.Size = 11
.BackStyle = fmBackStyleTransparent
End With
With TextBox1
.Font.Name = "Calibri"
.Font.Size = 11
.TextAlign = fmTextAlignLeft
End With
End Sub
Private Sub CommandButton1_Click()
Set NFile = TextBox1
With Dialogs(wdDialogFileSaveAs)
.Name = NFile
.Format = (wdFormatText)
If .Show = -1 Then
Exit Sub
End If
End With
End Sub
No tópico CommandButton1_Click há um problema: quando o botão "Salvar" da DialogSaveAs é acionado e salva o arquivo nomeado, a instrução Exit Sub não é acionada e, consequentemente. não interrompe a execução do procedimento.
O início do procedimento que chama a UserForm e vai gravar o arquivo de sintax seria o seguinte:
Sub MontaSintaxRecode()
Dim TítuloMb, Inf
Dim Msg
Dim Style As VbMsgBoxStyle
'Conteúdo da MsgBox
Msg = "Para utilizar esta macro, é necessário que a recodificação" & Chr(10) + Chr(13) _
& "seja feita no programa AtlasTI e que o documento inicial" & Chr(10) + Chr(13) _
& "tenha sido gerado com a macro SaidaAtlasTI_Code"
TítuloMb = "IMPORTANTE"
Style = vbCritical
Inf = MsgBox(Msg, Style, TítuloMb)
Call UserForm("UserForm13") 'Aqui está o problema: este comando, com ou sem a instrução Call, gera erros de compilação. Com a instrução e o
'argumento, "Sub" ou "Function" não definida, o que ocorre, também se se retirar a instrução e o argumento.
'Se a chamada for feita apenas com "UserForm13" (sem aspas), o erro de compilação indica "Uso inválido da propriedade".
'Tentei declarar variáveis em módulo de classe na UserForm, definir tipos de variáveis com ByVal e ByRec, mas não deu certo.
'Onde está meu erro?
End Sub
Também não consegui, ainda, resolver como chamar de volta o arquivo .txt. O seu nome pode ser "guardado" em uma variável. Mas o caminho completo só é definido pelas escolhas do usuário em
With Dialogs(wdDialogFileSaveAs). Como chamar o caminho completo? Tem como atribuir a ele uma variável para uso em outras partes do código?
Sou novo nisto e tenho pouca, ou nenhum, experiência com programação, a não com as sintax do pacote estatístico que uso para trabalhar. Mas é bem diferente do VBA. Então, alguém pode me ajudar?
Desde já, muito obrigado.