2012-03-07 6 views
6

약 10k 개의 이미지가 있으며 BLOB 저장소에 업로드해야합니다. 일괄 업로드를 수행하는 도구가 있습니까? 나는 또한 내 자신의 응용 프로그램을 작성하는 것에 열려 있습니다.Azure의 blob에 일괄 업로드

답변

2

ClumsyLeaf cloud explorer을보세요. FTP 클라이언트처럼 blob에 파일을 업로드합시다. 기타 Azure Storage Explorer. 같은 생각이야.

둘 모두를 사용하면 디렉토리에서 파일을 선택하고 한 번에 업로드 할 수 있습니다. 결코 10000으로 시도하지는 않으나 작동해야합니다.

+0

모든 mac 클라이언트? –

+0

Mac 사용자는 죄송합니다. http://stackoverflow.com/questions/19553587/any-azure-storage-viewer-available-for-mac – GraemeMiller

+1

Microsoft는 Windows, Linux 및 OS X 용 스토리지 탐색기의 미리보기를 출시했습니다. https://github.com/Azure/deco – Tom

1

azure storage에서 windows azure powershell을 사용하여 여러 파일을 업로드/다운로드 할 수 있습니다.

여러 파일을 업로드하는 경우 다음 명령 줄을 사용할 수 있습니다.

ls -File -Recurse | Set-AzureStorageBlobContent -Container upload 

여러 개의 blob을 다운로드하려면 다음 명령 줄을 사용하십시오.

Get-AzureStorageBlob -Container containername -Blob blobname | Get-AzureStorageBlobContent 

자세한 내용은 MSDN 페이지를 참조하십시오.

http://msdn.microsoft.com/en-us/library/dn408487.aspx

http://msdn.microsoft.com/en-us/library/dn408562.aspx

1

나는 기존의 도구로 인해 몇 스레드를 사용하여 payware 또는 느린 중 하나입니다 것으로 나타났습니다. 내가 해봤 TBH도 유료 애플리케이션은 매우 느린 있었지만, 그래서 난 내 자신의 명령 줄 도구를 작성 결국,이 azupload라고 애저 API는 정말 간단합니다 :

https://github.com/bviktor/azupload

그것은 무료의에서 발표 MIT 라이센스. C#과 Java 버전이 있으므로 Windows와 Linux 모두에서 쉽게 배포 할 수 있습니다.

C# 버전은 새 스레드를 시작하기 위해 내부 .NET 스케줄러를 사용합니다 (일반적으로 내 컴퓨터에서는 10-ish 임). Java 버전은 지정한만큼의 스레드를 시작합니다. 상당히 성능이 좋았습니다. 700 개의 이미지 (총 크기 20MB)와 100 개의 스레드로 테스트 한 결과 8 초 만에 업로드가 완료되었습니다.

물론 균형을 잡아야합니다. 너무 많은 스레드를 시작하면 결국 Java VM의 오버 헤드로 인해 속도가 느려집니다. 또한 대용량 파일을 업로드하는 경우 100 개의 스레드를 업로드하는 것은 의미가 없습니다.이 경우 병목 현상은 많은 작은 파일과 마찬가지로 트랜잭션 오버 헤드가 아닌 대역폭이 될 것이기 때문입니다. 또한 개의 파일을 개까지 업로드하면 JVM이 파일을 닫을 수있는 속도보다 빠르게 열어 잠시 후에 Too many open files 예외를 받게됩니다. (13k 파일 @ 100 스레드에서 발생했습니다). 엄지 법칙에 따라 파일 크기가 작을수록 스레드가 많아 지지만 약 50 개 정도에서 멈춰야합니다.

피드백을 보내 주시면 대단히 감사하겠습니다!

+0

mg. 고맙습니다. 이것은 거대한 PITA였습니다. 다운로드 옵션도 추가되며 조만간 풀 요청을 보내드릴 것입니다. – viggity

0

1.명시 적 옵션 : 그것은 ===== 열거 eFormat

Picture = 1 Chart = 2 Table = 3 
End Enum 

=========을 붙여 될 형식을 선택하는

======== 열거 형 ========================================================================================================== ============

 Sub pGeneratePPT_Click() 
     Dim lngWksCount   As Long Dim lngLoopFirst  As Long Dim lngLoopSecond  As Long Dim lngSlide   
As Long Dim objTemplate   As Object 
     If MsgBox("Please click OK to generate the slide or click CANCEL to exit from the existing process.", vbOKCancel, "WARNING!") 
= vbCancel Then 
     MsgBox "You have selected CANCEL please click the 'PPT converter' button again to convert into power point.", 
vbInformation, "Generation of slide presentation has been 
cancelled." 
     GoTo lblExit End If 
     lngWksCount = ThisWorkbook.Worksheets.Count Set objTemplate = Wks_INDEX.OLEObjects("objPPTTemplate") 
     For lngLoopFirst = 1 To lngWksCount 
     With ThisWorkbook.Worksheets(lngLoopFirst) 
      For lngLoopSecond = 1 To .ChartObjects.Count 
       If .ChartObjects(lngLoopSecond).Visible = True Then 
        lngSlide = lngSlide + 1 
        Call fPPTGenerator(objTemplate, .Name, lngSlide, Chart, .ChartObjects(lngLoopSecond).Name) 
       End If 
      Next lngLoopSecond 
     End With Next lngLoopFirst 
     MsgBox "Done!", vbInformation 
    lblExit: lngWksCount = Empty lngLoopFirst = Empty lngLoopSecond = Empty lngSlide = Empty Set objTemplate = 
Nothing 
     End Sub 


     Function fPPTGenerator(objOLEObject As Object, strSheetName As String, lngSlide As Long, enumPasteAs As eFormat, _ 
        strRangeOrChartName As String, Optional dblLeftInInches As Double, Optional dblTopInInches As Double, _ 
        Optional dblHeightInInches As Double, Optional dblWidthInInches As Double) 
     Dim lngLoopFirst   As Long Dim lngLoopSecond   As Long Dim objSlide    As Object 'PowerPoint.Slide 
Dim objTemplate    As Object 'Embbed File for template 
Dim objLayout    As Object Dim objMainObject   
As Object Dim varPicture    As Variant Dim lngStatus 
As Long Dim objShape    As Object Dim 
strPathTemplate   As String Dim objFileSystem   As 
Object Dim objFile     As Object Dim strFileName 
As String Dim objPresTemp    As Object Dim blnOpen 
As Boolean Dim objPPT     As Object Dim objPres 
As Object Dim blnNoError    As Boolean Dim 
blnTemplateNotFound  As Boolean 
     lngStatus = Application.ScreenUpdating Application.ScreenUpdating = False 

      On Error GoTo lblNewPPT '****If the presentation is already open or not**** Set objPPT = GetObject(, 
"Powerpoint.Application") Set objPres = objPPT.presentations(1) 
blnOpen = True '************************************************** 
     lblNewPPT: '****If the presentation is not opened already**** If blnOpen = False Then On Error GoTo 0: On Error GoTo -1: 
Err.Clear 
     Set objPPT = CreateObject("Powerpoint.Application") 
     Set objPres = objPPT.presentations.Add End If '************************************************** Set 
objFileSystem = CreateObject("Scripting.FileSystemObject") 
    '**********Setting or adding the slides*********** If objPres.slides.Count <> lngSlide Then 
     Set objLayout = objPres.Designs(1).SlideMaster.CustomLayouts(1) 
     Set objSlide = objPres.slides.Addslide(lngSlide, objLayout) Else 
     Set objSlide = objPres.slides(lngSlide) End If '************************************************** 
     '*******Opening the embbed file in the editing mode********* objOLEObject.Verb Verb:=xlEditBox objPPT.WindowState = 2 
'************************************************** 
     '*****Open the presentation and saving it at the workbook path***** Set objPresTemp = objPPT.activepresentation 
objPresTemp.SaveAs ThisWorkbook.Path & "\Template.pot" 
objPresTemp.Close 
'************************************************** 
objPPT.WindowState = 2 For Each objFile In 
objFileSystem.getfolder(ThisWorkbook.Path).Files 
     If Right(objFile.Name, 3) = "pot" Then 
      strFileName = objFile.Name 
      blnTemplateNotFound = False 
      Exit For 
     Else 
      blnTemplateNotFound = True 
     End If Next 
     If blnTemplateNotFound = False Then 
     objPres.ApplyTemplate FileName:=ThisWorkbook.Path & "\Template.pot"  'Applying the Template to the new presentation 
Else 
     MsgBox "Please embed the template in the" & vbNewLine & "'Microsoft Powerpoint 93-2003 Template' (*.pot) Format!", 
vbCritical 
     blnNoError = False 
     GoTo lblExit: End If 
     Kill ThisWorkbook.Path & "\" & strFileName        'Deleting the template thereafter applying 
     For lngLoopFirst = 1 To objSlide.Shapes.Count       'Removing the extra shapes on the new slide 
     objSlide.Shapes(lngLoopFirst).Delete 
     If objSlide.Shapes.Count > 0 Then 
      lngLoopFirst = lngLoopFirst - 1 
     Else 
      Exit For 
     End If Next 
     objPPT.Visible = True Select Case enumPasteAs 

     Case Picture: 
      On Error GoTo lblErrorPic 
      Set objMainObject = ThisWorkbook.Worksheets(strSheetName).Shapes(strRangeOrChartName) 

      objMainObject.CopyPicture Format:=xlPicture 
      Set varPicture = objSlide.Shapes.PasteSpecial(2) 
      varPicture.LockAspectRatio = False 
      blnNoError = True lblErrorPic: 
      If blnNoError = False Then 
       MsgBox "Shape object not Found!" & vbNewLine & vbNewLine & "Worksheet: " & strSheetName & _ 
       vbNewLine & "Shape:   " & strRangeOrChartName, vbCritical 
       On Error GoTo 0: On Error GoTo -1: Err.Clear 
       GoTo lblExit 
      End If 

     Case Chart: 
      On Error GoTo lblErrorChart 
      Set objMainObject = ThisWorkbook.Worksheets(strSheetName).Shapes(strRangeOrChartName) 

      objMainObject.Copy 
      objPPT.Activate 
      objSlide.Select 
      objPPT.ActiveWindow.View.Paste 
      Set varPicture = objSlide.Shapes(1) 
      blnNoError = True 
      lblErrorChart: 
      If blnNoError = False Then 
       MsgBox "Chart not Found!" & vbNewLine & vbNewLine & "Worksheet: " & strSheetName & vbNewLine _ 
       & "Chart:   " & strRangeOrChartName, vbCritical 
       On Error GoTo 0: On Error GoTo -1: Err.Clear 
       GoTo lblExit 
      End If 

     Case Table: 
      On Error GoTo lblError 
      Set objMainObject = ThisWorkbook.Worksheets(strSheetName).Range(strRangeOrChartName) 
      objMainObject.Copy 
      objPPT.Activate 
      objSlide.Select 
      objPPT.ActiveWindow.View.Paste 
      For Each objShape In objSlide.Shapes 
       If Ucase(Left(objShape.Name, 5)) = "TABLE" Then 
        Set varPicture = objSlide.Shapes(objShape.Name) 
        Exit For 
       End If 
      Next 
      blnNoError = True lblError: 
      If blnNoError = False Then 
       MsgBox "Range Not Found!" & vbNewLine & vbNewLine & "Range:   " & strRangeOrChartName & _ 
       vbNewLine & "Worksheet: " & strSheetName, vbCritical 
       On Error GoTo 0: On Error GoTo -1: Err.Clear 
       GoTo lblExit 
      End If End Select 
     With varPicture 
     If dblLeftInInches <> 0 Then 
      .Left = dblLeftInInches * 72 
     Else 
      .Left = 33 
     End If 

     If dblTopInInches <> 0 Then 
      .Top = dblTopInInches * 72 
     Else 
      .Top = 118 
     End If 

     If dblHeightInInches <> 0 Then 
      .Height = dblHeightInInches * 72 
     Else 
      .Height = 360 
     End If 

     If dblWidthInInches <> 0 Then 
      .Width = dblWidthInInches * 72 
     Else 
      .Width = 655 
     End If End With 
     objPPT.ActiveWindow.View.Zoom = 100 
    ' objPres.SaveAs ThisWorkbook.Path & "\PPT_" & Format(Now(), "dd_mmm_yyyy") & ".pptx" 
    lblExit: objPPT.WindowState = 2 
     lngLoopFirst = Empty lngLoopSecond = Empty Set objSlide = Nothing Set objTemplate = Nothing Set objLayout = Nothing Set objMainObject = Nothing Set varPicture = Nothing Set 
objShape = Nothing strPathTemplate = Empty Set objFileSystem = 
Nothing Set objFile = Nothing strFileName = Empty Set 
objPresTemp = Nothing blnOpen = Empty Set objPres = Nothing 
     Application.ScreenUpdating = lngStatus lngStatus = Empty 
     If blnNoError = False Then 
     objPPT.Quit 
     End End If 

    End Function 
     ====================================== 
     Option Explicit Option Compare Text 
     Private adoConn    As Object Private adoRset     As Object 
     Private Const mc_strModuleName  As String = "modExportExcelDataToAccess" Private Const strMsgBoxTitle  As 
String = "Uploader" Private Const strDbName    As String = 
"Test.mdb" 
     Sub test() 
     Call ExportDataIntoAccess(_ 
           db_FullPath:=ThisWorkbook.Path & Application.PathSeparator & strDbName, _ 
           db_tblName:="Test" & CLng(Timer), _ 
           xl_FileFullPath:=ThisWorkbook.FullName, _ 
           xl_SheetName:="Sheet1", _ 
           xl_DataRange:="$A$1:$E$200000", _ 
           xl_HeaderYes:=True, _ 
           blnDelTableExistingData:=True) 
    End Sub 
     Sub ExportDataIntoAccess(_ 
          ByVal db_FullPath As String, _ 
          ByVal db_tblName As String, _ 
          ByVal xl_FileFullPath As String, _ 
          ByVal xl_SheetName As String, _ 
          ByVal xl_DataRange As String, _ 
          ByVal xl_HeaderYes As Boolean, _ 
          Optional blnDelTableExistingData As Boolean = False) 


     Dim wbkWorkBook   As Workbook Dim wksWorkSheet  As Worksheet Dim varData    As Variant Dim lngLoopD 
As Long Dim lngLoopA   As Long Dim lngLoop   
As Long Dim lngFldsCount  As Long Dim lngLastCol   
As Long Dim lngLastRow   As Long Dim strSQL    
As String Dim strTemp    As String Dim lngCounter  
As Long Dim dblSum    As Double Dim dbFlds()   
As String Dim dataFlds   As Variant Dim varFound  
As Variant Dim rngFirstCell  As Range Dim rngData  
As Range Dim strAddress   As String Dim lngScreenUp  
As Long Dim lngCalc    As Long Dim dtTime    
As Date 
      dtTime = Time 
      Const DataTypeNumeric As String = "Single" Const DataTypeString As String = "varchar(255)" Const 
DataTypeDateTime As String = "DateTime" 

     'Setting Table Name If Left(db_tblName, 1) <> "[" Then 
     db_tblName = "[" & db_tblName End If If Right(db_tblName, 1) <> "]" Then 
     db_tblName = db_tblName & "]" End If 
      'Checking file path is correct. If Not IsFileExists(xl_FileFullPath) Then Exit Sub 
     'Disabling Application Level Events With Application 
     .EnableEvents = 0 
     lngCalc = .Calculation 
     lngScreenUp = .ScreenUpdating 
     '.ScreenUpdating = 0 
     .DisplayAlerts = 0 
     .Calculation = xlCalculationManual End With 
     'Checking if given file and sheet is available or not On Error Resume Next If Not IsFileOpen(xl_FileFullPath) Then 
     Set wbkWorkBook = Workbooks.Open(xl_FileFullPath) ElseIf LCase(ThisWorkbook.FullName) = LCase(xl_FileFullPath) Then 
     Set wbkWorkBook = ThisWorkbook Else 
     If IsFileOpen(xl_FileFullPath) Then 
      MsgBox "File is already open. Please save file and close it first to upload data.", vbCritical, strMsgBoxTitle 
      GoTo QuickExit 
     Else 
      Set wbkWorkBook = Workbooks.Open(xl_FileFullPath) 
     End If End If Set wksWorkSheet = wbkWorkBook.Worksheets(CStr(xl_SheetName)) 
     'Error handling If Err.Number <> 0 Then 
     MsgBox "Worksheet '" & xl_SheetName & " doesn't exists", vbInformation 
     Err.Clear: On Error GoTo 0 
     GoTo QuickExit End If 
     Call OpenDB(db_FullPath) With wksWorkSheet 

     'Data Range 
     Set rngData = .Range(xl_DataRange) 

     'checking for header if available 
     If xl_HeaderYes Then 
      dataFlds = Application.Transpose(Application.Transpose(rngData.Resize(1))) 
     Else 
      adoRset.Open "Select * From " & db_tblName & " Where 1=2", adoConn, 3, 3 

      ReDim datafld(1 To adoRset.Fields.Count) 
      For lngLoop = 0 To adoRset.Fields.Count - 1 
       Select Case adoRset.Fields(lngLoop).Type 
        Case 202 'adVarWChar 
         datafld(lngLoop + 1) = 202 'advarWChar 
        Case 4 'adSingle 
         datafld(lngLoop + 1) = 4 'adSingle 
        Case 5 'adDouble 
         datafld(lngLoop + 1) = 5 'adDouble 
        Case 7 'adDate 
         datafld(lngLoop + 1) = 7 'adDate 
       End Select 
      Next lngLoop 
     End If 
     varData = rngData End With If LCase(wbkWorkBook.FullName) <> LCase(xl_FileFullPath) Then 
wbkWorkBook.Close (0) 
     On Error GoTo 0 'Checking if table is already exist or not. If Not blnTableExistsInDB(CStr(db_tblName)) Then 
     'Creating table 
     If xl_HeaderYes Then 
      If IsArray(varData) And IsArray(dataFlds) Then 
       strTemp = "Create Table " & CStr(db_tblName) & vbLf & "(" 
       ReDim datafld(1 To UBound(dataFlds, 1)) 
       For lngLoopD = 1 To UBound(dataFlds, 1) 
        If IsNumeric(varData(2, lngLoopD)) And Len(varData(2, lngLoopD)) Then 
         strTemp = strTemp & vbLf & IIf(lngLoopD = 1, "[" & dataFlds(lngLoopD) & "]", ",[" & dataFlds(lngLoopD) & "]") & " 
" & DataTypeNumeric 
         datafld(lngLoopD) = 5 'adDouble 
        ElseIf IsDate(varData(2, lngLoopD)) Then 
         strTemp = strTemp & vbLf & IIf(lngLoopD = 1, "[" & dataFlds(lngLoopD) & "]", ",[" & dataFlds(lngLoopD) & "]") & " 
" & DataTypeDateTime 
         datafld(lngLoopD) = 7 'adDate 
        Else 
         strTemp = strTemp & vbLf & IIf(lngLoopD = 1, "[" & dataFlds(lngLoopD) & "]", ",[" & dataFlds(lngLoopD) & "]") & " 
" & DataTypeString 
         datafld(lngLoopD) = 202 'advarWChar 
        End If 
       Next lngLoopD 
       strTemp = strTemp & vbLf & ")" 
       adoConn.Execute Replace(strTemp, "''", "Null") 
      End If 
     Else 
      If IsArray(varData) Then 
       strTemp = "Create Table " & CStr(db_tblName) & vbLf & "(" 
       For lngLoopD = 1 To UBound(varData, 2) 
        If IsNumeric(varData(2, lngLoopD)) And Len(varData(2, lngLoopD)) Then 
         strTemp = strTemp & vbLf & IIf(lngLoopD = 1, "[Field" & lngLoopD & "]", ",[Field" & lngLoopD & "]") & " " & 
DataTypeNumeric 
        ElseIf IsDate(varData(2, lngLoopD)) Then 
         strTemp = strTemp & vbLf & IIf(lngLoopD = 1, "[Field" & lngLoopD & "]", ",[Field" & lngLoopD & "]") & " " & 
DataTypeNumeric 
        Else 
         strTemp = strTemp & vbLf & IIf(lngLoopD = 1, "[Field" & lngLoopD & "]", ",[Field" & lngLoopD & "]") & " " & 
DataTypeString 
        End If 
       Next lngLoopD 
       strTemp = strTemp & vbLf & ")" 
       adoConn.Execute Replace(strTemp, "''", "Null") 
      End If 
     End If Else 
     'Delete existing data from the table. 
     If blnDelTableExistingData Then 
      strSQL = "Delete * FROM " & CStr(db_tblName) 
      adoConn.Execute strSQL 
     End If End If 
     'Inserting data into the table row by row. On Error GoTo EarlyExit If IsArray(varData) Then 
     For lngLoopD = LBound(varData) + 1 To UBound(varData, 1) 
      strTemp = "INSERT INTO " & CStr(db_tblName) & " VALUES (" 
      For lngLoopA = 1 To UBound(datafld) 

       If datafld(lngLoopA) = 5 Or datafld(lngLoopA) = 4 Then 'adDouble 'adSigle 
        If Not IsEmpty(varData(lngLoopD, lngLoopA)) Then 
         strTemp = strTemp & vbLf & IIf(lngLoopA = 1, varData(lngLoopD, lngLoopA), "," & varData(lngLoopD, lngLoopA)) 
        ElseIf IsEmpty(varData(lngLoopD, lngLoopA)) Then 
         strTemp = strTemp & vbLf & IIf(lngLoopA = 1, "NULL", ",NULL") 
        End If 
       ElseIf datafld(lngLoopA) = 7 Then 'adDate 
        varData(lngLoopD, lngLoopA) = Replace(varData(lngLoopD, lngLoopA), "#", "") 
        varData(lngLoopD, lngLoopA) = Evaluate("=VALUE(""" & varData(lngLoopD, lngLoopA) & """)") 
        strTemp = strTemp & vbLf & IIf(lngLoopA = 1, varData(lngLoopD, lngLoopA), "," & varData(lngLoopD, lngLoopA)) 
       ElseIf datafld(lngLoopA) = 202 Then 'advarWChar 
        varData(lngLoopD, lngLoopA) = Replace(varData(lngLoopD, lngLoopA), "'", "''") 
        varData(lngLoopD, lngLoopA) = Replace(varData(lngLoopD, lngLoopA), """", """""") 
        strTemp = strTemp & vbLf & IIf(lngLoopA = 1, "'" & varData(lngLoopD, lngLoopA) & "'", ",'" & varData(lngLoopD, 
lngLoopA) & "'") 
       End If 

       'Debug.Print strTemp 
      Next lngLoopA 
      strTemp = strTemp & ")" 
      'Debug.Print "ROW: " & lngLoopD ' & ":" & strTemp 
      Call StatusBar(lngLoopD & " Out Of " & UBound(varData) - 1 & " Records inserted into " & db_tblName & " ...") 
      adoConn.Execute Replace(strTemp, "''", "Null") 
     Next lngLoopD 
     Call StatusBar(lngLoopD & "Records are inserted successfully." & vbLf & "Process Started at " & dtTime & " and 
Finished at " & Time) 
     MsgBox lngLoopD & "Records are inserted successfully." & vbLf & "Process Started at " & dtTime & " and Finished at " & Time, 
vbInformation, strMsgBoxTitle 
     Call StatusBar(, False) End If 
    EarlyExit: If Err.Number <> 0 Then 
     MsgBox "Error #:" & Err.Number & vbLf & Err.Description 
     Err.Clear: On Error GoTo 0 
     Stop Else 
     Call StatusBar("", False) End If Erase varData dblSum = Empty dataFlds = Empty QuickExit: With Application 
     .EnableEvents = 1 
     .ScreenUpdating = lngScreenUp 
     .DisplayAlerts = 1 
     .Calculation = lngCalc End With 
     Call CloseDB 
     End Sub 
     Private Function IsFileExists(ByVal FullFileName As String) As Boolean IsFileExists = False On Error Resume Next 
IsFileExists = CBool(Len(Dir(FullFileName))) End Function 
     Private Sub OpenDB(ByVal strDBPath As String) 
     Set adoConn = CreateObject("ADODB.Connection") Set adoRset = CreateObject("ADODB.Recordset") adoConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & CStr(strDBPath) & 
";" 
    End Sub Private Sub CloseDB() 
     On Error Resume Next If adoRset.State <> 0 Then adoRset.Close If adoConn.State <> 0 Then adoConn.Close On 
Error GoTo 0: Err.Clear 
    End Sub 

     Private Function blnTableExistsInDB(strTableName As String) As Boolean 
     Dim rst   As Object Dim strTbl  As String 
     strTbl = strTableName 
     Set rst = adoConn.OpenSchema(20) 'adSchemaTables 
     If Left(strTbl, 1) = "[" And Right(strTbl, 1) = "]" Then 
     strTbl = Mid(strTbl, 2, Len(strTbl) - 2) End If 
     rst.Filter = "TABLE_TYPE='TABLE' and TABLE_NAME='" & strTbl & "'" On Error Resume Next blnTableExistsInDB = 
(Ucase(rst.Fields("TABLE_NAME").Value) = Ucase(strTbl)) On Error 
GoTo 0 If Err.Number <> 0 Then blnTableExistsInDB = False Set 
rst = Nothing 
    End Function 
     Private Function IsFileOpen(ByVal FileName As String) 
     Dim iFilenum As Long Dim iErr As Long 
     On Error Resume Next iFilenum = FreeFile() Open FileName For Input Lock Read As #iFilenum Close iFilenum iErr 
= Err On Error GoTo 0 
     Select Case iErr Case 0: IsFileOpen = False Case 70: IsFileOpen = True Case Else: Error iErr End Select 
    End Function 
     Private Sub StatusBar(Optional strMsg As String = vbNullString, Optional blnShow As Boolean = True) 
     DoEvents If Not blnShow Then Application.StatusBar = blnShow: Exit Sub Application.StatusBar = strMsg 
    End Sub 
+1

대답 형식을 지정하십시오. 현재의 형식으로 답변 한 것을 따르는 것은 불가능합니다. –