カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

ADODB.Streamを使ったテキストファイルの読み書き

通常のテキストファイルの読み込みや書き込みだと
文字コードがShift_jisでしか扱えません。
他の文字コードを使いたい場合はADODB.Streamを使います。

テキストファイルの読み込み

Dim sr      As Object
Dim strData as String

Set sr = CreateObject("ADODB.Stream")

sr.Mode = 3 '読み取り/書き込みモード

sr.Type = 2 'テキストデータ

sr.Charset = "UTF-8" '文字コードを指定

sr.Open 'Streamオブジェクトを開く

sr.LoadFromFile ("ファイルのフルパス") 'ファイルの内容を読み込む

sr.Position = 0 'ポインタを先頭へ

strData = sr.ReadText() 'データ読み込み

sr.Close 'Streamを閉じる

Set sr = Nothing 'オブジェクトの解放

続きを読む…»

163,818 views

VBA CInt関数の注意点

CInt関数はデータ型を変換する際に使用する関数ですが、小数点以下の扱いがRound関数とは異なります。
CInt関数の場合は、四捨六入となり、0.5の場合のみ最も近い偶数に丸められます。

CInt(2.4) = 2
CInt(2.6) = 3

ここまでは通常の四捨五入と同じなのでわかりやすいと思います。

しかし、0.5だった場合だけ動作が異なります。

CInt(2.5) = 2
CInt(3.5) = 4

となります。

2,067 views

ショートカットの作成 VBA

ショートカットを作成する方法のご紹介。
本来は「Windows Script Host Object Model」を参照設定しますが、
今回は参照せずに実行する方法です。

Dim ws
Dim myShortcut

Set ws = CreateObject("WScript.Shell")

Set myShortcut = ws.CreateShortcut("[作成するショートカットのフルパス]")

With myShortcut
    .TargetPath = "[実ファイルのフルパス]"
    .Save
End With
16,169 views

VBEでマウスホイールを有効にする

Office2000を使用している場合、Visual Basic Editor(VBE)では
マウスホイールが使用できません。
開発する上で、非常に効率が悪いので私はアドインを使ってホイールを有効化しています。

まず、以下のURLから「VB6MouseWheel.exe」パッケージをダウンロードします。
http://support.microsoft.com/kb/837910/ja

1.「VB6MouseWheel.exe」をダブルクリックし、任意の場所にファイルを解凍します。

2.[スタート]から[ファイル名を指定して実行]で以下を入力します。

regsvr32 <path>\VB6IDEMouseWheelAddin.dll

3.解凍したファイルの中の「VBA Mouse Wheel Fix.reg」を
  ダブルクリックしてレジストリに登録します。

4.Visual Basic Editor(VBE)を起動し、メニューの[アドイン]-[アドインマネージャ]を選択し起動。

5.利用可能なアドインのリストに「MouseWheelFix」があるので、選択し
  ロード方法の「ロード/アンロード」「起動時にロード」両方にチェックを入れ、OKをクリックしてください。

3,646 views

文字列から日付(または時刻)に変換する

日付(または時刻)文字列をDate型(バリアント)へ変換するには以下のような関数があります。

DateValue
TimeValue
CDate

・書式

val = DateValue( "[日付文字列]" ) '戻り値:Variant型
val = TimeValue( "[時間文字列]" ) '戻り値:Variant型
val = CDate( "[日付文字列]" ) '戻り値:Date型

続きを読む…»

35,285 views

ACCESS VBA Excelオートメーションの例

参照設定なしでACCESSからExcelファイルを作成する方法です。
罫線等の定数は使用できないため、実際の数値を与えています。

Dim xlApp    As Object
Dim xlBook   As Object
Dim xlSheet  As Object
Dim FileName As String
FileName = Environ("USERPROFILE") & "\デスクトップ\test.xls"

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(FileName)
Set xlSheet = xlBook.WorkSheets(1)

続きを読む…»

8,018 views

参照設定を追加せずDAOを利用する

Dim db As Object
Dim rst As Object

Set db = DBEngine.Workspaces(0).Databases(0)

MsgBox db.Name

Set rst = db.OpenRecordset("テーブルまたはクエリ名")

Do Until rst.EOF
    Debug.Print rst("フィールド名")
    DoEvents
    rst.MoveNext
Loop

rst.Close: Set rst = Nothing
db.Close: Set db = Nothing

OpenRecordsetメソッドにdbOpenDynasetなどの引数を指定したい場合
定数が使用できないので、下記を参考に数値を入力してください。

dbOpenTable 1
dbOpenDynamic 2
dbOpenDynaset 3
dbOpenSnapshot 4

SQL Serverへ接続する場合について(※2016.06.14追記)

SQL ServerのID列を持つテーブルを開くときは、dbSeeChanges(512)オプションを使用するようエラーが発生します。
その場合は以下のように開きます。

Set rst = db.OpenRecordset("テーブルまたはクエリ名", 2, 512)
3,697 views

座標範囲の算出

ある地点から指定した半径以内に該当する座標を絞り込みたいとき、検索に使用する値を得るサンプルです。

考え方としては、指定した半径を基に矩形を作成し、その範囲に含まれる座標を検索する、というものです。
残念ながら“指定した半径を基に作成した円の中に含まれる”ではありません。

通常は2点間の距離を算出し、半径以内に収まるかを出したほうがいいのですが、比較するデータが多い場合は1つ1つ処理しているとかなり負荷がかかります。
そのため、ざっくり検索する方法をご紹介します。

今回はPHPのコードですが、JavaScriptなど他の言語でも利用できます。

まず、算出に必要な度数毎の距離を宣言します。

// 緯度1秒の平均距離 約30.9m
// 緯度35度上の緯度1秒の距離 約30.8m
$lat_length = 30.9;

// 緯度35度上の経度1秒の距離 約25m
$lng_length = 25;

探したい範囲の半径(km)を設定します。 続きを読む…»

1,833 views

ACCESS2000 マウスホイールの無効化

Microsoft Access のみを使用して MouseWheel イベントを作成する
警告 : 可能な限り、この資料の「Visual Basic の ActiveX DLL を使用して MouseWheel イベントを作成する」に記載されている方法を使用するようにしてください。以下の方法を使用できるのは、Microsoft Access ランタイム アプリケーションなど、アプリケーションのユーザーが Microsoft Access 内で Visual Basic Editor を読み込まない場合に限られます。このソリューションを実装した場合に、ユーザーが Visual Basic Editor を開くと、以下のコードによって Microsoft Access が応答を停止します。また、Microsoft Access を起動している間に一度でも Visual Basic Editor を読み込んでいる場合は、このコードのテストを行う前に、Microsoft Access を再起動する必要があります。この方法を使用する場合には、作業内容を保存する頻度を高くし、データベースのバックアップを常に最新にしておくことを強く推奨します。

続きを読む…»

3,667 views

フォームの状態を調べる

Dim varRet as Variant

varRet = SysCmd(acSysCmdGetObjectState, acForm, "[フォーム名]")

0=開いていない
1=開いている
5=新しいフォームです
7=編集されたが、まだ保存されていない

1,466 views