使用VBA和Excel确定错误的输入文件

使用VBA和Excel确定错误的输入文件,excel,vba,Excel,Vba,对于确定用户选择的Excel文件是否不正确,有什么建议吗?我让用户选择要分析的excel文件,如果该文件的格式不正确,我将拒绝处理。在excel文件中放置隐藏的版本字段或其他字符串,如果字符串不匹配,则中断执行。当然,假设您可以控制创建文件的文件或模板。如果要分析的文件有标题,请检查部分文本 Sub ImportXYZ() ' ... Code to import If ActiveWorkbook.Worksheets("Sheet1").Range("A1") <> "XY

对于确定用户选择的Excel文件是否不正确,有什么建议吗?我让用户选择要分析的excel文件,如果该文件的格式不正确,我将拒绝处理。

在excel文件中放置隐藏的版本字段或其他字符串,如果字符串不匹配,则中断执行。当然,假设您可以控制创建文件的文件或模板。

如果要分析的文件有标题,请检查部分文本

Sub ImportXYZ()

' ... Code to import

 If ActiveWorkbook.Worksheets("Sheet1").Range("A1") <> "XYZ" Then
  MsgBox CStr(ActiveWorkbook.Name) & vbCr & _
  "The file you selected does not contain XYZ data!" & vbCr & "Please try again."

' ... Code to reset

  Call ImportXYZ

 End If

' ... Code to process import

End Sub

除了在工作表中放置标识正确文件类型的标记外,还可以使用工作簿属性。创建自定义属性MyExcelFilesClassification,并为该属性指定类似MyTypeOfWorkbook的值。代码打开文件时,请检查属性是否具有正确的值,例如:

Office.DocumentProperties customProperties = workbook.CustomDocumentProperties as Office.DocumentProperties;
     foreach (Office.DocumentProperty property in customProperties)
     {
        if (property.Name == "MyExcelFilesClassification")
        {
           string modelType = property.Value as string;
           if (modelType == "MyTypeOfWorkbook")
           {
              // do something
           }
        }
     }

这是C代码,但VBA或VB语法应该没有太大区别。

谢谢!我认为这是最好的方法,因为我无法控制初始文件