tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルEXCELの全セルで書式設定を文字列にしたい
記事No6865
投稿日: 2008/01/20(Sun) 00:22
投稿者ぬこ
環境は、VB2005+EXCEL2003+WinXPです。
VB2005から新規EXCELブックを作り、Sheet1全てのセルを「セルの書式設定」→「表示形式」で【文字列】にしたいのですが、どのようにしたらいいのでしょうか?
お助け下さい。

尚、エクセルは下記のコードで新規作成してます。
Private Sub Button5_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim xlApp As Excel.Application
Dim xlBooks As Excel.Workbooks
Dim xlBook As Excel._Workbook
Dim xlSheets As Excel.Sheets
Dim xlSheet As Excel._Worksheet

xlApp = New Excel.Application()
xlBooks = xlApp.Workbooks
xlBook = xlBooks.Add
xlSheets = xlBook.Worksheets
xlSheet = xlSheets.Item(1)

xlApp.Visible = True

MRComObject(xlSheet)
MRComObject(xlSheets)
MRComObject(xlBook)
MRComObject(xlBooks)
MRComObject(xlApp)
End Sub

[ツリー表示へ]
タイトルRe: EXCELの全セルで書式設定を文字列にしたい
記事No6866
投稿日: 2008/01/20(Sun) 06:39
投稿者かさのば
とりあえず、全てのセルを「セルの書式設定」→「表示形式」で【文字列】の動作を
Excelで実際にやってみてマクロを記録してみませう。

[ツリー表示へ]
タイトルRe: EXCELの全セルで書式設定を文字列にしたい
記事No6868
投稿日: 2008/01/20(Sun) 09:06
投稿者花ちゃん
> 環境は、VB2005+EXCEL2003+WinXPです。
> 尚、エクセルは下記のコードで新規作成してます。
> Dim xlApp As Excel.Application

Excel 2003 なら上記では、エラーがでませんか?
(検索キーワード [PIA] )

マクロの結果は下記になりますが、そのまま使うとプロセスが残るので
   Dim xlCells As Excel.Range
   xlCells = xlSheet.Cells

      ↓

   xlCells.Select()
   xlCells.NumberFormatLocal = "@"
   MRComObject(xlCells)

 のようにする必要があります。

[ツリー表示へ]
タイトルRe^2: EXCELの全セルで書式設定を文字列にしたい
記事No6869
投稿日: 2008/01/20(Sun) 12:44
投稿者ぬこ
解決しました。
どうも有難うございました。


> > 環境は、VB2005+EXCEL2003+WinXPです。
> > 尚、エクセルは下記のコードで新規作成してます。
> > Dim xlApp As Excel.Application
>
> Excel 2003 なら上記では、エラーがでませんか?
> (検索キーワード [PIA] )

すみません。環境がVB2005+EXCEL2003+Win2000SP4でした。
下記のコードで、実行してもエラーが出ていないので、大丈夫だと思うのですが・・・。
また、VB2005+EXCEL2007+WinXPの環境でも問題なく動作することが出来ました。


Public Class Form1
'COM参照設定 [Microsoft Excel 11.0 Object Library] チェック済み
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xlApp As Excel.Application
        Dim xlBooks As Excel.Workbooks
        Dim xlBook As Excel._Workbook
        Dim xlSheets As Excel.Sheets
        Dim xlSheet As Excel._Worksheet
        Dim xlCells As Excel.Range

        xlApp = New Excel.Application()
        xlBooks = xlApp.Workbooks
        xlBook = xlBooks.Add
        xlSheets = xlBook.Worksheets
        xlSheet = DirectCast(xlSheets.Item(1), Excel._Worksheet)
        xlCells = xlSheet.Cells
        xlCells.Select()
        xlCells.NumberFormatLocal = "@"
        xlCells = xlSheet.Range("A1")
        xlCells.Select()

        xlApp.Visible = True

        MRComObject(xlCells)
        MRComObject(xlSheet)
        MRComObject(xlSheets)
        MRComObject(xlBook)
        MRComObject(xlBooks)
        MRComObject(xlApp)
    End Sub

    Private Sub MRComObject(ByRef objCom As Object)
        Try
            If Not objCom Is Nothing AndAlso System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then
                Dim I As Integer
                Do
                    I = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom)
                Loop Until I <= 0
            End If
        Catch
        Finally
            objCom = Nothing
        End Try
    End Sub

End Class

[ツリー表示へ]