J'espère que vous pouvez aider. J'ai une macro et c'est vaste. Essentiellement ce qu'il fait est qu'il a une forme d'utilisateur Voir Pic 1Erreur Excel VBA Erreur d'exécution '53'
Cette forme d'utilisateur permet à un utilisateur de naviguer vers un modèle où les données sont stockées (voir l'image 2) et sélectionnez ce modèle accompli.
Sur le formulaire utilisateur de la photo 1. L'utilisateur clique ensuite sur le bouton radio DTOV (sans informations de réunion), puis clique sur le bouton Pré-valider.
Une fois que vous avez cliqué sur ce bouton de pré-validation, les données du modèle Excel sont copiées à partir de ce fichier Excel transformé en fichier texte avec | (séparateur), et l'utilisateur est invité à confirmer le chemin d'accès au répertoire où ce fichier texte nouvellement créé ira. Voir Pic 3
ce qui devrait arriver est que ce document texte nouvellement créé se place dans un dossier dans lequel le document de texte est repris à nouveau et envoyé à une autre base de données
Le problème que j'ai est que le texte nouvellement créé le fichier ne le fait pas dans le dossier pour être récupéré par l'autre base de données.
Je reçois une erreur erreur d'exécution « 53 » ce qui se passe sur la ligne
' create the file on the network folder Name DTOV_Directory & newfilename & "txt" As network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
qui est situé dans le Private Sub Private Sub Pre_validate_Click()
Il y a beaucoup d'autres codes dans ce macro comme vous pouvez le voir dans Pic 4 beaucoup de modules. L'autre code peut être fourni si nécessaire, mais l'erreur apparaît sur le formulaire utilisateur EFPIA_Macro
J'ai donc fourni ce code de formulaires utilisateur qu'entièrement voir ci-dessous CODE
à nouveau l'erreur se produit sur ' create the file on the network folder Name DTOV_Directory & newfilename & "txt" As network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
qui est situé dans le Private Sub Private Sub Pre_validate_Click()
Je suis vraiment du mal à résoudre celui-ci
Alors, comme toujours toute aide est grandement une ppreciated.
Merci
Pic 1
Pic 3
Pic 4
CODE
Dim DTOV_Directory As String
Dim DTOV_fname As String
Dim ITOV_Directory As String
Dim ITOV_fname As String
Dim txtFileName As String
Private Sub Clear_form_Click()
Unload Me
EFPIA_Macro.Show
End Sub
Private Sub Close_form_Click()
Unload Me
ThisWorkbook.Close savechanges:=False
Application.Quit
End Sub
Private Sub DTOV_chkbox_Change()
If txtFileName = "" Then
DTOV_chkbox = False
DTOV_filename = ""
Call dtov_file_processing
End If
txtFileName = ""
End Sub
Private Sub DTOV_chkbox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call dtov_file_processing
End Sub
Private Sub dtov_file_processing()
Dim fd As Office.FileDialog
Dim varFile As Variant
' check if either of graphical/raw file is selected
If Graphical_file.Value <> True And Raw_file.Value <> True Then
MsgBox "Please select the type of file - Graphical/Raw"
DTOV_chkbox = False
DTOV_filename = ""
txtFileName = ""
ElseIf DTOV_filename <> "" Then
DTOV_chkbox = False
DTOV_filename = ""
txtFileName = ""
Else
txtFileName = ""
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Title = "Please select the file."
' Clear out the current filters, and add our own.
.Filters.Clear
.Filters.Add "All Files", "*.*"
.Filters.Add "Excel 2003", "*.xls"
If .Show = True Then
txtFileName = .SelectedItems(1)
End If
End With
If Graphical_file.Value = True And (InStr(txtFileName, "DTOV") = 0 Or InStr(txtFileName, ".xls") = 0 Or txtFileName = "") Then
MsgBox "Incorrect DTOV file selected. Please re-select the file"
DTOV_chkbox = False
DTOV_filename = ""
ElseIf Raw_file.Value = True And InStr(txtFileName, ".xls") = 0 Then
MsgBox "Incorrect RAW file selected. Please re-select the file"
DTOV_chkbox = False
DTOV_filename = ""
Else
DTOV_filename = txtFileName
DTOV_chkbox = True
End If
End If
End Sub
Private Sub Graphical_file_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
File_category_frame_1.Caption = "Choose DTOV File"
DTOV_chkbox.Caption = "DTOV (Without Meeting Information)"
File_category_frame_2.Visible = True
ITOV_chkbox.Visible = True
DTOV_chkbox = False
DTOV_filename = ""
ITOV_chkbox = False
ITOV_filename = ""
txtFileName = ""
End Sub
Private Sub ITOV_chkbox_Change()
If txtFileName = "" Then
ITOV_chkbox = False
ITOV_filename = ""
Call itov_file_processing
End If
txtFileName = ""
End Sub
Private Sub ITOV_chkbox_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call itov_file_processing
End Sub
Private Sub itov_file_processing()
Dim fd As Office.FileDialog
' check if either of graphical/raw file is selected
If Graphical_file.Value <> True And Raw_file.Value <> True Then
MsgBox "Please select the type of file - Graphical/Raw"
ITOV_chkbox = False
ITOV_filename = ""
txtFileName = ""
ElseIf ITOV_filename <> "" Then
ITOV_chkbox = False
ITOV_filename = ""
txtFileName = ""
Else
txtFileName = ""
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = False
.Title = "Please select the file."
' Clear out the current filters, and add our own.
.Filters.Clear
.Filters.Add "All Files", "*.*"
.Filters.Add "Excel 2003", "*.xls"
If .Show = True Then
txtFileName = .SelectedItems(1)
End If
End With
If InStr(txtFileName, "ITOV") = 0 Or InStr(txtFileName, ".xls") = 0 Then
MsgBox "Incorrect file selected. Please re-select the file"
ITOV_chkbox = False
ITOV_filename = ""
Else
ITOV_filename = txtFileName
ITOV_chkbox = True
End If
End If
End Sub
Private Sub Pre_validate_Click()
Dim newfilename As String
Dim network_path As String
Dim final_msg As String
' user interface to accept network folder path
PreVal_Dir_Path.Show
network_path = EFPIA_Macro.Pre_validate.ControlTipText
EFPIA_Macro.Pre_validate.ControlTipText = ""
final_msg = "The below files are submitted for the prevalidation:"
If Not Dir(network_path, vbDirectory) = vbNullString Then
DTOV_fname = ""
ITOV_fname = ""
' call the procedure to create files.
Call Process_template_Click
' note - we need to change the destination directory (DTOV_Directory, ITOV_Directory) to the place where pre-val tool n/w folder
If DTOV_fname <> "" Then
newfilename = Left(DTOV_fname, InStrRev(DTOV_fname, "."))
If Dir(DTOV_Directory & newfilename & "txt") <> "" Then
' remove the file with same name if already exists on the network folder
If Dir(network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt") <> "" Then
Kill network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
' create the file on the network folder
Name DTOV_Directory & newfilename & "txt" As network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
final_msg = final_msg & " " & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
If Dir(DTOV_Directory & Replace(newfilename, "DTOV", "CUST") & "txt") <> "" Then
' get the new generated txt TOV file name
newfilename = Replace(newfilename, "DTOV", "CUST")
' remove the file with same name if already exists on the network folder
If Dir(network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt") <> "" Then
Kill network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
' create the file on the network folder
Name DTOV_Directory & newfilename & "txt" As network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
final_msg = final_msg & " " & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
End If
If ITOV_fname <> "" Then
newfilename = Left(ITOV_fname, InStrRev(ITOV_fname, "."))
If Dir(ITOV_Directory & newfilename & "txt") <> "" Then
' remove the file with same name if already exists on the network folder
If Dir(network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt") <> "" Then
Kill network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
' create the file on the network folder
Name ITOV_Directory & newfilename & "txt" As network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
final_msg = final_msg & " " & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
If Dir(ITOV_Directory & Replace(newfilename, "ITOV", "CUST") & "txt") <> "" Then
' get the new generated txt TOV file name
newfilename = Replace(newfilename, "ITOV", "CUST")
' remove the file with same name if already exists on the network folder
If Dir(network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt") <> "" Then
Kill network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
' create the file on the network folder
Name ITOV_Directory & newfilename & "txt" As network_path & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
final_msg = final_msg & " " & Replace(newfilename, "EFPIA", "EFPIA_PVLDTN") & "txt"
End If
End If
If DTOV_fname <> "" Or ITOV_fname <> "" Then
final_msg = final_msg & vbNewLine & "The processing will take upto 10 minutes."
final_msg = final_msg & vbNewLine & "You will receive email notification once validation process is complete."
final_msg = final_msg & vbNewLine & "You can track the status of the file and review the error using the cognos browser - link to which will be present in the email to you"
MsgBox final_msg
End If
Else
MsgBox ("Network folder is un-accessible. Please verify your access or the network folder path")
End If
End Sub
Private Sub Process_template_Click()
If DTOV_filename <> "" Then
DTOV_Directory = Left(DTOV_filename, InStrRev(DTOV_filename, "\"))
DTOV_fname = Dir(DTOV_filename)
End If
If ITOV_filename <> "" Then
ITOV_Directory = Left(ITOV_filename, InStrRev(ITOV_filename, "\"))
ITOV_fname = Dir(ITOV_filename)
End If
If DTOV_chkbox.Value = True And ITOV_chkbox.Value = True And DTOV_filename <> "" And ITOV_filename <> "" Then
Call Template_Process.Process_Templates(DTOV_Directory, DTOV_fname, ITOV_Directory, ITOV_fname)
ElseIf DTOV_chkbox.Value = True And DTOV_filename <> "" And Raw_file.Value = False Then
Call Template_Process.Process_template(DTOV_Directory, DTOV_fname, "D")
ElseIf DTOV_chkbox.Value = True And DTOV_filename <> "" And Raw_file.Value = True Then
Call Process_Raw(DTOV_Directory, DTOV_fname)
ElseIf ITOV_chkbox.Value = True And ITOV_filename <> "" Then
Call Template_Process.Process_template(ITOV_Directory, ITOV_fname, "I")
Else
MsgBox "No file selected. Please select a file to proceed"
End If
End Sub
Private Sub Raw_file_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
File_category_frame_1.Caption = "Choose RAW File"
DTOV_chkbox.Caption = "RAW (Without Graphical Information)"
DTOV_chkbox = False
DTOV_filename = ""
File_category_frame_2.Visible = False
ITOV_chkbox.Visible = False
ITOV_filename.Visible = False
End Sub
Pouvez-vous essayer d'écrire un exemple minimal, où vous recevez la même erreur? En utilisant ce 'Name DTOV_Directory & newfilename &" txt "En tant que network_path & Replace (nouveaufilename," EFPIA "," EFPIA_PVLDTN ") &" txt "' Ainsi, il serait plus facile de le répliquer et de l'aider. – Vityata
Pensez-vous que vous pourriez rendre la question plus mince en n'extrayant que [mcve] et en supprimant le reste? – miroxlav