VisualBasic2013でExcel出力の方法を教えてください

このQ&Aのポイント
  • VisualBasic2013を使用してExcelファイルを出力する方法を教えてください。
  • Excelファイルを新規作成し、OleDbを利用してデータを出力したいのですが、ファイルが存在しないという例外が発生してしまいます。どのように対処すれば良いでしょうか?
  • OleDbを使用して新規Excelファイルを生成する方法をお教えください。
回答を見る
  • ベストアンサー

visualbasic2013 Excel出力

以下の開発環境でOleDbを利用してExcelファイルの出力を 行いたいと考えております。 ・visualbasic2013(Pro) ・クライアントにはExcelインストール済 以下のコードを実装しています。 Dim cn As System.Data.OleDb.OleDbConnection '/ ADO.NET接続用 cn = New System.Data.OleDb.OleDbConnection() cn.ConnectionString = "provider=Microsoft.jet.OLEDB.4.0;Data source=" & _ "E:\test.xls" & ";Extended properties=""Excel 8.0;HDR=YES;IMEX=1""" '/ Excelファイル新規作成 cn.Open() 上記を実行すると cn.Open()で例外が発生してしまいます。 ※ファイルが存在しない 新規にファイル作成したいのでファイルが存在しない状態で 実行しているのですが、そもそもの考え方が誤っているのでは ないかと危惧しております。 実現したい事はOleDbを利用して新規Excelファイルを生成する事です。 大変恐れ入りますが分る方がいらっしゃいましたら ご教授頂けないでしょうか。 以上です。

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

  • ベストアンサー
  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.1

こちらを参考にしてみてください。 http://qiita.com/midori44/items/acab9106e6dad9653e73

その他の回答 (2)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

いっそのこと、右クリックで空のExcelブックを作成して名前を変えて準備したら早いかも知れないよ。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

visualbasic2013(Pro) ならば可能なのかも知れません(私は持ってないので)が、Excelファイルを作成できるのはExcelアプリケーションだと思いますよ。 例えばAccessやWordを使ったとしても、Excelの参照設定をしてExcelアプリを立ち上げないとExcelファイルはつくれないかと。 なのでExcelの参照設定を調べ、それを組み込み新規ブックを作成することになるのでは? ちなみに「ACCESSのMDBを作成する 」なら http://anetm.com/dev/tools/vbdotnet/112258.htm あったようですけど。

関連するQ&A

  • ADO エクセル→エクセル PW付きファイル接続

    以前も http://okwave.jp/qa/q8283354.html で同じような質問をしたのですが ADOでエクセルからエクセルに接続する方法を教えてください。 接続先のエクセルファイルにはPWがかかっています。 Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .Properties("Extended Properties") = "Excel 12.0" .Properties("Data Source") = ActiveWorkbook.Path & "\test.xlsx" .Properties("Password") = "0000" .Open End With 上記では、.Open部分で -------------------------------------------------------- 実行時エラー-2147217843 アプリケーションを起動できません。 システムデータベースが存在しないか、またはほかのユーザーが排他的にシステムデータベースを開いています。 -------------------------------------------------------- となります。 .Properties("Password") をコメントアウトすると、 -------------------------------------------------------- 実行時エラー -2147467259 外部テーブルのフォーマットが正しくありません。 -------------------------------------------------------- となり、そのまま再度F5を押すと -------------------------------------------------------- 実行時エラー -2147217843 認証に失敗しました。 -------------------------------------------------------- となります。 ちなみに参照設定は Microsoft ActiveX Data Objects 2.7 Library にチェックを入れています。 .Properties("Data Source") = ActiveWorkbook.Path & "\あああ.xlsx" のように、存在しないファイル名にした時は、 .Openを無事通過しますが、データの操作取得はできません。 どなたかわかる方ご教授おねがいします。

  • VC#において,Data Sourceの書き方について.

    こんにちは,本日は下記のような質問です. どうぞ宜しくお願い致します. OleDbConnection cn = new OleDbConnection(); cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" + "Data Source=IPアドレス\\custom.mdb"; cn.Open(); といった具合にソース(http://IPアドレス/custom.mdb)をネットに上げてアクセスするという事を行いたいのですが,上記のような書き方だとアクセスが出来ないようです. こういった場合どのようにコードを書いたらよいのでしょうか? 宜しくお願い致します

  • ADO ファイルを閉じるには?

    アクセスからエクセルへ Sub Sample() Dim cn As Object Dim rs As Object Set cn = CreateObject("ADODB.Connection") With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .Properties("Extended Properties") = "Excel 12.0" .Properties("Data Source") = "D:\Book1.xlsx" .Open End With Set rs = CreateObject("ADODB.Recordset") rs.Open "SELECT * FROM [sheet1$]", cn, 3 Debug.Print rs.RecordCount rs.Close: cn.Close Set rs = Nothing : Set cn = Nothing End Sub このコードでシートの行数を取得してるのですが このコードを実行後もファイルが開いたままなのですが 閉じるにはどうすればいいのでしょうか? .Openでファイルが開くので cn.Close でファイルが閉じるのかと思ったら閉じません。 cn.Quitを追記してみましたが 実行時エラー -2147467259 選択クエリを実行できません。 となりました。 どうすればファイルを閉じることが出来るのでしょうか?

  • 一週間前から,今までVBAで行っていたものを,理由がありVisual

    一週間前から,今までVBAで行っていたものを,理由がありVisual Studio 2008を用いて作成しなおしています. しかし,VB .net自体,完全な初心者で,「独習VisualBasic2008」で勉強しているレベルです. 質問内容はというと,ADOでエクセルファイルのデータを読み込み,DataTableを作成し,DataGridViewで表示するということを行いたいのです. このような感じで... cn = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source =" & ExcelFileName & "; Extended Properties = ""Excel 12.0; HDR=NO""") dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", cn) dAdp.Fill(dSet, "Table1") dgv1.DataSource = dSet.Tables("Table1") ここで,Extended PropertiesのHDRがNOになっていることに注目していただきたいのですが,あとでトランスポーズを行いたいため,このようにしています. そして読み込むデータはこんな感じです. 文字 文字 文字 文字 文字 0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 ... ほんとうはもっと大きいのですが,とりあえず,これをこのまま読み込んでしまうとデータ型が自動的に予測されてしまい(デフォルトでは8行目までスキャンされると書いてありました)データ型が自動的にInt32になってしまいます. このため,DataTableでは一行目が文字ではなくなってしまい 0 0 0 0 0 と表示されてしまいます. これをそのまま文字として表示させるにはどのようにすればいいのでしょうか? 一行目だけString 二行目からはDouble のようにしたいのですが.. そしてトランスポーズ後は, 一列目がString 二列目以降はDouble というようにしたいんです. よろしくお願い致します.

  • VBのデータグリッドの表示が消えてしまいました。何故でしょうか?

      cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\生徒管理\生徒.mdb;" cn.Open mySQL= "SELECT * FROM 2学年 " _ & "WHERE (((所属)='" & frmPW.cmb生徒.Text & "'))" Set rs= New ADODB.Recordset rs.Open mySQL, cn, adOpenStatic Set DataGrid1.DataSource = rs と記述していて、それまでデータグリッドにデータが上手く表示されていたのに、 接続先のmdbファイルにパスワードを設定して、ConnectionStringの設定部分を   cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\生徒管理\生徒.mdb;" & _ "Jet OLEDB:Database Password=seito2;" に変更したところ、データグリッドにデータが表示されなくなりました。 データベースへの接続は上手くいっているようなのですが、何故データグリッドに データが表示されなくなったのでしょうか。 よろしくお願いします。

  • パスワードがかかってる場合どのようにVBAで指定す

    Set cnEx = CreateObject("ADODB.Connection") With cnEx .Provider = "Microsoft.ACE.OLEDB.12.0" .Properties("Extended Properties") = "Excel 12.0" .Properties("Data Source") = "C:\Users\\test.xlsm" .Open End With VBAでこのコードでエクセルファイルを開く時に パスワードがかかってる場合どのようにVBAで指定すればいいでしょうか?

  • Excel ado処理について

    現在、Excel(インターフェース用)⇔(社内LAN経由)⇔Excel(マスターファイル×4)間で ADOを使用して、データ処理を行おうとしております。 (なお、今までは、画面更新OFFにしてファイルを素直にOPENして 各ファイルデータを格納して処理を行っていたのですが、 業務人員&量の拡大に伴い、Excelの競合が激しくなり、ADOによる処理へと 対応変更を考えております) マスターファイル×4はAccessのように、主キーが振ってあり、連結しております。 インターフェース用のExcelから各マスターファイルをADOで読み込み、 インターフェース用のExcelへとデータを転記する処理を作成中ですが、 なぜか、マスターファイル(A・B・C・D)のうち、Cのファイルのみ、データを10件ほど認識しておらず、 A=B=D≠Cとなってしまいます。 マスターファイルを直接開いて確認しますが、データ数は間違いなく一致しておりますが、 VBA上では認識しておりません。 自分なりに解析したところ、Cのファイルだけ、 "RS.MoveNext"の部分でデータが10件ほど飛んでいると思っております。 以下がそのソースですが、 どこが問題なのか?または、考えうる原因が他にあれば、ご教授いただきたいです。 本当に困っています。宜しくお願い致します。 --------------------------------------------------------------------- Sub StorageData() 'Frag初期値 SW_OK = True On Error GoTo ErrADO '取引先詳細 'ADO定型分 Set CN = New ADODB.Connection CN.Provider = "Microsoft.Jet.OLEDB.4.0" CN.Properties("Extended Properties") = "Excel 8.0" CN.Open Path00 & "反響データ\" & FileName01 Set RS = New ADODB.Recordset RS.Open SQL, CN, adOpenStatic, adLockReadOnly ReDim Data00(RS.RecordCount, 20) Ctr = 1 Do For i = 0 To 20 If Not RS.BOF Then Data00(Ctr, i) = RS.Fields(i) End If Next i i = 0 RS.MoveNext Ctr = Ctr + 1 Loop Until RS.EOF Ctr = Ctr - 1 ' ReDim Preserve Data00(Ctr, 20) Ctr = 0 Set RS = Nothing CN.Close 'お客さま詳細 'ADO定型分 Set CN = New ADODB.Connection CN.Provider = "Microsoft.Jet.OLEDB.4.0" CN.Properties("Extended Properties") = "Excel 8.0" CN.Open Path00 & "反響データ\" & FileNam

  • VB でExcelファイルの行を削除したのですが?

    VB歴はまだ浅く素人レベルではございますがよろしくお願いします。ご質問内容も不鮮明な点もあるかもしれませんがご指導お願い致します。 SQL Server & VB2008EEを使用しております。 身近なExcelファイルをデータベースもどきで使用できないかと思いまして、今挑戦しています。 現在、読み込み、ソート、UPDATEなどのクエリも順調に動作しました。 しかし、DELETEで 「ISAMではリンクテーブル内のデータを削除することは出来ません」 というエラーが出てしまい困っております。 UPDATE [会社$] SET 氏名='' などで空白には出来るのですが行が残ります。行削除が出来ると理想なのですが.. よろしくお願いいたします。 【参考ソースコード】************************************* Dim row As Integer Dim name As String 'データグリッドビューの行番号を取得する row = DataGridView1.CurrentRow.Index '行番号から社員名を取得する name = DataGridView1.Item(0, row).Value.ToString() 'コネクションを指定する cn = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0; " & _ "Data Source=C:\DATA\TEST.xls; " & _ "Extended Properties=Excel 8.0") 'Excelブックの接続 cn.Open() com = New OleDb.OleDbCommand("DELETE FROM [会社$] WHERE 氏名='" & name & "'", cn) com.ExecuteNonQuery() 'コネクションを閉じる cn.Close() '正常終了のメッセージ MsgBox("1件の社員データを削除しました") 'データグリッドビューの再表示 DataLode() *****************************************************

  • VB.netでJet.OLEDBを使いCSVを読み

    VB.netでOleDbConnectionを使ってCSVを読み込むと便利ですが、属性判定を勝手にされたくありません。 どうすればコントロールできますか? 個別に属性を決めるか、もしくは全部文字列として受け取りたいです。 何もしなければ、項目の属性が自動で決まりますが、その属性判断が甘く、属性に合わない値が消えます。 例えば、 日付項目っぽい値が入っている項目にたまに文字列がるとすると、 その項目が日付項目になって、日付項目に合わないデータは空白になってしまいます。 CSVの読み込みは一旦すべて文字列にして受け取り、その後の事はアプリでコントロールしたいです。 どうすればできますか? Dim OleDbConnection1 As New OleDb.OleDbConnection Dim OleDbCommand1 As New OleDb.OleDbCommand Dim OleDbDataAdapter1 As New OleDb.OleDbDataAdapter Dim FileInfo1 As New FileInfo(CSVファイルの名前をフルパスで) OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & FileInfo1.DirectoryName & "\;" _ & "Extended Properties=" & ControlChars.Quote & "Text;HDR=No;FMT=Delimited" & ControlChars.Quote OleDbConnection1.Open() OleDbCommand1.CommandText = "SELECT * FROM [" & FileInfo1.Name & "]" OleDbCommand1.Connection = OleDbConnection1 OleDbDataAdapter1.SelectCommand = OleDbCommand1 OleDbDataAdapter1.Fill(DataTable1) OleDbDataAdapter1.Dispose() OleDbCommand1.Dispose() OleDbConnection1.Dispose()

  • VB.NET Orcale接続文字列の記述方法

    お世話になります。 VB.NETの初心者です。 VB.NET2003とOrcle10gにて開発を行っております。 VBよりADOでOrcleへ接続する際、接続文字列に記述方法に悩んでいます。 Data Sourceに「ODBC設定したデータソース名」を記述することで接続はできるのですが・・。 本番時にODBC設定をユーザが嫌がる為、直接、サーバアドレスを指定し接続にいかせたいと考えています。(ODBCを使わない) この際の接続文字列の記述方法を御指導下さい。 宜しくお願い致します。 以下、ソース Imports System.Data.OleDb Dim Cn As OleDb.OleDbConnection Cn = New OleDb.OleDbConnection("Provider=MSDAORA.1;Data Source=TEST;User Id=TESTID;Password=TESTPASS; ") Cn.Open()

専門家に質問してみよう