`
垂直的微笑
  • 浏览: 45465 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

VBA SQL生成

阅读更多
'CreateTable用 固定値
Const CreateTableBat = "CreateTable.bat"
Const CreateIndexBat = "CreateIndex.bat"
Const CreateSPBat = "CreateSP.bat"
Const CreateBCPBat = "CreateBCP.bat"
Const SheetNameIgnore = "設定・作成"
Const SheetNameHIF = "ホストIF"
Const SheetNameStartRow = 14
Const SheetNameStartCol = 1
Const DbTypeRow = 2
Const InPathRow = 3
Const FilePathRow = 4
Const SuffixRow = 4
Const IdxFilePathRow = 5
Const DbNameRow = 7
Const DbUserRow = 8
Const DbPswdRow = 9
Const DbServerRow = 10
Const BatLogRow = 11

'各テーブル定義書用 固定値
Const SQLCreateRow = 10       '項目開始行
Const ItemNameCol = 3         '項目名カラム
Const ItemIDCol = 10           '項目IDカラム
Const ItemAttributeCol = 18   '項目属性カラム
Const ItemLengthCol = 22      '項目レングスカラム
Const ItemScaleCol = 24       '項目小数点レングスカラム
Const ItemPKeyCol = 28        '主キーカラム
Const ItemNotNullCol = 26     'Not Null制約カラム
Const ItemDefaultCol = 30     '初期値カラム
Const SQLDefinedSheetName = "テーブル"

Const TableNameRow = 7
Const TableNameCol = 18
Const FileGroupRow = 7
Const FileGroupCol = 26

'ブック名チェック
Function BookCheck(pathName As String, bookName As String) As Integer

On Error GoTo BookCheckError
Dim sheetName As String

BookCheck = 0

If bookName = "CreateSQL.xls" Then
    BookCheck = 1
    Exit Function
End If

If InStr(1, bookName, ".xls") = 0 Then
    BookCheck = 1
    Exit Function
End If

'sheetName = Mid(bookName, 1, InStr(1, bookName, ".xls") - 1)
'Application.Workbooks.Open pathName + bookName, , True
'Workbooks(bookName).Worksheets(sheetName).Activate
'Workbooks(bookName).Close False

Exit Function

BookCheckError:
    If (Err = 9) Then
      BookCheck = 1
      Workbooks(bookName).Close
      Exit Function
    End If
End Function
'ブック名チェック
Function BookCheck2(pathName As String, bookName As String, suffix As String) As Integer

On Error GoTo BookCheck2Error
Dim sheetName As String

BookCheck2 = 0

If InStr(1, UCase(bookName), suffix) = 0 Then
    BookCheck2 = 1
    Exit Function
End If

Exit Function

BookCheck2Error:
    If (Err = 9) Then
      BookCheck2 = 1
      Exit Function
    End If
End Function

'ブック名チェック
Function BookCheck3(pathName As String, bookName As String, pos As Integer) As Integer

On Error GoTo BookCheck3Error
Dim sheetName As String

BookCheck3 = 0

If bookName = "CreateSQL.xls" Then
    BookCheck3 = 1
    Exit Function
End If

If InStr(1, bookName, ".xls") = 0 Then
    BookCheck3 = 1
    Exit Function
End If

sheetName = Mid(bookName, 1, InStr(1, bookName, ".xls") - 1)
Application.Workbooks.Open pathName + bookName, , True
Workbooks(bookName).Worksheets(sheetName).Activate
If (Worksheets(sheetName).Cells(18, 27) <> "ホストインターフェイス情報") Then
    BookCheck3 = 1
Else
    If (Worksheets(sheetName).Cells(8, 16) <> "ホストIF情報") Then
        Workbooks("CreateSQL.xls").Worksheets("ホストIF").Cells(pos, 2) = "旧フォーマットのレイアウトです、削除フラグは各テーブルレイアウトに定義してください"
    End If
End If

Workbooks(bookName).Close False

Exit Function

BookCheck3Error:
    If (Err = 9) Then
      BookCheck3 = 1
      Workbooks(bookName).Close
      Exit Function
    End If
End Function
'BCP検索
Sub BCPLineUp()

Dim mstrDirStack() As String
Dim lngDirNum() As Long
Dim lngDirPointer() As Long
Dim strDirName As String
Dim strDirReturn As String

lngDirCnt1 = 0
lngDirCnt2 = 0
lngDirCnt3 = 0
blnDirExistFlag = False
strFolderName = Cells(InPathRow, 2)

Worksheets("BCP作成").Range("A" & Mid(Str(SheetNameStartRow), 2) & ":A2000").Clear

ReDim Preserve mstrDirStack(lngDirCnt1)
mstrDirStack(lngDirCnt1) = strFolderName
lngDirCnt1 = lngDirCnt1 + 1
ReDim Preserve lngDirNum(lngDirCnt2)
lngDirNum(lngDirCnt2) = lngDirCnt1
lngDirCnt2 = lngDirCnt2 + 1
ReDim Preserve lngDirPointer(lngDirCnt3)
lngDirPointer(lngDirCnt3) = lngDirCnt1
lngDirCnt3 = lngDirCnt3 + 1

i = 0
strDirName = strFolderName & "\"
strDirReturn = Dir(strDirName, vbDirectory)
Do While strDirReturn <> ""
  If strDirReturn <> "." And strDirReturn <> ".." Then
    If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
      blnDirExistFlag = True
      ReDim Preserve mstrDirStack(lngDirCnt1)
      mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
      lngDirCnt1 = lngDirCnt1 + 1
    Else
        If (BookCheck2(strDirName, strDirReturn, UCase(Worksheets("BCP作成").Cells(SuffixRow, 2))) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
        End If
    End If
  End If
  strDirReturn = Dir
Loop

If blnDirExistFlag = True Then
  ReDim Preserve lngDirNum(lngDirCnt2)
  lngDirNum(lngDirCnt2) = lngDirCnt1
  lngDirCnt2 = lngDirCnt2 + 1
  ReDim Preserve lngDirPointer(lngDirCnt3)
  lngDirPointer(lngDirCnt3) = lngDirCnt1
  lngDirCnt3 = lngDirCnt3 + 1
Else
  Exit Sub
End If

Do
  blnDirExistFlag = False
  If lngDirCnt3 = 1 Then
    lngDirStart = 0
  Else
    lngDirStart = lngDirPointer(lngDirCnt3 - 2)
  End If

  For lngFor_Cnt = lngDirStart To lngDirPointer(lngDirCnt3 - 1) - 1
    strDirName = mstrDirStack(lngFor_Cnt) & "\"
    strDirReturn = Dir(strDirName, vbDirectory)
    Do While strDirReturn <> ""
      If strDirReturn <> "." And strDirReturn <> ".." Then
        If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
          blnDirExistFlag = True
          ReDim Preserve mstrDirStack(lngDirCnt1)
          mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
          lngDirCnt1 = lngDirCnt1 + 1
        Else
          If (BookCheck2(strDirName, strDirReturn, UCase(Worksheets("BCP作成").Cells(SuffixRow, 2))) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
          End If
        End If
      End If
      strDirReturn = Dir
    Loop

    If lngDirCnt1 <> 0 Then
      ReDim Preserve lngDirNum(lngDirCnt2)
      lngDirNum(lngDirCnt2) = lngDirCnt1
        lngDirCnt2 = lngDirCnt2 + 1
    End If
  Next lngFor_Cnt

  If blnDirExistFlag = True Then
    ReDim Preserve lngDirPointer(lngDirCnt3)
    lngDirPointer(lngDirCnt3) = lngDirCnt1
    lngDirCnt3 = lngDirCnt3 + 1
  End If
Loop While blnDirExistFlag = True

End Sub
'SP検索
Sub SPLineUp()

Dim mstrDirStack() As String
Dim lngDirNum() As Long
Dim lngDirPointer() As Long
Dim strDirName As String
Dim strDirReturn As String

lngDirCnt1 = 0
lngDirCnt2 = 0
lngDirCnt3 = 0
blnDirExistFlag = False
strFolderName = Cells(InPathRow, 2)

Worksheets("バッチ作成").Range("A" & Mid(Str(SheetNameStartRow), 2) & ":A2000").Clear

ReDim Preserve mstrDirStack(lngDirCnt1)
mstrDirStack(lngDirCnt1) = strFolderName
lngDirCnt1 = lngDirCnt1 + 1
ReDim Preserve lngDirNum(lngDirCnt2)
lngDirNum(lngDirCnt2) = lngDirCnt1
lngDirCnt2 = lngDirCnt2 + 1
ReDim Preserve lngDirPointer(lngDirCnt3)
lngDirPointer(lngDirCnt3) = lngDirCnt1
lngDirCnt3 = lngDirCnt3 + 1

i = 0
strDirName = strFolderName & "\"
strDirReturn = Dir(strDirName, vbDirectory)
Do While strDirReturn <> ""
  If strDirReturn <> "." And strDirReturn <> ".." Then
    If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
      blnDirExistFlag = True
      ReDim Preserve mstrDirStack(lngDirCnt1)
      mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
      lngDirCnt1 = lngDirCnt1 + 1
    Else
        If (BookCheck2(strDirName, strDirReturn, UCase(Worksheets("バッチ作成").Cells(SuffixRow, 2))) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
        End If
    End If
  End If
  strDirReturn = Dir
Loop

If blnDirExistFlag = True Then
  ReDim Preserve lngDirNum(lngDirCnt2)
  lngDirNum(lngDirCnt2) = lngDirCnt1
  lngDirCnt2 = lngDirCnt2 + 1
  ReDim Preserve lngDirPointer(lngDirCnt3)
  lngDirPointer(lngDirCnt3) = lngDirCnt1
  lngDirCnt3 = lngDirCnt3 + 1
Else
  Exit Sub
End If

Do
  blnDirExistFlag = False
  If lngDirCnt3 = 1 Then
    lngDirStart = 0
  Else
    lngDirStart = lngDirPointer(lngDirCnt3 - 2)
  End If

  For lngFor_Cnt = lngDirStart To lngDirPointer(lngDirCnt3 - 1) - 1
    strDirName = mstrDirStack(lngFor_Cnt) & "\"
    strDirReturn = Dir(strDirName, vbDirectory)
    Do While strDirReturn <> ""
      If strDirReturn <> "." And strDirReturn <> ".." Then
        If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
          blnDirExistFlag = True
          ReDim Preserve mstrDirStack(lngDirCnt1)
          mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
          lngDirCnt1 = lngDirCnt1 + 1
        Else
          If (BookCheck2(strDirName, strDirReturn, UCase(Worksheets("バッチ作成").Cells(SuffixRow, 2))) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
          End If
        End If
      End If
      strDirReturn = Dir
    Loop

    If lngDirCnt1 <> 0 Then
      ReDim Preserve lngDirNum(lngDirCnt2)
      lngDirNum(lngDirCnt2) = lngDirCnt1
        lngDirCnt2 = lngDirCnt2 + 1
    End If
  Next lngFor_Cnt

  If blnDirExistFlag = True Then
    ReDim Preserve lngDirPointer(lngDirCnt3)
    lngDirPointer(lngDirCnt3) = lngDirCnt1
    lngDirCnt3 = lngDirCnt3 + 1
  End If
Loop While blnDirExistFlag = True

End Sub
'実行!!
Sub AllSheetsMakeBCP()
createTable = False

LogPath = Worksheets("BCP作成").Cells(BatLogRow, 2)
FilePath = Worksheets("BCP作成").Cells(InPathRow, 2)

If FilePath = "" Then
    If MsgBox("出力ファイルパスが書かれていません", vbOKOnly + vbCritical, "Create Insert SQL") = vbOK Then
        Worksheets("BCP作成").Cells(FilePathRow, 2).Select
        Exit Sub
    End If
End If
If (Dir(FilePath, vbDirectory) = "") Then
   ExecCommand "cmd.exe /c mkdir " + FilePath
End If
S = 0

SQLSheetName = Worksheets("BCP作成").Cells(SheetNameStartRow + S, 1)
While SQLSheetName <> ""
    pos = InStrRev(SQLSheetName, "\")
    bookName = Mid(Mid(SQLSheetName, pos + 1), 1, Len(Mid(SQLSheetName, pos + 1)) - 4)
   
    If (S = 0) Then
        Filename = FilePath & "\" & CreateBCPBat
        Open Filename For Output As #2
        Print #2, "echo BCP作成 > " & LogPath
        Print #2, ""
        Print #2, "cd /d " & FilePath
        Print #2, ""
        Print #2, "set DBNAME=" & Worksheets("BCP作成").Cells(DbNameRow, 2)
        Print #2, "set UNAME=" & Worksheets("BCP作成").Cells(DbUserRow, 2)
        Print #2, "set PNAME=" & Worksheets("BCP作成").Cells(DbPswdRow, 2)
        Print #2, "set SNAME=" & Worksheets("BCP作成").Cells(DbServerRow, 2)
    End If

    If (Worksheets("BCP作成").Cells(6, 2) = "TI") Then
        Print #2, "isql -U%UNAME% -P%PNAME% -S%SNAME% -d%DBNAME% -Q""truncate table " & bookName & """"
    End If
    Print #2, "bcp " & Worksheets("BCP作成").Cells(DbNameRow, 2) & ".." & bookName & " in " & SQLSheetName & " -U%UNAME% -P%PNAME% -S%SNAME% -c -b50000 >> " & LogPath
    Print #2, ""

    S = S + 1
    SQLSheetName = Worksheets("BCP作成").Cells(SheetNameStartRow + S, 1)
Wend
Worksheets("BCP作成").Activate
Print #2, "pause"
Print #2, ""
Close #2

AllSheetsMakeBCP_1:

If (rcd >= 0) Then
    MsgBox "ちゃんと出来ました。"
End If
End Sub
'実行!!
Sub AllSheetsMakeSP()
createTable = False

LogPath = Worksheets("バッチ作成").Cells(BatLogRow, 2)
FilePath = Worksheets("バッチ作成").Cells(InPathRow, 2)

If FilePath = "" Then
    If MsgBox("出力ファイルパスが書かれていません", vbOKOnly + vbCritical, "Create Insert SQL") = vbOK Then
        Worksheets("バッチ作成").Cells(FilePathRow, 2).Select
        Exit Sub
    End If
End If
S = 0
If (Dir(FilePath, vbDirectory) = "") Then
   ExecCommand "cmd.exe /c mkdir " + FilePath
End If

SQLSheetName = Worksheets("バッチ作成").Cells(SheetNameStartRow + S, 1)
While SQLSheetName <> ""
    pos = InStrRev(SQLSheetName, "\")
    bookName = Mid(SQLSheetName, pos + 1)
    sheetName = Mid(bookName, 1, InStr(1, UCase(bookName), UCase(Worksheets("バッチ作成").Cells(SuffixRow, 2))) - 1)
   
    'CreateTable.bat作成
    If (createTable = False) Then
        Filename = FilePath & "\" & CreateSPBat
        Open Filename For Output As #2
        Print #2, "echo テーブル作成 > " & LogPath
        Print #2, ""
        Print #2, "cd /d " & FilePath
        Print #2, ""
        Print #2, "set DBNAME=" & Worksheets("バッチ作成").Cells(DbNameRow, 2)
        Print #2, "set UNAME=" & Worksheets("バッチ作成").Cells(DbUserRow, 2)
        Print #2, "set PNAME=" & Worksheets("バッチ作成").Cells(DbPswdRow, 2)
        Print #2, "set SNAME=" & Worksheets("バッチ作成").Cells(DbServerRow, 2)
        Print #2, ""
        createTable = True
    End If
    Print #2, "echo " & sheetName & Worksheets("バッチ作成").Cells(SuffixRow, 2) & " >> " & LogPath
    Print #2, "isql -U%UNAME% -P%PNAME% -S%SNAME% -d%DBNAME% -i" & SQLSheetName & ">> " & LogPath
    Print #2, "echo " & sheetName & Worksheets("バッチ作成").Cells(SuffixRow, 2) & " >> " & LogPath
    Print #2, ""

    S = S + 1
    SQLSheetName = Worksheets("バッチ作成").Cells(SheetNameStartRow + S, 1)
Wend
Worksheets("バッチ作成").Activate
Print #2, "pause"
Print #2, ""
Close #2

AllSheetsMakeSP_1:

If (rcd >= 0) Then
    MsgBox "ちゃんと出来ました。"
End If
End Sub

'シート検索
Sub SheetNamesLineUp()

Dim mstrDirStack() As String
Dim lngDirNum() As Long
Dim lngDirPointer() As Long
Dim strDirName As String
Dim strDirReturn As String

lngDirCnt1 = 0
lngDirCnt2 = 0
lngDirCnt3 = 0
blnDirExistFlag = False
strFolderName = Cells(InPathRow, 2)

Worksheets(SheetNameIgnore).Range("A" & Mid(Str(SheetNameStartRow), 2) & ":A2000").Clear

ReDim Preserve mstrDirStack(lngDirCnt1)
mstrDirStack(lngDirCnt1) = strFolderName
lngDirCnt1 = lngDirCnt1 + 1
ReDim Preserve lngDirNum(lngDirCnt2)
lngDirNum(lngDirCnt2) = lngDirCnt1
lngDirCnt2 = lngDirCnt2 + 1
ReDim Preserve lngDirPointer(lngDirCnt3)
lngDirPointer(lngDirCnt3) = lngDirCnt1
lngDirCnt3 = lngDirCnt3 + 1

i = 0
strDirName = strFolderName & "\"
strDirReturn = Dir(strDirName, vbDirectory)
Do While strDirReturn <> ""
  If strDirReturn <> "." And strDirReturn <> ".." Then
    If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
      blnDirExistFlag = True
      ReDim Preserve mstrDirStack(lngDirCnt1)
      mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
      lngDirCnt1 = lngDirCnt1 + 1
    Else
        If (BookCheck(strDirName, strDirReturn) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
        End If
    End If
  End If
  strDirReturn = Dir
Loop

If blnDirExistFlag = True Then
  ReDim Preserve lngDirNum(lngDirCnt2)
  lngDirNum(lngDirCnt2) = lngDirCnt1
  lngDirCnt2 = lngDirCnt2 + 1
  ReDim Preserve lngDirPointer(lngDirCnt3)
  lngDirPointer(lngDirCnt3) = lngDirCnt1
  lngDirCnt3 = lngDirCnt3 + 1
Else
  Exit Sub
End If

Do
  blnDirExistFlag = False
  If lngDirCnt3 = 1 Then
    lngDirStart = 0
  Else
    lngDirStart = lngDirPointer(lngDirCnt3 - 2)
  End If

  For lngFor_Cnt = lngDirStart To lngDirPointer(lngDirCnt3 - 1) - 1
    strDirName = mstrDirStack(lngFor_Cnt) & "\"
    strDirReturn = Dir(strDirName, vbDirectory)
    Do While strDirReturn <> ""
      If strDirReturn <> "." And strDirReturn <> ".." Then
        If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
          blnDirExistFlag = True
          ReDim Preserve mstrDirStack(lngDirCnt1)
          mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
          lngDirCnt1 = lngDirCnt1 + 1
        Else
          If (BookCheck(strDirName, strDirReturn) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
          End If
        End If
      End If
      strDirReturn = Dir
    Loop

    If lngDirCnt1 <> 0 Then
      ReDim Preserve lngDirNum(lngDirCnt2)
      lngDirNum(lngDirCnt2) = lngDirCnt1
        lngDirCnt2 = lngDirCnt2 + 1
    End If
  Next lngFor_Cnt

  If blnDirExistFlag = True Then
    ReDim Preserve lngDirPointer(lngDirCnt3)
    lngDirPointer(lngDirCnt3) = lngDirCnt1
    lngDirCnt3 = lngDirCnt3 + 1
  End If
Loop While blnDirExistFlag = True

End Sub
'実行!!
Sub AllSheetsMakeCreateSQL()
createTable = False
createIndex = False
Dim idxLogPath As String
Dim findDotIndex As Integer
Dim bookError As Integer
Dim bookErrorCnt As Integer
Dim bookErrorName As String

On Error GoTo AllSheetsMakeCreateSQLError

bookErrorName = ""
bookError = 0
bookErrorCnt = 0

LogPath = Worksheets(SheetNameIgnore).Cells(BatLogRow, 2)

If LogPath = "" Then
    If MsgBox("ログファイルパスが書かれていません", vbOKOnly + vbCritical, "Create Insert SQL") = vbOK Then
        Worksheets(SheetNameIgnore).Cells(BatLogRow, 2).Select
        Exit Sub
    End If
End If

idxLogPath = LogPath 'インデックスのログファイルパスとファイル名を設定。
findDotIndex = InStrRev(idxLogPath, ".")

If findDotIndex > 0 Then
    '"."が見つかった場合
    idxLogPath = (Left(idxLogPath, findDotIndex - 1) & "Index" & Right(idxLogPath, Len(idxLogPath) - findDotIndex + 1))
Else
    ' "."が見つからない場合
    idxLogPath = idxLogPath & "Index"
End If



FilePath = Worksheets(SheetNameIgnore).Cells(FilePathRow, 2)
IdxFilePath = Worksheets(SheetNameIgnore).Cells(IdxFilePathRow, 2)

If (Dir(FilePath, vbDirectory) = "") Then
   ExecCommand "cmd.exe /c mkdir " + FilePath
End If
If (Dir(IdxFilePath, vbDirectory) = "") Then
   ExecCommand "cmd.exe /c mkdir " + IdxFilePath
End If

If FilePath = "" Then
    If MsgBox("出力ファイルパスが書かれていません", vbOKOnly + vbCritical, "Create Insert SQL") = vbOK Then
        Worksheets(SheetNameIgnore).Cells(FilePathRow, 2).Select
        Exit Sub
    End If
End If
S = 0

SQLSheetName = Worksheets(SheetNameIgnore).Cells(SheetNameStartRow + S, 1)
While SQLSheetName <> ""

AllSheetsMakeCreateSQL_2:
   
    pos = InStrRev(SQLSheetName, "\")
    bookName = Mid(SQLSheetName, pos + 1)
    'sheetName = Mid(bookName, 1, InStr(1, bookName, ".xls") - 1)
    sheetName = SQLDefinedSheetName
    Application.Workbooks.Open SQLSheetName, , True
    bookError = 1
    Workbooks(bookName).Worksheets(sheetName).Activate
    If bookError = 2 Then
        S = S + 1
        SQLSheetName = Worksheets(SheetNameIgnore).Cells(SheetNameStartRow + S, 1)
        GoTo AllSheetsMakeCreateSQL_2
    End If
    bookError = 0
    'SQL作成
    rcd = MakeCreateSQL(FilePath, IdxFilePath, sheetName)
    If (rcd < 0) Then GoTo AllSheetsMakeCreateSQL_1
    Workbooks(bookName).Close False
    S = S + 1
    SQLSheetName = Worksheets(SheetNameIgnore).Cells(SheetNameStartRow + S, 1)
   
    'CreateTable.bat作成
    If (createTable = False) Then
        Filename = FilePath & "\" & CreateTableBat
        Open Filename For Output As #2
        Print #2, "echo テーブル作成 > " & LogPath
        Print #2, ""
        Print #2, "cd /d " & FilePath
        Print #2, ""
        Print #2, "set DBNAME=" & Worksheets(SheetNameIgnore).Cells(DbNameRow, 2)
        Print #2, "set UNAME=" & Worksheets(SheetNameIgnore).Cells(DbUserRow, 2)
        Print #2, "set PNAME=" & Worksheets(SheetNameIgnore).Cells(DbPswdRow, 2)
        Print #2, "set SNAME=" & Worksheets(SheetNameIgnore).Cells(DbServerRow, 2)
        Print #2, ""
        createTable = True
    End If
    Print #2, "echo " & sheetName & ".sql >> " & LogPath
    Print #2, "isql -U%UNAME% -P%PNAME% -S%SNAME% -d%DBNAME% -i" & sheetName & ".sql >> " & LogPath
    Print #2, "echo " & sheetName & ".sql >> " & LogPath
    Print #2, ""

    'CreateIndex.bat作成
    If rcd = 1 Then
        If (createIndex = False) Then
            Filename = IdxFilePath & "\" & CreateIndexBat
            Open Filename For Output As #3
            Print #3, "echo インデックス作成 > " & idxLogPath
            Print #3, ""
            Print #3, "cd /d " & IdxFilePath
            Print #3, ""
            Print #3, "set DBNAME=" & Worksheets(SheetNameIgnore).Cells(DbNameRow, 2)
            Print #3, "set UNAME=" & Worksheets(SheetNameIgnore).Cells(DbUserRow, 2)
            Print #3, "set PNAME=" & Worksheets(SheetNameIgnore).Cells(DbPswdRow, 2)
            Print #3, "set SNAME=" & Worksheets(SheetNameIgnore).Cells(DbServerRow, 2)
            Print #3, ""
            createIndex = True
        End If
        Print #3, "echo index_" & sheetName & ".sql >> " & idxLogPath
        Print #3, "isql -U%UNAME% -P%PNAME% -S%SNAME% -d%DBNAME% -iindex_" & sheetName & ".sql >> " & idxLogPath
        Print #3, "echo index_" & sheetName & ".sql >> " & idxLogPath
        Print #3, ""
    End If
Wend
Worksheets(SheetNameIgnore).Activate
Print #2, "pause"
Print #2, ""
Close #2
If (createIndex = True) Then
Print #3, "pause"
Print #3, ""
End If
Close #3

AllSheetsMakeCreateSQL_1:

If (rcd >= 0) Then
    If (bookErrorCnt > 0) Then
        MsgBox bookErrorName + "だけ、作成に失敗しました。"
    Else
        MsgBox "ちゃんと出来ました。"
    End If
Else
    MsgBox "ちゃんと出来ませんでした。"
End If

Exit Sub

AllSheetsMakeCreateSQLError:
    If (Err = 9 And bookError = 1) Then
      Workbooks(bookName).Close
      bookError = 2
      bookErrorCnt = bookErrorCnt + 1
      If bookErrorName <> "" Then
          bookErrorName = bookErrorName + "," + bookName
      Else
          bookErrorName = bookName
      End If
      Resume Next
    Else
        MsgBox bookName + "作成中にエラー" + Error(Err) + Str(Err)
    End If
End Sub

'SQLの作成
Function MakeCreateSQL(FilePath, IdxFilePath, SQLSheetName) As Integer
Dim pry As Integer
MakeCreateSQL = 0
ColID = ""
ColAtt = ""
ColLen = ""
ColScaleLen = ""
CreateCol = ""
CreateCol2 = ""
ColNotNull = ""
ColDefault = ""
ColPKey = ""
ColIdentity = ""

TableName = ""
TableName_hist = ""
CreateSQL = ""
DropSQL = ""

'テーブル名
TableName = Worksheets(SQLSheetName).Cells(TableNameRow, TableNameCol)

'ファイルグループ名
FileGroup = Worksheets(SQLSheetName).Cells(FileGroupRow, FileGroupCol)
If InStr(1, FileGroup, "/") <> 0 Then
    FileGroupIdx = Mid(FileGroup, InStr(1, FileGroup, "/") + 1, Len(FileGroup))
    FileGroup = Mid(FileGroup, 1, InStr(1, FileGroup, "/") - 1)
Else
    FileGroupIdx = FileGroup
End If

'ファイル名
Filename = FilePath & "\" & TableName & ".sql"
Open Filename For Output As #1

'主キー
'ColPKey = ColPKey & FindCell(0, pry)
ColPKey = SetPrimaryKey()

CreateSQL = ""
DolopSQL = ""
For i = SQLCreateRow To 65535
  '項目IDが設定されている場合
  If Worksheets(SQLSheetName).Cells(i, ItemIDCol) <> "" Then
    If Len(Worksheets(SQLSheetName).Cells(i, ItemIDCol)) > 30 Then
        Worksheets(SQLSheetName).Cells(i, ItemIDCol).Select
        rcd = MsgBox("30文字って決めたんだから守りましょう" + Chr(13) + Chr(13) + Worksheets(SQLSheetName).Cells(i, ItemNameCol) + Chr(13) + Worksheets(SQLSheetName).Cells(i, ItemIDCol) + Chr(13) + Chr(13) + "間違ってる所にカーソルがあるから、直しなさい", vbOKOnly)
        Close #1
        MakeCreateSQL = -1
        Exit Function
    End If

    '項目名
    colname = Worksheets(SQLSheetName).Cells(i, ItemNameCol)
    '項目ID
    ColID = Worksheets(SQLSheetName).Cells(i, ItemIDCol)
    '属性
    ColAtt = Worksheets(SQLSheetName).Cells(i, ItemAttributeCol)
    '有効桁数
    ColLen = Worksheets(SQLSheetName).Cells(i, ItemLengthCol)
    '小数桁数
    ColScaleLen = Worksheets(SQLSheetName).Cells(i, ItemScaleCol)
    'Not Null
    ColNotNull = ""
    If Worksheets(SQLSheetName).Cells(i, ItemNotNullCol) = "Y" Then
      ColNotNull = " NOT NULL"
    End If
    '初期値
    ColIdentity = ""
    ColDefault = Worksheets(SQLSheetName).Cells(i, ItemDefaultCol)
    If ColDefault <> BLANK Or ColDefault = "0" Then
      'If Left(ColDefault, 1) = """" And Right(ColDefault, 1) = """" Then
      If Left(ColDefault, 1) = "'" And Right(ColDefault, 1) = "'" Then
        Select Case VBA.UCase(ColAtt)
          Case "CHAR"
            ColDefault = "'" & String(ColLen, " ") & "'"
          'Case "VARCHAR"
          Case Else
            ColDefault = "''"
        End Select
      Else
        If InStr(1, ColAtt, "CHAR") <> 0 Then
           If (UCase(ColDefault) <> "NULL") Then
              ColDefault = "'" & ColDefault & "'"
           End If
        End If
      End If
      If InStr(1, ColDefault, "IDENTITY") <> 0 Then
          ColIdentity = " " & ColDefault
          ColDefault = ""
      Else
          ColDefault = " DEFAULT " & ColDefault
      End If
    End If

    'カラム作成情報の構築
    CreateRow = ""
    CreateRow2 = ""
   
    Select Case VBA.UCase(ColAtt)
      Case "INT"
        CreateRow = ColID & " " & ColAtt & ColIdentity & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "BIGINT"
        CreateRow = ColID & " " & ColAtt & ColIdentity & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "SMALLINT"
        CreateRow = ColID & " " & ColAtt & ColIdentity & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "TINYINT"
        CreateRow = ColID & " " & ColAtt & ColIdentity & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "DECIMAL"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & "," & ColScaleLen & ")" & ColIdentity & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & "," & ColScaleLen & ")" & ColDefault & ColNotNull
      Case "MONEY"
        CreateRow = ColID & " " & ColAtt & ColNotNull & ColIdentity & ColDefault
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "DATETIME"
        CreateRow = ColID & " " & ColAtt & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "DATE"
        CreateRow = ColID & " " & ColAtt & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "CHAR"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
      Case "VARCHAR"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
      Case "VARCHAR2"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
      Case "NVARCHAR2"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
      Case "NVARCHAR"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
      Case "NUMBER"
        CreateRow = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & "(" & ColLen & ")" & ColDefault & ColNotNull
      Case "TIMESTAMP"
        CreateRow = ColID & " " & ColAtt & ColDefault & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColDefault & ColNotNull
      Case "IMAGE"
        CreateRow = ColID & " " & ColAtt & ColNotNull
        CreateRow2 = ColID & " " & ColAtt & ColNotNull
     End Select
    
     CreateRow = Chr(9) & CreateRow & "," & Chr(13) & Chr(10)
     CreateRow2 = Chr(9) & CreateRow2 & "," & Chr(13) & Chr(10)
  
     CreateCol = CreateCol & CreateRow
     CreateCol2 = CreateCol2 & CreateRow2
  Else
    i = 9999999 'スペースカラムで終了とする
  End If

Next i
 
'テーブル名
TableName = Worksheets(SQLSheetName).Cells(TableNameRow, TableNameCol)

Comment = "COMMENT ON TABLE KAMSSERVICE." & TableName & " IS '" & Worksheets(SQLSheetName).Cells(7, 1) & "'" & Chr(13) & Chr(10)
For i = SQLCreateRow To 65535
  '項目名
  colname = Worksheets(SQLSheetName).Cells(i, ItemNameCol)
  '項目ID
    ColID = Worksheets(SQLSheetName).Cells(i, ItemIDCol)
  '項目IDが設定されている場合
  If Worksheets(SQLSheetName).Cells(i, ItemIDCol) <> "" Then
     Comment = Comment + "/" & Chr(13) & Chr(10) & "COMMENT ON COLUMN KAMSSERVICE." & TableName & "." & ColID & " IS '" & colname & "'" & Chr(13) & Chr(10)
  Else
    i = 9999999 'スペースカラムで終了とする
  End If

Next i

'Print #1, "/* " & Worksheets(SQLSheetName).Cells(TableNameRow - 1, TableNameCol) & " */"
'Drop文作成
'Print #1, "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[" & TableName & "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)"
'DropSQL = "DROP TABLE [dbo].[" & TableName & "]"
'Print #1, Chr(9) & DropSQL
'Print #1, "GO"
'Print #1, ""

'Create文最終構築
CreateSQL = ""
'Print #1, "CREATE TABLE dbo." & TableName & "("
Print #1, "CREATE TABLE " & TableName & "("

'項目情報 & 主キー情報
If ColPKey <> "" Then
  CreateSQL = CreateCol & "PRIMARY KEY(" & ColPKey & ")"
Else
  CreateSQL = CreateCol
End If

Print #1, CreateSQL & ")" & Chr(13) & Chr(10) & "/" & Chr(13) & Chr(10) & Comment & "/"

' 主キー情報
'If ColPKey <> "" Then
'  Print #1, "ON [" & FileGroup & "]"
'End If
'Print #1, "GO"

' 変更履歴対象テーブル
If Worksheets(SQLSheetName).Cells(7, 21) = "○" Then
    'テーブル名
    TableName_hist = Worksheets(SQLSheetName).Cells(TableNameRow, TableNameCol) + "_hist"
   
    'Drop文作成
    Print #1, "if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[" & TableName_hist & "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)"
    DropSQL = "DROP TABLE [dbo].[" & TableName_hist & "]"
    Print #1, Chr(9) & DropSQL
    Print #1, "GO"
    Print #1, ""

    'Create文最終構築
    CreateSQL = ""
    Print #1, "CREATE TABLE dbo." & TableName_hist & "("
    Print #1, Chr(9) + Mid("HistUnique TIMESTAMP NOT NULL," & Space(60), 1, 66) & "/* ユニークキー */"
    Print #1, Chr(9) + Mid("HistStatus CHAR(1) NOT NULL," & Space(60), 1, 66) & "/* 処理内容 */"
   
    CreateSQL = CreateCol2 & "PRIMARY KEY(HistUnique)"

    Print #1, Chr(9) & CreateSQL & ")"
    Print #1, "ON [" & FileGroup & "]"
   
    Print #1, "GO"
End If

'ファイルを閉じる
Close #1

'インデックファイル作成
For i = 1 To 30
    colname = FindCell(i, pry)
    If colname = "" Then
        GoTo MakeCreateSQL_exit
    End If

    indexName = TableName & "_idx" & i
    If i = 1 Then
        Filename = IdxFilePath & "\" & "index_" & TableName & ".sql"
        Open Filename For Output As #1
        Print #1, "--" & Worksheets(SQLSheetName).Cells(TableNameRow - 1, TableNameCol)
        Print #1, "/* $Header: $ */"
    End If
   
    'Drop文作成
    Print #1, "IF EXISTS (SELECT name FROM sysindexes WHERE name = '" & indexName & "')"
    Print #1, Chr(9) & "DROP INDEX " & TableName & "." & indexName
    Print #1, "GO"
    Print #1, ""
    If (pry = 0) Then
        Print #1, "CREATE INDEX " & indexName
    Else
        Print #1, "CREATE UNIQUE NONCLUSTERED INDEX " & indexName
    End If
    Print #1, Chr(9) & "ON " & TableName & " (" & colname & ")"
    Print #1, Chr(9) & "ON [" & FileGroupIdx & "]"
    Print #1, "GO"
    Print #1, ""

    MakeCreateSQL = 1
Next i

MakeCreateSQL_exit:

If i <> 1 Then
    Close #1
End If

End Function

'実行!!
Sub AllSheetsMakeIF()

FilePath = Worksheets(SheetNameHIF).Cells(FilePathRow, 2)

If FilePath = "" Then
    If MsgBox("出力ファイルパスが書かれていません", vbOKOnly + vbCritical, "Create Insert SQL") = vbOK Then
        Worksheets(SheetNameHIF).Cells(FilePathRow, 2).Select
        Exit Sub
    End If
End If
S = 0
If (Dir(FilePath, vbDirectory) = "") Then
   ExecCommand "cmd.exe /c mkdir " + FilePath
End If

SQLSheetName = Worksheets(SheetNameHIF).Cells(SheetNameStartRow + S, 1)
While SQLSheetName <> ""
    '旧フォーマット
    If InStr(Worksheets(SheetNameHIF).Cells(SheetNameStartRow + S, 2), "旧フォーマット") <> 0 Then
        MsgBox "旧フォーマットのレイアウトでは作れません"
        Exit Sub
    End If
    pos = InStrRev(SQLSheetName, "\")
    bookName = Mid(SQLSheetName, pos + 1)
    sheetName = Mid(bookName, 1, InStr(1, bookName, ".xls") - 1)
    Application.Workbooks.Open SQLSheetName, , True
    Workbooks(bookName).Worksheets(sheetName).Activate
    'SQL作成
    rcd = MakeCreateIF(FilePath, sheetName)
'    If Worksheets(SheetNameHIF).Cells(5, 2) = "DownBat" Then
'        rcd = MakeCreateIF(FilePath, sheetName)
'    Else
'        rcd = MakeCreateIFPlus(FilePath, sheetName)
'    End If
    If (rcd < 0) Then GoTo AllSheetsMakeCreateIF_1
    Workbooks(bookName).Close False
    S = S + 1
    SQLSheetName = Worksheets(SheetNameHIF).Cells(SheetNameStartRow + S, 1)
Wend

AllSheetsMakeCreateIF_1:

If (rcd >= 0) Then
    MsgBox "ちゃんと出来ました。"
End If
End Sub
'SQLの作成
Function MakeCreateIF(FilePath, SQLSheetName) As Integer
Dim RowNum(1000) As Integer
MakeCreateIF = -1
ColID = ""
ColAtt = ""
ColLen = ""
ColScaleLen = ""

CreateCol = ""
CreateCol2 = ""
ColNotNull = ""
ColDefault = ""

TableName = ""

'テーブル初期値
IFName = Worksheets(SQLSheetName).Cells(10, 19)
AfterPGM = Worksheets(SQLSheetName).Cells(11, 19)
BackupTBL = Worksheets(SQLSheetName).Cells(12, 19)
CopyTBL = Worksheets(SQLSheetName).Cells(13, 19)
DeleteTBL = Worksheets(SQLSheetName).Cells(14, 19)
ModeUPD = Worksheets(SQLSheetName).Cells(15, 19)
CommitCnt = Trim(Str(Worksheets(SQLSheetName).Cells(16, 19)))
EOFSize = Trim(Str(Worksheets(SQLSheetName).Cells(17, 19)))
TableName = Worksheets(SQLSheetName).Cells(TableNameRow, TableNameCol)
DeleteFlag = Worksheets(SQLSheetName).Cells(9, 19)

'ファイル名
BatFileName = FilePath & "\" & IFName & "bat.xml"
DefFileName = FilePath & "\" & IFName & "def.xml"
DatFileName = FilePath & "\" & IFName & ".dat"
CsvFileName = FilePath & "\" & IFName & ".csv"

'batファイル作成
Open BatFileName For Output As #1
Print #1, "<?xml version=""1.0"" encoding=""Shift-JIS""?>"
Print #1, "<!-- $Header: $ -->"
Print #1, "<BATCHDEF>"
Print #1, Chr(9) + "<ID>" + Worksheets(SQLSheetName).Cells(3, 5) + "</ID>"
If BackupTBL = "○" Then
    Print #1, Chr(9) + "<BACKUPTABLE>" + TableName + "</BACKUPTABLE>"
End If
If CopyTBL = "○" Then
    Print #1, Chr(9) + "<COPYTABLE>" + TableName + "</COPYTABLE>"
End If
If DeleteTBL = "○" Then
    Print #1, Chr(9) + "<DELETETABLE>" + TableName + "</DELETETABLE>"
End If
Print #1, Chr(9) + "<IFS>"
Print #1, Chr(9) + Chr(9) + "<IF>"
Print #1, Chr(9) + Chr(9) + Chr(9) + "<IF_FILE>" + IFName + ".dat</IF_FILE>"
Print #1, Chr(9) + Chr(9) + Chr(9) + "<IF_DEFFILE>" + IFName + "def.xml</IF_DEFFILE>"
Print #1, Chr(9) + Chr(9) + Chr(9) + "<EOFSIZE>" + EOFSize + "</EOFSIZE>"
Print #1, Chr(9) + Chr(9) + "</IF>"
Print #1, Chr(9) + Chr(9) + "<IF>"
Print #1, Chr(9) + Chr(9) + Chr(9) + "<IF_FILE>" + IFName + ".csv</IF_FILE>"
Print #1, Chr(9) + Chr(9) + Chr(9) + "<IF_DEFFILE>" + IFName + "def.xml</IF_DEFFILE>"
Print #1, Chr(9) + Chr(9) + "</IF>"
Print #1, Chr(9) + "</IFS>"
If AfterPGM <> "" Then
    Print #1, Chr(9) + "<PROGRAM>" + AfterPGM + "</PROGRAM>"
End If
Print #1, "</BATCHDEF>"
Close #1

'defファイル作成
Open DefFileName For Output As #1
Print #1, "<?xml version=""1.0"" encoding=""Shift-JIS""?>"
Print #1, "<!-- $Header: $ -->"
Print #1, "<IFDEF>"
Print #1, Chr(9) + "<TABLE>" + TableName + "</TABLE>"
Print #1, Chr(9) + "<COMMITSIZE>" + CommitCnt + "</COMMITSIZE>"
Print #1, Chr(9) + "<MODE>" + ModeUPD + "</MODE>"
Print #1, Chr(9) + "<COLUMNS>"
If DeleteFlag = "○" Then
    Print #1, Chr(9) + Chr(9) + "<COLUMN>"
    Print #1, Chr(9) + Chr(9) + Chr(9) + "<SIZE>1</SIZE>"
    Print #1, Chr(9) + Chr(9) + Chr(9) + "<NAME>DELETEFLAG</NAME>"
    Print #1, Chr(9) + Chr(9) + Chr(9) + "<TYPE>C</TYPE>"
    Print #1, Chr(9) + Chr(9) + "</COLUMN>"
End If
   
RowCnt = 0
For i = 0 To 10000
  '項目IDが設定されている場合
  If Worksheets(SQLSheetName).Cells(i + SQLCreateRow, ItemIDCol) <> "" Then
    RowNum(i + 1) = Worksheets(SQLSheetName).Cells(i + SQLCreateRow, 41)
    RowCnt = RowCnt + 1
  Else
    i = 9999999 'スペースカラムで終了とする
  End If
Next i

nowCnt = 0
endCnt = SQLCreateRow + RowCnt - 1
For i = SQLCreateRow To endCnt

    nowCnt = nowCnt + 1
    nowPos = -1
    For j = 1 To RowCnt
        If RowNum(j) = nowCnt Then
            nowPos = j + SQLCreateRow - 1
            j = 9999999 'スペースカラムで終了とする
        End If
    Next j

    If nowPos < 0 Then
        Print #1, Chr(9) + Chr(9) + "<COLUMN>"
        Print #1, Chr(9) + Chr(9) + Chr(9) + "<NAME>DUMMY</NAME>"
        Print #1, Chr(9) + Chr(9) + "</COLUMN>"
    Else

        '項目ID
        ColID = Worksheets(SQLSheetName).Cells(nowPos, ItemIDCol)
        '属性
        ColAtt2 = Worksheets(SQLSheetName).Cells(nowPos, ItemAttributeCol)
        '有効桁数
        ColLen = Trim(Str(Worksheets(SQLSheetName).Cells(nowPos, 29)))
        '小数桁数
        ColScaleLen = Worksheets(SQLSheetName).Cells(nowPos, ItemScaleCol)
        '初期値
        ColDefault = Worksheets(SQLSheetName).Cells(nowPos, 27)
        '関数名
        ColFunction = Worksheets(SQLSheetName).Cells(nowPos, 31)
        'セット項目
        ColSet = Worksheets(SQLSheetName).Cells(nowPos, 33)
        'MAX項目
        ColMax = Worksheets(SQLSheetName).Cells(nowPos, 35)
        'WHERE項目
        ColWhere = Worksheets(SQLSheetName).Cells(nowPos, 37)
        'GROUP項目
        ColGroup = Worksheets(SQLSheetName).Cells(nowPos, 39)
   
        If ColFunction <> "" Then
            ColAtt = "F"
        Else
            ColAtt = ""
        End If
        Select Case VBA.UCase(ColAtt2)
          Case "INT"
            ColAtt = "N" + ColAtt
          Case "BIGINT"
            ColAtt = "N" + ColAtt
          Case "SMALLINT"
            ColAtt = "N" + ColAtt
          Case "TINYINT"
            ColAtt = "N" + ColAtt
          Case "DECIMAL"
            ColAtt = "N" + ColAtt
          Case "MONEY"
            ColAtt = "N" + ColAtt
            If ColScaleLen = "" Then
                ColScaleLen = "0"
            End If
          Case "DATETIME"
            ColAtt = "D" + ColAtt
          Case "CHAR"
            ColAtt = "C" + ColAtt
          Case "VARCHAR"
            ColAtt = "V" + ColAtt
          Case "TIMESTAMP"
            ColAtt = "C" + ColAtt
          Case "IMAGE"
            ColAtt = "C" + ColAtt
         End Select
   
        Print #1, Chr(9) + Chr(9) + "<COLUMN>"
        If (IsEmpty(ColDummy) Or Trim(ColDummy) = "") Then
            If Not (IsEmpty(ColDefault) Or Trim(ColDefault) = "") Then
                Print #1, Chr(9) + Chr(9) + Chr(9) + "<NAME>" + ColID + "</NAME>"
                Print #1, Chr(9) + Chr(9) + Chr(9) + "<VALUE>" + ColDefault + "</VALUE>"
                If Not (IsEmpty(ColSet) Or Trim(ColSet) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<SET>Y</SET>"
                End If
            Else
                Print #1, Chr(9) + Chr(9) + Chr(9) + "<SIZE>" + ColLen + "</SIZE>"
                Print #1, Chr(9) + Chr(9) + Chr(9) + "<NAME>" + ColID + "</NAME>"
                Print #1, Chr(9) + Chr(9) + Chr(9) + "<TYPE>" + ColAtt + "</TYPE>"
                If Not (IsEmpty(ColScaleLen) Or Trim(ColScaleLen) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<DECIMALSIZE>" + Trim(Str(ColScaleLen)) + "</DECIMALSIZE>"
                End If
                If Not (IsEmpty(ColWhere) Or Trim(ColWhere) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<KEY>Y</KEY>"
                End If
                If Not (IsEmpty(ColFunction) Or Trim(ColFunction) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<FUNCTION>" + ColFunction + "</FUNCTION>"
                End If
                If Not (IsEmpty(ColMax) Or Trim(ColMax) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<MAX>Y</MAX>"
                End If
                If Not (IsEmpty(ColGroup) Or Trim(ColGroup) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<GROUP>Y</GROUP>"
                End If
                If Not (IsEmpty(ColSet) Or Trim(ColSet) = "") Then
                    Print #1, Chr(9) + Chr(9) + Chr(9) + "<SET>Y</SET>"
                End If
            End If
        End If
        Print #1, Chr(9) + Chr(9) + "</COLUMN>"
    End If
Next i
 
'ファイルを閉じる
Print #1, Chr(9) + "</COLUMNS>"
Print #1, "</IFDEF>"
Close #1

'If RecCnt <> nowCnt - 1 Then
'    MsgBox "ちゃんと出来ませんでした、順位がおかしい、通番か確認しなさい。"
'Else
    MakeCreateIF = 0
'End If

End Function

'SQLの作成
Function MakeCreateIFPlus(FilePath, SQLSheetName, DeleteFlag) As Integer

MakeCreateIFPlus = -1

End Function
Function SetPrimaryKey() As String
'テーブル定義Sheetからキー定義部分を探す(仮)
For i = SQLCreateRow To 65535
  If Cells(i, ItemIDCol) <> "" Then
    vala = VBA.UCase(Cells(i, ItemPKeyCol))
    If vala <> "" Then
        SetPrimaryKey = SetPrimaryKey & Cells(i, ItemIDCol) & ","
    End If
  Else
    i = 9999999 'スペースカラムで終了とする
  End If
Next i
    SetPrimaryKey = Left(SetPrimaryKey, Len(SetPrimaryKey) - 1)
End Function
Function FindCell(idx, pry As Integer) As String
'テーブル定義Sheetからキー定義部分を探す
   
    FindCell = ""
    pry = 0
    Select Case idx
      Case Is < 10
        s1 = Right(Str(idx), Len(Str(idx)) - 1)
      Case 10
        s1 = "A"
      Case 11
        s1 = "B"
      Case 12
        s1 = "C"
      Case 13
        s1 = "D"
      Case 14
        s1 = "E"
      Case 15
        s1 = "F"
      Case 16
        s1 = "G"
      Case 17
        s1 = "H"
      Case 18
        s1 = "I"
      Case 19
        s1 = "J"
      Case 20
        s1 = "K"
      Case 21
        s1 = "L"
      Case 22
        s1 = "M"
      Case 23
        s1 = "N"
      Case 24
        s1 = "O"
      Case 25
        s1 = "P"
      Case 26
        s1 = "Q"
      Case 27
        s1 = "R"
      Case 28
        s1 = "S"
      Case 29
        s1 = "T"
      Case 30
        s1 = "U"
    End Select
   
    For i = 0 To 30
        colname = Cells(SQLCreateRow, ItemIDCol)
        s2 = "[" + s1
        s3 = "<" + s1
        s4 = "{" + s1
        j = 0
        While colname <> ""
            vala = VBA.UCase(Cells(SQLCreateRow + j, ItemPKeyCol))
            rcd2 = InStr(1, vala, s2)
            rcd3 = InStr(1, vala, s3)
            rcd4 = InStr(1, vala, s4)
            If Not (rcd2 = 0 And rcd3 = 0 And rcd4 = 0) Then
                If (rcd2 <> 0) Then
                    rcd2 = rcd2 + 2
                    rcd = InStr(rcd2, vala, "]")
                    rcd = Val(Mid(vala, rcd2, rcd - rcd2))
                    rcd1 = 1
                End If
                If (rcd3 <> 0) Then
                    rcd3 = rcd3 + 2
                    rcd = InStr(rcd3, vala, ">")
                    rcd = Val(Mid(vala, rcd3, rcd - rcd3))
                    rcd1 = 2
                End If
                If (rcd4 <> 0) Then
                    rcd4 = rcd4 + 2
                    rcd = InStr(rcd4, vala, "}")
                    rcd = Val(Mid(vala, rcd4, rcd - rcd4))
                    rcd1 = 3
                End If
                If (rcd = i) Then
                    If rcd1 = 2 Then
                        colname = colname & " DESC"
                    End If
                    If rcd1 = 3 Then
                        pry = 1
                    End If
                    If FindCell = "" Then
                        FindCell = colname
                    Else
                        FindCell = FindCell + ", " + colname
                    End If
                    GoTo FindCell_exit1
                End If
            End If
            j = j + 1
            colname = Cells(SQLCreateRow + j, ItemIDCol)
        Wend
        GoTo FindCell_exit2
FindCell_exit1:
    Next i
FindCell_exit2:
End Function

'バッチファイルを実行します
Public Sub ExecCommand(sCommand As String)
    ' 変数宣言部
    Dim oShell As Object, oExec As Object

    ' オブジェクト変数に参照をセットします。
    Set oShell = CreateObject("WScript.Shell")
    oShell.Run sCommand, 0, True

End Sub

'シート検索
Sub SheetNamesLineUpIF()

Dim mstrDirStack() As String
Dim lngDirNum() As Long
Dim lngDirPointer() As Long
Dim strDirName As String
Dim strDirReturn As String

lngDirCnt1 = 0
lngDirCnt2 = 0
lngDirCnt3 = 0
blnDirExistFlag = False
strFolderName = Cells(InPathRow, 2)

Worksheets("ホストIF").Range("A14:B2000").Clear

ReDim Preserve mstrDirStack(lngDirCnt1)
mstrDirStack(lngDirCnt1) = strFolderName
lngDirCnt1 = lngDirCnt1 + 1
ReDim Preserve lngDirNum(lngDirCnt2)
lngDirNum(lngDirCnt2) = lngDirCnt1
lngDirCnt2 = lngDirCnt2 + 1
ReDim Preserve lngDirPointer(lngDirCnt3)
lngDirPointer(lngDirCnt3) = lngDirCnt1
lngDirCnt3 = lngDirCnt3 + 1

i = 0
strDirName = strFolderName & "\"
strDirReturn = Dir(strDirName, vbDirectory)
Do While strDirReturn <> ""
  If strDirReturn <> "." And strDirReturn <> ".." Then
    If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
      blnDirExistFlag = True
      ReDim Preserve mstrDirStack(lngDirCnt1)
      mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
      lngDirCnt1 = lngDirCnt1 + 1
    Else
        If (BookCheck3(strDirName, strDirReturn, SheetNameStartRow + i) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
        End If
    End If
  End If
  strDirReturn = Dir
Loop

If blnDirExistFlag = True Then
  ReDim Preserve lngDirNum(lngDirCnt2)
  lngDirNum(lngDirCnt2) = lngDirCnt1
  lngDirCnt2 = lngDirCnt2 + 1
  ReDim Preserve lngDirPointer(lngDirCnt3)
  lngDirPointer(lngDirCnt3) = lngDirCnt1
  lngDirCnt3 = lngDirCnt3 + 1
Else
  Exit Sub
End If

Do
  blnDirExistFlag = False
  If lngDirCnt3 = 1 Then
    lngDirStart = 0
  Else
    lngDirStart = lngDirPointer(lngDirCnt3 - 2)
  End If

  For lngFor_Cnt = lngDirStart To lngDirPointer(lngDirCnt3 - 1) - 1
    strDirName = mstrDirStack(lngFor_Cnt) & "\"
    strDirReturn = Dir(strDirName, vbDirectory)
    Do While strDirReturn <> ""
      If strDirReturn <> "." And strDirReturn <> ".." Then
        If (GetAttr(strDirName & strDirReturn) And vbDirectory) = vbDirectory Then
          blnDirExistFlag = True
          ReDim Preserve mstrDirStack(lngDirCnt1)
          mstrDirStack(lngDirCnt1) = strDirName & strDirReturn
          lngDirCnt1 = lngDirCnt1 + 1
        Else
          If (BookCheck3(strDirName, strDirReturn, SheetNameStartRow + i) = 0) Then
            Cells(SheetNameStartRow + i, SheetNameStartCol) = strDirName + strDirReturn
            i = i + 1
          End If
        End If
      End If
      strDirReturn = Dir
    Loop

    If lngDirCnt1 <> 0 Then
      ReDim Preserve lngDirNum(lngDirCnt2)
      lngDirNum(lngDirCnt2) = lngDirCnt1
        lngDirCnt2 = lngDirCnt2 + 1
    End If
  Next lngFor_Cnt

  If blnDirExistFlag = True Then
    ReDim Preserve lngDirPointer(lngDirCnt3)
    lngDirPointer(lngDirCnt3) = lngDirCnt1
    lngDirCnt3 = lngDirCnt3 + 1
  End If
Loop While blnDirExistFlag = True

End Sub

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics