SQLサーバーにエクセルVBAでファイルを作成する方法

このQ&Aのポイント
  • SQLサーバー7.0とエクセルVBAを使用してファイルを作成する方法を知りたいです。
  • 前任者が作った環境を使いこなすためにVBAとSQLを学びたいです。
  • 具体的には、VBAを使用してP.LogDataというファイルを作成する方法が知りたいです。
回答を見る
  • ベストアンサー

SQLサーバーにエクセルVBAでファイルを作成するには?

SQLサーバー7.0とエクセルVBAにて 前任者が作った上記環境を何とか使いこなさなくてはならない状況になりました。 VBAが多少分かる程度の知識しかなく、SQLは初めて取り組みます。 なんとか、サーバーにアクセル出来るようになり、前任者が作った下記コードを実行すると、 P.LogDataがないというエラーが出ます。 サーバーにP.LogDataなるファイル?を作っていないので当然なのですが、どうせすれば、VBAを使ってP.LogDataなるファイル?を作ることが出来るのでしょうか? Public Function LoginWrite(uid$, pwd$) As Boolean Dim DbCon As New ADODB.Connection Dim ConnectStr As String LoginWrite = True ConnectStr = "uid=AAA;pwd=BBB;" & _ "driver={SQL Server};server=SSS;database=test;dsn=SSS,,connection=adConnectAsync" With DbCon ' Database Connect .ConnectionString = ConnectStr .ConnectionTimeout = 10 .Open End With DbCon.Execute "INSERT INTO P.LogData (UserName,Computer,LoginTime) VALUES ('" & _ uid & "','" & MyComputerNameGet & "','" & CStr(Now) & "')" DbCon.Close Username = uid Password = pwd Exit Function End Function

質問者が選んだベストアンサー

  • ベストアンサー
  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

DbCon.Execute "CREATE TABLE P.LogData (UserName _ varchar (40),Computer varchar(40),LoginTime datetime) " 上記を一度実行すれば作成できるはずです。 がんばって勉強してください。

参考URL:
http://www.microsoft.com/japan/msdn/sqlserver/SmpCodeLib/default.aspx
VitaminBB
質問者

お礼

回答ありがとうございます。 P.LogDataの’P.’を取った場合はエラー無く動いたのですが、’P.’を 付けると所有者名’P’が存在しないというエラーメッセージが出ます。 次々と問題が発生しますが、どうすればエラーを無くすことが出来るのでしょうか?

VitaminBB
質問者

補足

何度もすみません。 お礼の投稿をした後に色々考えて、P.の意味は分かりましたが、 作成されたと思われるP.LogDataがどこにも見当たりません。 実態はどこにあるのでしょうか?

関連するQ&A

  • IPアドレスからサーバ名を取得したい

    ExcelVBAでサーバのデータを帳票化するプログラムを作成しています。 汎用性を持たせる為、サーバ名などの接続情報はiniファイルから読み込んでいます。 その中にはUser Id,Password,Initial Catalog,Data Sourceの4つ情報がありますが DataSourceはIPアドレスで書かれているので、サーバに接続できずに困っています。 取得できるサーバIPアドレスから、サーバ名を求めることは出来るのでしょうか? ちなみに今は以下のやり方で接続しています。    Set DBCon = CreateObject("ADODB.Connection")    DBCon.ConnectionString = "driver=SQL     Server;server=ServerName;uid=UserID;pwd=PWD;database=DBName"    DBCon.Open    ※1)driver=の"SQL"と"Server"の間にはSpace(1)が入っています。    ※2)ServerName,uid,pwd,databaseにはそれぞれ、      サーバ名・ユーザID・パスワード・データベース名を入れています。 なにぶんExcelなので、標準モジュールで解決したいです。 どなたかご存知の方、教えてください!!

  • Excel VBAでXML形式のデータを扱いたい

    SQL ServerにXML形式のデータが"1つのカラムにロングテキスト(ntext)形式で格納"されています。 このデータをExcelのVBAで取得したのは良いのですが、XML文書からタグを指定して任意の値を取得する方法がわかりません。 とりあえず以下のように普通の取得をするまでは書いてみました。 --- Sub GetXMLDataFromSQLServ() Dim CNN As ADODB.Connection Dim RST As ADODB.Recordset Dim RecCt As Long Dim strCNN As String Dim strData1 As String Dim strData2 As String Dim xmlTest As MSXML2.DOMDocument 'Connection String strCNN = "driver={SQL Server}; server=appdemo; uid=userid; pwd=password; database=database" Set CNN = New Connection CNN.ConnectionTimeout = 30 CNN.Open strCNN 'レコードセットを開く Set RST = New ADODB.Recordset RST.CursorType = adOpenStatic RST.Open "SELECT * FROM G_JOB_CONTENT;", strCNN RST.MoveFirst 'シートに出力 Do Until RST.EOF ActiveCell.Value = RST.Fields("JOB_ID") ActiveCell.Offset(0, 1).Value = RST.Fields("XML") '---(1) RST.MoveNext ' ActiveCell.Offset(1, 0).Activate Loop 'レコードセットを閉じる Set RST = Nothing '接続を閉じる Set CNN = Nothing End Sub --- (1)の部分でXMLのタグを指定し、任意のデータを得たいと考えています。 参照設定などを見て、おそらくMSXML2オブジェクトを使うのかな、というところまでは想像ついたのですけど・・・。 どなたかご教示の程をお願いいたします。

    • ベストアンサー
    • XML
  • エクセルVBAでcommit,rollback

    エクセルVBAでcommit,rollback 初めて質問させていただきます。 エクセルVBAを一人で学習しています。 仕事で使ったことも、教えてもらったこともほとんどありませんのでほぼ初心者です。 今、エクセルファイルを二つ使って、一つをデータベースに、もう一つでそのデータベースを 利用するようなプログラムを書いています。 それで、2つの関連するテーブル(シート)を同時に変更(update)する必要があるのですが、 何らかのエラーが起きてしまったときのことを考えて、トランザクションを利用 出来たらと思っています。 いろいろググってアクセス用のコードを見つけたので、それを元に下のようなプログラムを 書いて試してみたのですが、ロールバックが効かずに更新されてしまいます。 '******** 定数 *********** Const cnsProvider = "Microsoft.Jet.OLEDB.4.0" Const cnsExtProp = "Extended Properties" Const cnsExcel = "Excel 8.0" Const cnsDBName = "SAMPLE_DB.xls" Const cnsYen = "\" '******** プログラム *********** Sub ADO_update_test() Dim dbCon As ADODB.Connection Dim strSQL As String ' -- Connection生成 -- Set dbCon = New ADODB.Connection With dbCon .Provider = cnsProvider .Properties(cnsExtProp) = cnsExcel .Open ThisWorkbook.Path & cnsYen & cnsDBName End With ' -- トランザクション開始 -- dbCon.BeginTrans ' -- sql作成 -- strSQL = "update [Sheet1$] set 金額 = 300 where ID = '001';" ' -- sqlを流す -- dbCon.Execute (strSQL) ' -- rollback -- dbCon.RollbackTrans ' -- クローズ・コネクション解放 -- dbCon.Close: Set dbCon = Nothing End Sub 1、まずこの様なことが可能なのかどうか 2、出来るとしたらどのようにすればいいのか(間違っている点を指摘してください) 以上の2点についてお答えをいただけるとありがたいです。 よろしくお願いいたします。

  • ASP.NETでSQL-SERVERへの接続方法

    最近、ASP.NETの勉強をはじめました。テキストを見ながらサンプルプログラムを作成しているのですが、SQL-SERVERへのDB接続方法がうまくいきません。 Dim conn As String = "data source=????;user id=sa;password=;initial catalog=SampleDb" Try   Dim objConn As New SqlClient.SqlConnection   objConn.ConnectionString() = conn   Dim comm As New SqlClient.SqlCommand(sql, objConn)   objConn.Open() ソース一番上の????の部分に何と記述すればいいかわかりません。テキストには localhost と記述されています。コンパネの「ODBCデータソース」のDSNやサーバ名を記述しても無理でした。 ASP開発で使用していたDB接続 Conn = "PROVIDER=SQLOLEDB;SERVER=サーバ名;DATABASE=YUSODB;UID=sa;PWD=;" を試したりしたのですが、無理でした。 どなたかご教授お願いします。

  • エクセルVBAでエラー!

    エクセルでVBAを組んでいます。 Aシート・Bシートにデータがあり、それをSQLで集計し、 Cシートに出力をしたいのですが、 『リンクされているExcelのワークシートを表示するための接続が切断されました。』 というエラーが出て、解決しません。 (調べてみましたが、似たような例がなく解決には至りませんでした・・・。) どなたかご教示お願い致します。 Private Sub CommandButton1_Click() Dim dbCon As Object Dim dbCols As Object Dim dbRes As Object Dim strSQL As String Dim sh1 As Worksheet Set sh1 = Worksheets("Cシート") Set dbCon = CreateObject("ADODB.Connection") dbCon.Provider = "Microsoft.Jet.OLEDB.4.0" dbCon.Properties("Extended Properties") = "Excel 8.0" dbCon.Open ThisWorkbook.FullName strSQL = "" strSQL = strSQL & "SELECT *" strSQL = strSQL & vbCrLf & "FROM [Aシート$] LEFT JOIN [Bシート$] ON [Aシート$].NO= [Bシート$].NO" Set dbRes = CreateObject("ADODB.Recordset") dbRes.Open strSQL, dbCon, adOpenKeyset, adLockReadOnly sh1.Range("A1").CopyFromRecordset dbRes dbRes.Close Set dbRes = Nothing dbCon.Close Set dbCon = Nothing End Sub

  • Visual Studio 2005 Sql Server 2005 C#

    先輩方 こんばんは カネゴンです。 下記内容で困っています。 SqlConnection がオープンできません。 「SQL Server の既定の設定がリモート接続を許可しないようになっていることがエラーの原因 sql server」のエラーと 「**」はログインできませんでしたの表示がされ、かれこれ3日悩んでおります。 宜しくお願いします。 SqlConnection cn = new SqlConnection(@" Server = local ; Trusted_Connection = Yes ; Database = user_master ; uid = *** ; pwd = *** ; "); SqlCommand cmd = new SqlCommand("login_check", cn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter p1 = new SqlParameter("@p1",             System.Data.SqlDbType.VarChar, 16); p1.Value = TextBox1.Text; SqlParameter p2 = new SqlParameter("@p2",             System.Data.SqlDbType.VarChar, 16); p2.Value = TextBox2.Text; cn.Open();

  • VB2008 SQL Server のDB名一覧

    VB2008 で開発をしています。 SQL ServerからDB名の一覧を取得する処理で、うまく行かず悩んでいます。 ロジックは以下の通りです。 Dim cnString As String Dim Scn As ADODB.Connection Dim Srs As ADODB.Recordset Scn = CreateObject("ADODB.Connection") cnString = "Driver={SQL Server};" cnString = cnString & "Server=" & strServerNM & ";" cnString = cnString & "UID=" & strServerUID & "; Pwd=" & strServerPassWD & ";" Scn.Open(cnString) Srs = Scn.Execute("SELECT NAME FROM sysdatabases ORDER BY NAME ;") If Srs.RecordCount = 0 Then   MsgBox("データベースが存在しません。") Else   Do Until Srs.EOF = True     MsgBox(Srs.Fields("Name").ToString)     Srs.MoveNext()   Loop End If   実行すると、DB名ではなく、"System._ComObject"という文字が複数回(おそらくDBの数)表示されます。   どなたかおわかりになる方、おられましたらよろしくお願い致します。

  • FTPサーバー上のデータにADO接続したい

    WINDOWS2008サーバー/クライアント Win7 FTPサーバー上にあるEXCELファイルから、同じFTPサーバー上のACCESSファイルへ ADO接続したいのですが、(そのエクセルをクライアントPC Win7から実行します) Dim adoCON As New ADODB.Connection adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=IPアドレス" & ";DATABASE=accdb名" & & "; UId=FTPユーザー名 ; PWD=パスワード; " ではエラーになってしまいます。 どなたか教えていただけませんでしょうか? どうぞよろしくお願いいたします。

  • エクセルVBAでSQLサーバーの値を編集したい

    エクセルVBAでSQLサーバーの値を編集したい 「エクセルVBAとSQLサーバーを接続し、SQLサーバー上の、指定したテーブルのセル(?)番地の内容を、エクセルのセルに入力されたものに変更し、上書きする」プログラムを作成しています。 エクセルVBA→SQLサーバーへの接続は初めてです。 以下の文で、SQLサーバーに接続する所までは進みました。 ここから先、「SQLサーバー上の、指定したテーブルのセル(?)番地の内容を、エクセルのセルに入力されたものに変更し、上書きする」の部分は、SQL文の形式でコーディングしなければいけないのでしょうか? 当方、SQL文を記述した事が無いため、例えば 'アクセスのテーブル名.range("A2").value = Sheets("test").range("A2").value のようにコーディングできると楽なのですが... 目的のプログラムを作成するのに手がかりになりそうな方法や、ヒントとなるwebサイトがありましたらお教え下さい。 Dim con As New ADODB.Connection Dim connectionString As String Dim sDBSever As String Dim sDBName As String Dim sLoginID As String Dim sPassWD As String sDBSever = "(local)\SQLEXPRESS" sDBName = "DBName" sLoginID = "id" sPassWD = "pass" '接続文字列 connectionString = "Provider=Sqloledb;Data Source=" & sDBSever _ & ";Initial Catalog=" & sDBName _ & ";Connect Timeout=15" _ & ";user id=" & sLoginID _ & ";password=" & sPassWD _ & "" On Error GoTo Err_DBConnectOpen '接続 con.Open connectionString

  • DAOでODBC経由のRDBに接続し、SQLでアクセスしたい。

    Dim ws As DAO.Workspace, db As DAO.Database Dim rs As DAO.Recordset ' デフォルトのワークスペースを定義する Set ws = DBEngine.Workspaces(0) ' ODBC接続文字列を指定してデータベースを開く Set db = ws.OpenDatabase("", False, False, _ "DSN=SQL_K;ODBC;Driver={SQK_K};" & _ "SERVER=(local);DATABASE=pubs;" & _ "UID=*****;PWD=*****;" ' SQLステートメントを指定してレコードセットを作成する Set rs = db.OpenRecordset("select * from TWSQLK1",dbOpenDynaset, dbSeeChanges)   このレコードセットは正常に行きますが   直接SQLを記述する方法が、わかりません