• 締切済み

VB2005で、Excel 2010に罫線を描く。

※ VB2005で技術計算をし、[Excel 2010] に資料を作成しています。 ※ [Windows XP]+[Excel 2005] では正常に作動するコードを    [Windows 7]+[Excel 2010] 上のVB2005に移植すると、罫線の    描画部分でエラー表示が出ます。 ※ [Excel 2010] の Open コードは下記です。 ※ ファイルを開くコード    Me.Hide() xlApp = CreateObject("Excel.Application") xlBook = xlApp.workbooks.add xlSheet = xlBook.sheets("sheet1") xlBook.application.Visible = True Me.Show() MsgBox("Excelファイルは開きましたか", 0, "確認") Excel転記ToolStripMenuItem.Enabled = True ※ 何かの認識コードが不足しているのでしょうか。    教えて下さい。  

みんなの回答

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

んで、上記コードのどこでどんなエラーが出んの? 質問文には 「罫線の描画部分でエラーが出る」 とあるが。 途中のコードは省略して、Excel を起動させてからすぐに罫線を描画してみるとどうなるの?

関連するQ&A

  • VB2005で、Excel 2010に罫線を描く。

    VB2005で、Excel 2010に罫線を描く。 ※ VB2005で技術計算をし、[Excel 2010] に資料を作成しています。 ※ [Windows XP]+[Excel 2005] では正常に作動するコードを    [Windows 7]+[Excel 2010] 上のVB2005に移植すると、罫線の    描画部分でエラー表示が出ます。 ※ [Excel 2010] の Open コードは下記です。 ※ ファイルを開くコード    Me.Hide() xlApp = CreateObject("Excel.Application") xlBook = xlApp.workbooks.add xlSheet = xlBook.sheets("sheet1") xlBook.application.Visible = True Me.Show() MsgBox("Excelファイルは開きましたか", 0, "確認") Excel転記ToolStripMenuItem.Enabled = True     教えて下さい。 {質問追記}   ※各セルへのテキスト記入、セル幅・高さ・フォント変更等は出来ます。 ※ 何かの認識コードが不足しているのでしょうか。罫線だけが引けません       With xlApp.Workbooks(1).Worksheets("Sheet1") '--------------------------------------------------------------- .xlRange(.Cells(i1, j1), .Cells(i2, j2)).Borders.LineStyle = xlApp.XlLineStyle.xlContinuous '-------------------------------------------------------------------------- End With    ※エラー内容1(上コードに対し)       「公開メンバ 'xlRange' は型 'Worksheet' に見つかりませんでした。」   ※エラー内容2 Excelのマクロを引用して、コードを書くと、デバックでエラーになります。 Selection.Borders(xlDiagonalDown).LinStyle = xlNone は      名前 "Selection"は宣言されていません。      名前 "xlDiagonalDown"は宣言されていません。      名前 "xlNone"は宣言されていません。

  • VB2008 エクセル出力

    VB2008 エクセル出力 教えていただけると助かります VB6.0使用時にエクセル出力をするために下記のようなプログラムで出力していました ※「Microsoft Excel 9.0 Object Library」を参照 Dim xlApp As EXCEL.Application Dim xlBook As EXCEL.Workbook Dim xlsheet As EXCEL.Worksheet Dim File As String File = App.Path + "\EXCEL\" + "フォーム.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(File) Set xlsheet = xlBook.Worksheets("テスト") xlsheet.Range("A1") = "テスト" 'フォルダ作成 If Dir("D:\", vbDirectory) = "" Then Call Mkdirs("D:\テスト") 'Worksheetを名前をつけて保存します。 xlApp.DisplayAlerts = False xlsheet.SaveAs "D:\テスト\テスト.xls" xlApp.Quit Set xlApp = Nothing Set xlBook = Nothing Set xlsheet = Nothing VB2008の場合だとどのように書けば同じように動きますか ※色々試してみましたがダメでした 「Microsoft Excel 12.0 Object Library」を参照しています

  • VB6.0上でExcelオブジェクトを生成

    VB6.0上でExcelオブジェクトの生成についてです。 その1 Dim xlApp As New Excel.Application Dim xlBook As New Excel.Workbook Dim xlSheet As New Excel.Worksheet Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と その2 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) と、どちらが良いのでしょうか? 開発環境は  Windows2000  VB 6.0  Excel 2003 です。

  • VBからエクセルを起動。そのあとエクセルを終了

    教えてください。 VBからエクセルを起動します。 そのあと、エクセルのシートの上にデータを貼り付けます。そして、エクセルを終了します。 しかし、エクセルが終了しません。 タスクバー上のエクセルをクリックすると終了します。 どうして、このような現象が起こるのかわかりません。 教えてください。 下記に同様のサンプルを書きました 誤記入があるかも知れませんが このような感じのプログラムです。 以上、よろしくお願いします。 public sub test Dim XApp as Excel.Application Dim nfilename as string Dim xlBook As Object Dim xlSheet As Object ' エクセルを起動 Set xlApp = New Excel.Application nfilename ="AAAA.xls" ' 指定されたファイルを開く Call xlApp.Workbooks.Open(nfilename) Set xlBook = xlApp.ActiveWorkbook Set xlSheet = xlBook.Worksheets(1) 'フォームを貼り付ける xlSheet.Range("a1").PasteSpecial      'ファイル名の作成 Filename="BBBB.xls" '保存 ChDir "C:\" xlBook.SaveAs Filename:=Filename,FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Set xlSheet = Nothing xlBook.Close True Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End sub

  • VBからExcelのアクティブセルの位置を知る方法

    VB6でExcel2000のワークシートを操作するプログラムを作成しています。次のようなことをやりたいと思ってます。 (1)Excelのワークシートを開く (2)ワークシートの1点をクリックして、アクティブセルとする。(例えばA1) (3)VBのプログラムのボタンを押すと、アクティブセルを基点に3×3を選択範囲とする。 そこで次のようなプログラムを書いてみました。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = GetObject(, "Excel.Application") If Err.Number Then MsgBox "Excel が起動されていません。" Err.Clear Else ' MsgBox "Excel はすでに起動中です。" Set xlBook = xlApp.Workbooks.Item(1) Set xlSheet = xlBook.Worksheets.Item(1)     'アクティブセルを取得する     'アクティブセルを3x3に拡張する計算 xlSheet.Range("3x3に拡張した範囲").Select Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing End If しかし、アクティブセルを取得する方法がわかりません。誰か教えてください。

  • VB2010でExcelの行をコピーして挿入する

    いつもお世話になります。 VB2010を使用してExcelのある1行をコピーして、コピーしたものを同じシートに挿入したいのですが方法がわかりません。 画像のように、35と36の行をコピーして、37と38に全く同じ物を挿入したいです。 サイトをしらみつぶしに探しましたが、私に理解できるサイトがヒットしませんでしたので、できればサンプルコードを教えていただけると嬉しいです。 下記のようにコードを書きましたが、コピペ状態でほとんど理解していません。 Imports Microsoft.Office.Interop Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Shown Me.Visible = False Dim xlApp As New Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet 'Excelブックを起動 xlBook = xlApp.Workbooks.Open("C:\test1.xls") 'Excelを表示 xlApp.Visible = False 'シートを指定 xlSheet = DirectCast(xlBook.Worksheets(1), Excel.Worksheet) xlSheet.Activate() 'ここから ' ' ' ' 'ここまでがわかりません ' xlBook.Save() '上書き保存 xlBook.SaveAs("c:\test2.xls") '名前をつけて保存 xlBook.Close() xlApp.Quit() '終了処理 xlSheet = Nothing xlBook = Nothing xlApp = Nothing 'テストが完了したらループ処理に変更する Dim p() As Process = Process.GetProcessesByName("Excel") p(0).Kill() End Sub End Class エクセルのバージョンはExcel 2003です。 お手数おかけしますがよろしくお願いします。

  • VBによるExcelファイルの開き方を教えて下さい。

    ※VBプログラムからエクセルを起動し技術資料を作成するものです [1]新規ファイルをオープンした場合は、書き込みは正常に作動します。 [2]既設のファイルは、Shell関数でエクセルファイルをオープンしています。 [3]データ書き込みで、下記のエラーが発生します。 「NullReferenceExceptionはハンドルされませんでした。」 (オブジェクト変数又はWithブロック変数が設定されていません) [4]ファイルのオープンコードは下記のとうりです。 Private Sub newF_Open() Me.Hide() xlApp = CreateObject("Excel.Application") xlBook = xlApp.workbooks.add xlSheet = xlBook.sheets("sheet1") xlBook.application.Visible = True Me.Show() MsgBox("Excelファイルは開きましたか", 0, "確認") End Sub 'rbtNEWボタンでの変更記述 Private Sub oldF_Open() Dim Ret As Object Dim Shell As Object With OpenFileDialog1 .Title = "ファイルの選択" .CheckFileExists = True .RestoreDirectory = True End With Me.Hide() Ret = OpenFileDialog1.ShowDialog() If Ret = Windows.Forms.DialogResult.OK Then End If Shell = CreateObject("Shell.Application") Shell.shellexecute(OpenFileDialog1.FileName, , Application.StartupPath, "open", 1) MsgBox("Excelファイルは開きましたか", 0, "確認") Me.Show() End Sub 'rbtOLDボタンでの変更記述 ※既設ファイルへの認識が、新規オープンファイルと異なる為だと思い ますが、 解決方法を、教えてください。

  • VB2005でExcelのシートをコピー

    VB2005Expressで開発をしています。 Excelのシートをコピーして同じbookに追加をしたいと思っています。 下記でまずExcelを使用できるようにして  Dim xlApp As New Excel.Application  Dim xlBooks As Excel.Workbooks = xlApp.Workbooks  Dim xlBook As Excel.Workbook = xlBooks.Add '新規のファイルを開く  Dim xlSheets As Excel.Sheets = xlBook.Worksheets  Dim xlSheet As Excel.Worksheet = xlSheets.Item(1)  xlApp.Visible = True 下記で追加できると思うのですが、()内にセットするパラメータが わかりません・・・  xlBook.Worksheets.Copy() どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • VBにExcelを読み込む

    VBにExcelデータを取り込んでからSQL ServerにINSERTしたいんですが、 読み込みに時間がかかりすぎるんですが、どういったやり方だとうまくいきますか? データをまとめてVBに取得できればいいんですが。 Accessだとちょっと問題があって出来ない。 Private Sub Excel() Dim i, j As Integer Dim dSet As DataSet = New DataSet Dim dAdp As OleDb.OleDbDataAdapter Dim cn As OleDb.OleDbConnection Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim SQL As String Dim Seru1 As String Dim Seru2 As String Dim Seru3 As String cn = New OleDb.OleDbConnection( _ "provider=Microsoft.Jet.OLEDB.4.0; " & _ "data source='" & lblファイル.Text & "'; " & _ "Extended Properties=Excel 8.0;") '「Sheet1」シートのデータを取得する dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM [Sheet1$]", cn) dAdp.Fill(dSet) For i = 0 To dSet.Tables(0).Rows.Count() - 1 For j = 0 To dSet.Tables(0).Columns.Count() - 1 Debug.Write(dSet.Tables(0).Rows(i)(j) & ControlChars.Tab) Next Debug.WriteLine("") xlApp = CreateObject("Excel.Application") 'xlApp.Visible = True 'アプリケーションの表示 'Set book = app.Workbooks.Add '新規作成 xlBook = xlApp.Workbooks.Open(lblファイル.Text) 'ファイルを開く xlSheet = xlBook.Worksheets(1) 'シート1を選択 'Debug.WriteLine(xlSheet.Cells(1, 1).Value) '値を読み出す Seru1 = i Seru2 = i Seru3 = i If Not i = 0 Then If Not i = 1 Then sqlConn = objclass2.gFunc_OpenSqlConn() sqlCmd = sqlConn.CreateCommand() '初期化 imtxtExcelコード2.Text = "" imtxtExcel1.Text = "" imtxtExcelコード1.Text = "" '読み出し imtxtExcelコード2.Text = xlSheet.Range("A" + Seru1).Value imtxtExcel1.Text = xlSheet.Range("B" + Seru2).Value imtxtExcelコード1.Text = xlSheet.Range("C" + Seru3).Value SQL = "" SQL = SQL & "INSERT INTO W_Excel( " SQL = SQL & "コード1,コード2,備考 ) " SQL = SQL & "SELECT " SQL = SQL & "'" & imtxtExcelコード2.Text & "'," SQL = SQL & "'" & imtxtExcel1.Text & "'," SQL = SQL & "'" & imtxtExcelコード1.Text & "'" sqlCmd.CommandText = SQL sqlCmd.ExecuteNonQuery() End If End If xlSheet = Nothing xlBook.Close() 'Book を閉じる xlBook = Nothing xlApp.Quit() 'Quit メソッドを使って Excel を終了します。 xlApp = Nothing Next End Sub End Class

  • DataGridViewの内容をExcelに書き込みたいのですが

    お世話になります。現在VB2008にて、DataGridViewの内容をExcelに書き込むという仕様を作っているのですが、ExcelのCellにDataGridViewの値を書き込むという作業をループ処理で行いたいのですが、ソースの書き方がわからないんです。 まず私が書いたソースは、 Private Sub Excel() Dim xlapp As Excel.Applcation Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet 'Excelを開く xlApp = CreateObject("Excel.Application") xlApp.Visible = True xlApp.Workbooks.Add() xlBook = xlApp.ActiveSheet xlSheet = xlBook.ActiveSheet 'シートの編集 xlSheet.Cells(1, 1).Value = DataGridView1(0, 0).Value.ToString xlSheet.Cells(2, 1).Value = DataGridView1(0, 1).Value.ToString 'Excelファイル終了処理   xlBook.Close xlApp.Quit() xlSheet = Noting xlBook = Noting xlApp = Noting End Sub こちらになりますが、このソースの「'シートの編集」の部分をループ処理で行いたいのです。 DataGridViewで一行Excelに書き込んだら、ExcelのCellの位置も一行移動するという書き方がわからないんです。 どなたかご教授ください。よろしくお願いします。