はじめまして。超初心者です。
ブック内に、1シート目に「変更履歴」、2シート目に「テーブル名」という2シートがあります。
複数のブック内の、2シート目「テーブル名」が書かれたシートのみをブック事に読み込んでSQLを作成したくて
いろいろと試してみましたが、2シート目の「テーブル名」だけは取得できてもシート内の項目などが取得できませんでした。
現在は、1シート目に「変更履歴」を削除して、「テーブル名」シートだけにして対応していますが、
できればマクロの方で対応したいので、2シート目の情報でSQLを作成する方法を教えてください。
Sub CREATE_TABLEのSQL作成()
Dim dstSheet As Worksheet Set dstSheet = ThisWorkbook.Worksheets(1) Dim Path As String Path = Range("B13").Value & "\" ←読み込むExcelファイルの場所を記載しています。 '入力のExcelファイル(テーブル項目)へのパス Dim buf As String buf = Dir(Path & "*.xls") Dim srcBook As Workbook Dim srcSheet As Worksheet '出力先ファイル(全テーブル分のCreate Table文)へのパス Dim fn As Integer fn = FreeFile Dim Output As String Output = dstSheet.Range("B16").Value ←出力するSQLファイルの場所を記載しています。 'SQL文の出力先ファイル Open Output & "\All_Create_Table.sql" For Output As #fn Dim i As Long Do While buf <> "" i = i + 1 Set srcBook = Workbooks.Open(Path + buf) Set srcSheet = srcBook.Worksheets(1) ← これを”2”にすると2シート目の名前は取得できました。でも、シート内の情報は取れませんでした。 Dim sheets_name As String sheets_name = srcSheet.Name Call sakuseisql_detail(fn, sheets_name) srcBook.Close False buf = Dir() Loop Close #fn
End Sub
Function sakuseisql_detail(ByRef fn, ByRef sheets_name)
On Error GoTo errorend
Dim iPk As Integer
Dim irow As Integer
Dim intkara As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim stlen As Integer
Dim bolcomma As Boolean
Dim strPK As String
Dim strcolumn As String
Dim IDENTITY As Integer
Dim strName As String
Dim strtype As String
Dim strketa As String
Dim strNN As String
'PKの列 iPk = 5 'テーブルのカラム数(項目名称の個数:2列目) irow = Cells(Rows.Count, 2).End(xlUp).Row bolcomma = False strPK = "" Print #fn, "CREATE TABLE [dbo]." & Trim(sheets_name) & " (" ←この行だけはうまく取得できるが、以下の情報が取得できません… For i = 6 To irow strName = Trim(Cells(i, 2).Value) strtype = Trim(Cells(i, 3).Value) strketa = Trim(Cells(i, 4).Value) strPK = Trim(Cells(i, iPk).Value) strNN = Trim(Cells(i, 6).Value) '項目名' Print #fn, strName; '型とサイズ' Print #fn, " " & strtype & "(" & strketa & ")"; 'PKの有無チェック If strPK <> "" Then Print #fn, " PRIMARY KEY"; End If 'NOT NULL制約有無のチェック If (strNN = "×") Then Print #fn, " NOT NULL"; End If If i = irow Then Print #fn, vbCrLf & ")" Else Print #fn, "," End If Next i Print #fn, Print #fn,
errorend:
End Function
どのようにしたら2シート目の情報からSQLを作成できるのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/16 05:24