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

ACCESS Excelファイルに画像を挿入

まずは変数を宣言します。

Dim xlApp   As Object
Dim xlBook  As Object
Dim xlSheet As Object

各オブジェクトを作成します。

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open([Excelファイルのフルパス])
Set xlSheet = xlBook.WorkSheets(1)

ワークシートオブジェクトをwithブロックで使用します。

With xlSheet

画像を貼り付けしたい起点(左上)のセルを選択します。

.Range("A1").Select

withブロックが入れ子になりますが、画像オブジェクトとしてアクセスできるようにします。 続きを読む…»

0
6,052 views

小文字の「i」が大文字になってしまう問題 [ACCESS]

例えば、Softbankの「…@i.softbank.jp」というメールアドレスを打ったとき、
@の後のiが大文字になってしまう場合があります。

この問題を解決するにはオートコレクトの設定を変更します。

メニューの[ツール]-[オートコレクト]を開きます。

「入力中にオートコレクト」のチェックを外します。
これで「i」が大文字にならないようになります。

私はついでに以下の2つもチェックを外しています。

・2文字目を小文字にする [THe … → The …]
・文の先頭文字を大文字にする [the … → The …]

0
1,667 views

クエリーでのデータ抽出上限値

ACCESSのクエリーのお話です。

例えば、テーブルにデータが2,000件存在し、そのうち条件を指定して抽出したデータを上位1,000件のみ表示したいとします。
プログラムでレコードセットを開き、指定した件数を抽出することができますが、もっと簡単な方法があります。

クエリーのデザインビューでクエリープロパティを開きます。
access_query_property
プロパティの「トップ値」に抽出したいデータの件数を入力します。
デフォルトは「すべて」になっています。

これだけで上限値を設定することができます。

0
3,314 views

フォームを開く/閉じる速度改善

MicroSoft ACCESSにて、フォームを開くとき、閉じるときの速度が遅い場合、
コードの書き方によって改善できることがあります。

以下のようにフォームを開くときにフィルターをかけていた場合

Private Sub Form_Load()

    DoCmd.ApplyFilter , "[Where条件]"

End Sub

上記の場合でいくと開くときにも時間がかかり、
更には、閉じるときにも時間がかかってしまいます。

改善するには、開くときにフィルター条件を引数に与えてしまいます。

Dim stDocName      As String
Dim stLinkCriteria As String

stDocName = "[フォーム名]"
stLinkCriteria = "[Where条件を指定]"

DoCmd.OpenForm stDocName, , , stLinkCriteria

この方法のほうが開く速度も閉じる速度も向上します。

0
8,970 views

Excelオブジェクトを使用してフリガナ入力

ACCESSからVBAでフリガナを自動入力します。

Dim xlObj As Object

Set xlObj = CreateObject("Excel.Application")

Hurigana = xlObj.GetPhonetic("文字列")

Set xlObj = Nothing

ちなみにExcelだと、

Phonetic("文字列")

だけでできるようです。

0
1,881 views

ACCESSからExcelファイルが開いているか調べる

Dim xlApp   As Object
Dim xlBook  As Object

Dim FileName   As String

FileName = Environ("USERPROFILE") & "\デスクトップ\sample.xls"

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

If xlBook.ReadOnly Then
    MsgBox "開いています。"
Else
    MsgBox "開いていません。"
End If

xlBook.Close

xlApp.Application.Quit

Set xlBook = Nothing
Set xlApp = Nothing
0
24,017 views

VBA DAOでカレントレコードの位置を取得・設定する

帳票フォームでカレントレコードの位置を取得・設定できます。
レコードを削除してその位置に戻りたい場合などに便利。

Dim rst As Object
Dim i As Integer

Set rst = Me.Recordset

'カレントレコードの位置を変数に代入(返り値:長整数型)
i = rst.AbsolutePosition

'カレントレコードを1つ先に移動させる
rst.AbsolutePosition = i + 1

Set rst = Nothing

相対位置を取得するPercentPositionというプロパティもあります。
この場合、全体を100とした浮動小数点型が返ります。

+1
23,573 views

VBA DAOでレコード件数の取得

DAOでレコード件数を取得するには、一度MoveLastメソッドを実行しないといけないようです。
※DAO Object Libraryは参照なし

Dim rst As Object

Set rst = Me.Recordset

rst.MoveLast
MsgBox "レコード件数:" & rst.RecordCount

Set rst = Nothing
0
6,550 views

ACCESS VBA テーブルの削除

テーブルの一覧を取得し、削除します。
※DAO参照はなしで実行できるようにしています。

Dim tbls As Object 'DAO.TableDefs
Dim tbl  As Object 'DAO.TableDef

'テーブル一覧取得
Set tbls = CurrentDb.TableDefs

Dim DelTables As Collection

Set DelTables = New Collection

For Each tbl In tbls

	'「MSys」で始まるテーブルはシステムテーブルなので省きます
    If Not tbl.Name Like "MSys*" Then
        DelTables.Add tbl.Name
    End If

Next

For i = 1 To DelTables.Count
    'テーブル削除
    tbls.Delete (DelTables(i))
Next

MsgBox "削除件数=" & DelTables.Count
0
8,517 views

ACCESS CSVデータインポート時の文字コード

TransferTextメソッドにて、テーブルにCSVデータをインポートする際、
文字コード(CodePage)を指定してインポートすることができます。

最後の引数[CodePage]を省略すると、シフトJISで読み込まれます。

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 932   'Shift_JIS

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 51932 'EUC-JP

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 65001 'UTF-8

DoCmd.TransferText acImportDelim, , _
    "テーブル名", "ファイルパス", True, , 50220 'JIS

CSVデータエクスポート時も同様です。

こちらに参考になる表があります。
http://www.atmarkit.co.jp/fdotnet/dotnettips/013enumenc/enumenc.html

0
32,910 views