Search
Calendar
 123456
78910111213
14151617181920
21222324252627
28293031   
<< January 2018 >>




New Entries
Recent Comment
Category
Archives
Profile
Links
mobile
qrcode
RSSATOM 無料ブログ作成サービス JUGEM
Excelシートに文字として数字や日付を書き込む方法
VB.NETでExcelシートのセルに値をセットする場合、以下のように書きます。
(定義ややり方はあくまで一例です)

Dim xlsApp As New Excel.Application
Dim xlsBooks As Excel.WorkBooks = xlsApp.WorkBooks
Dim xlsBook As Excel.WorkBook = Nothing
Dim xlsSheet As Excel.WorkSheet = Nothing

xlsBook = xlsBooks.Add() 'ブックの追加
xlsSheet = xlsBook.WorkSheets.Add() 'シートの追加
'セット方法その1
xlsSheet.Cells(2,2).Value = "0123"
'セット方法その2
xlsSheet.Cells(2,3).NumberFormatLocal = "@"
xlsSheet.Cells(2,3).Value = "0123"

セット方法その1では123と表示され、セット方法その2では0123と表示されます。
(2行2列目は123、3列目は0123と表示される)

セット方法その2はセルの表示形式NumberFormatLocalに@(文字列)を指定して書き込んでいます。数字や日付を文字として設定したい場合はこの方法を使います。
posted by: ゆう | VB.NET | 23:53 | comments(0) | - | - | - |
VB.NETでのテキストファイルの出力
VB.NETでプログラムのログファイルを出力する等、テキストファイルを出力することは良くあることです。以下はそのサンプルです。
(基本的にはC#.NETも同じ)

Dim textFile As System.IO.StreamWriter

textFile = New System.IO.StreamWriter("c:¥temp¥log.txt", True, System.Text.Encoding.Default)
textFile.WriteLine("text1")
textFile.WriteLine("text2")
textFile.Close()

上記のサンプルは、c:¥temp¥log.txtというファイル名で、追加モードをTrueにし(ファイルが存在していれば、そのファイルの後にテキストを追加する)、システムコード(WindowsではShift-JIS)でエンコーディングし、"text1","text2"をそれぞれ改行コードを付加して出力しています。
posted by: ゆう | VB.NET | 00:30 | comments(2) | - | - | - |
VB.NETでExcelの行削除を行い最終セルを取得するには
今日ははまってしまいました。VB.NETでExcelシートを読み込み、ある範囲の行を削除後、最終セルを取得しようとして苦労してしまいました。

まず、VB.NETでエクセルのブックを開いてシートを選択し、5行から10行を削除します。

Dim excelApp As New Excel.Application
Dim excelWork As Excel.Workbook

excelWork = excelApp.Workbooks.Open("c:¥temp¥Book1.xls")
Dim excelSheet As Excel.Worksheet = excelWork.Sheets(1)
excelSheet.Rows("5:10").Delete()

この状態で最終セルを取得すると、削除前の最終行が返ってきます。
'シートの最終セルを選択します
excelSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Select()

削除後のシートの最終セルを取得するには、一度保存します。
excelWork.Save()

こうすると、読み直さなくても、上記の最終セルを選択するソースで削除後の最終セルが取得できます。
posted by: ゆう | VB.NET | 22:36 | comments(0) | - | - | - |
VB.NETでVBのDoEventsを実行するには
今日仕事でVB.NETの画面に作業の進捗状況を表示するプログラムを作成しました。

処理を行っているときに、画面のラベルに進捗状況をセットするわけですが、そのままでは、処理が優先されて画面のラベルの表示は書き換わってくれません。

VBではそのようなとき「DoEvents」と一言書けば、溜まっていた要求をVBが処理してくれて、画面のラベルの表示が書き換わります。

VB.NETも同じだろうと思って「DoEvents」と書いたのですが、その様な処理は定義されていないといってエラーとなります。そこで、ちょっと調べるのに時間がかかりましたので、同じ悩みに直面した人のために。

VB.NETでのDoEventsは
「Application.DoEvents()」
でした。
posted by: ゆう | VB.NET | 21:41 | comments(4) | - | - | - |
VB.NET,C#.NETでマイドキュメントのフォルダを取得する
プログラム内で、ワークファイルを作成したい場合や、ログ等一時的なファイルを作成したい場合、マイドキュメントを使用すれば、そのフォルダは絶対にありますし、説明書も書きやすいので(あくまで私の趣味)便利です。

ドットNETでマイドキュメントのフォルダを取得するには以下のクラスを使用します。

System.Environment

以下の例ではマイドキュメントのフォルダを表示しています。
MessageBox.Show(System.Environment.GetFolderPath(Environment.SpecialFolder.Personal))

このEnvironment.SpecialFolderには他にもいろいろあるので、試してみるのも面白いと思います。
posted by: ゆう | VB.NET | 23:38 | comments(0) | - | - | - |
Excelシートの入力セル最終行取得方法
VB.NETで、Excelシートを操作するとき、そのシートの最終行を取得したい場合が多々あります。

セル値(Textプロパティの値)が空かという聞き方で調べる方法はありますが、どのセルに焦点を絞るかなど、なかなか厄介です。

以下のようにすればExcelが認識している最終行を取得することができます。

Dim excelApp As New Excel.Application
Dim excelWork As Excel.Workbook

excelWork = excelApp.Workbooks.Open("c:¥temp¥Book1.xls")
Dim excelSheet As Excel.Worksheet = excelWork.Sheets(1)
'シートの最終セルを選択します
excelSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell).Select()
'最終行を表示しています
MessageBox.Show(excelApp.ActiveCell.Row)
excelWork.Close()
excelApp.Quit()

以上。
posted by: ゆう | VB.NET | 23:30 | comments(0) | - | - | - |
Excelシートのセル値の取得方法
ExcelのVBAでCELLの値を参照する場合、セルに表示されているイメージを取得するにはTextプロパティを使用します。

例)VB.NETでの使用例(Excel Libraryを参照設定しているとします)
Dim excelAppObj As New Excel.Application
Dim excelWorkBook As Excel.WorkBook
Dim excelSheet As Excel.WorkSheet

excelWorkBook = excelAppObj.WorkBooks.Open("Excelファイル名")
excelSheet = excelWorkBook.Sheets(1) '最初のシート
MessageBox.Show(excelSheet.Cells(1,1).Text) '1行1列を表示

しかし、日付で入力したセルが非表示になっている場合、Textでは期待した値は取得できません。(表示上は何も表示されない)
この場合はFormat関数でValueを使えば値を取得できます。
※日付のセルでも表示されていればTextで日付を取得できます。

例)MessageBox.Show(Format(excelSheet.Cells(1,1).Value,"yyyy/MM/dd"))

以上。

posted by: ゆう | VB.NET | 21:17 | comments(0) | - | - | - |
C#.NETでVBのLeft,Right関数等を使うクラス
VBの文字操作関数は使うと結構便利です。C#.NETでは標準で用意されていない機能を、このVBの文字列関数を使うと簡単に実現できてしまいます。
クラスはMicrosoft.VisualBasic.Stringsクラスです。

以下は.NET2.0の場合の例です。

1.参照設定でMicrosoft.VisualBasicを追加します。
2.ネームスペースの使用宣言
    using Microsoft.VisualBasic
3.使用方法
    Strings.Left(対象文字列,長さ)
    Strings.Right(対象文字列,長さ)
※Microsoft.VisualBasic.Stringsクラスにはその他いろいろな文字列操作関数があります。

また、VB.NETの場合は、直接Left,Right関数を書けますが、Formクラスには直接書けません(Left.Rightはプロパティで存在するため)。この場合は、Microsoft.VisualBasic.Leftというように書きます(Microsoft.VisualBasic.Strings.LeftでもOKです)。

以上
posted by: ゆう | VB.NET | 22:50 | comments(2) | - | - | - |
.NETでCSVファイルを読んでデータ取得する方法
CSVファイルは読み込んだ後に、カンマや引用符の処理等を行って、各値を取り出すのがなかなか面倒です。.NET2.0のMicorosoft.VisualBasic.FileIOneネームスペースのTextFieldParserクラスを使うとそれが簡単になります。

以下にVB.NETでの例を記します。

Imports Microsoft.VisualBasic.FileIO

Dim csvFile As TextFieldParser

'解析するファイル名とエンコーディングコードを指定
  csvFile = New TextFieldParser("CSVファイル名",
  System.Text.Encoding.GetEncoding("Shift_JIS"))
'デリミタで構成されているファイルであることを指定
  csvFile.TextFieldType = FieldType.Delimited
'デリミタがカンマであることを指定
  csvFile.SetDelimiters(",")
'ファイルの最後まで読み込んでデータを取得する
  Do Until csvFile.EndOfData
    Dim row As String() = csvFile.ReadFields()
  ここに処理を記述
  Loop

※クロース処理等の後始末は要らないようです。

以上
posted by: ゆう | VB.NET | 23:55 | comments(0) | - | - | - |
VB.NET,C#.NETで日付、時刻を取得する
ここでは、DateTimeクラスで、今日の日付、今の日付時刻を取得するメソッドの例を記します。

1.今日の日付を取得する
 DateTime.Today.ToString("yyyymmdd");
 (yyyy:年 mm:月 dd:日)
 例えば今日の場合、20070705と返ってきます。

2.今の日付時刻を取得する
DateTime.Now.ToString("yyyyMMddHHmmss");
 (HH:24時間制の時間 ※hhの場合は12時間制となる ss:秒)

※TodayとNowでは月を取得する文字が違う(mとM)ので注意。

以上。
posted by: ゆう | VB.NET | 23:55 | comments(0) | - | - | - |