忍者ブログ
26 April

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

25 December

【ExcelVBA】ER図のパーツを作る

自分用。作成は、Office2010。

コピーするシート上にある元のシェイプグループはこんなん↓
テーブル名と、フィールド名と、それを括るものの3つで構成。


ターゲットシート(Worksheets("TgtDB"))には、ER図を作りたいテーブルの俗称とフルパスが複数入っていて、そのデータベースの中に、DBのテーブル情報をまとめたテーブル("C1")が個々に入っている、という設計です。

複製したシートの、2行目から、10個ずつ折り返しつつ、ずらずらとテーブルごとにシェイプグループを作ります。雛形が一行目に残りっぱなしですけど、それは後で手で削除します。

グループはなんか、オブジェクトじゃなくて状態?なのかなんなのか知らないんですけども(の、割にはObjectに入ったけど…)グループを入れたObjectと、グルーピングしたいシェイプのObjectをつかんでるだけでは、両方を選択することができないらしく…。

結局、個別にユニーク名を付けて、名前で選択→グルーピング、しか、今回手段が見つけられなかった感じです。
'--------------------------------------------------------------------------
'    Write by m_o_co
'--------------------------------------------------------------------------
Option Explicit

Private Const GRP_NM As String = "Gr_TBL"
Private Const TBL_TTL As String = "R_TBL_Title"
Private Const TBL_FLM As String = "R_TBL_FRAM"
Private Const FLD_NM As String = "R_FLD_NM"

Private DB As DAO.database
Private RS As DAO.Recordset

Private WB As Workbook
Private tmpShp As Object
Private wkSht As Worksheet

Private wkTblNm As String

Private cRow As Long
Private cClm As Integer

'--------------------------------------------------------------------------
Public Sub crtErPeace()

拍手

PR
16 October

【VBA/Access2010】ProcOfLineプロパティで永ルプった話。

やられちまったぜTANAKAさん…!

CodeModuleのプロパティ
http://officetanaka.net/excel/vba/vbe/05.htm

~あらすじ~

環境毎にフロントファイルを分けたり検証したりしているうちに、ソースのバージョン管理がメタメタになったm_o_coは、各プロシージャの行数を収集するため、VBEオブジェクトという未知の領域に踏み込んだ。そこで永久ループに、はまったのであった。


拍手

22 May

【Access/VBA】サブフォーム内の任意のレコードに移動する。

びゃああああ!!!解決してないぞこのスレッド!!
http://www.accessclub.jp/bbs5/0004/vba797.html

うおおお、あきらめてなるものかー!ぐぐるぐぐる

http://www.nurs.or.jp/~ppoy/access/access/acF001.html

pPoyさんありがとうpPoyさん!!!
(pPoyさんのコードや凡例はいつも超実用的で大変お世話になっております!)

やりたかったのは、特定のレコード削除後に、その削除レコードの場所から画面を大きく移動させない事。

Execute "Delete From~"する
   ①Me.Refreshする  → カーソルは保持できるが、#Deleteの枠が残る
   ②Me.Requeryする → リクエリーなんで、当然カーソルが先頭に戻る。

ひぎゃあああ!ヾ(:3ノシ )ノシ


サブフォームのステートメントからコールしたかったので、↓になりました。
Delete前に、SaveBMして、リクエリー後、MoveBMします。
'------------------------------------------------
Private BM As Variant

Private Sub SaveBM()
'=========================
'   移動先の保持 by m_o_co
'=========================

On Error GoTo Err_Me

Forms(Parent.Name).[サブフォーム名].SetFocus
DoCmd.GoToRecord , , acPrevious
BM = Me.Bookmark
DoCmd.GoToRecord , , acNext   ’ 後の処理で、カレントレコード前提で組んでるのが一杯あるので戻す。

No_Err:

Exit Sub
Err_Me:

Select Case Err.Number
Case 2105
' 先頭レコードだとエラーになるので。
BM = Null
Resume No_Err
End Select

End Sub

Private Sub MoveBM()
'=========================
'  カーソル移動 by m_o_co
'=========================

If Not IsNull(BM) Then
Forms(Parent.Name).[サブフォーム名].SetFocus
Me.Bookmark = BM
End If

BM = Null

End Sub
'------------------------------------------------

まじ、ブックマーク呪わしい。ほんと…!

拍手

19 March

【cfV】オバロ軸について考えてみた。

私は元々からして、1stデッキがアモン、2ndデッキがオーバーロードです。

 オーバーロードについては、ファン心理によって作ったデッキ(2013年7月時点で、ジエンド軸)なので、自分と相性が良いかというと首を捻りつつ遊んでいた要素があったりなんだり。その後、ヌーベルバーグを組み込んで、ヌーベルと愉快な仲間たちデッキを経て、2014年2月の無限転生で、再びオーバーロード軸になりました。

 今回はその、オーバーロード[ブレイク(※以下オバロさん)&Яe-Birth(※以下オバロリさん)]軸のお話。

 そう、私は半年以上かげろう使いとして首を捻り続けていた訳なのですが。
 オバロリさんは、付加価値的に持ち得る、かげろうに似合わぬ展開力と、ボッチorハーレムのスイッチ選択の見極めがなかなかクールで、今ではキャラ愛ユニット愛に加え、プレイングでもなかなかフェイバリットです。




拍手

28 February

【Access/VBA】備忘録)祝日マスターとそれを使ったカレンダーデータ作成

割と手が込んでて、汎用性がそれなりにあり、ソース無くなってまた組む羽目になったら面倒なので。

【参考】
【Excel Tips】成人の日や体育の日などのハッピーマンデーの日付を求めるには?
http://enterprisezine.jp/iti/detail/854
【Excel Tips】春分の日や秋分の日を求めるには?
http://enterprisezine.jp/iti/detail/865

祝日マスター
-------------------------------------------
管理No名称祝日区分振替基準日
1元旦011  0
2成人の日11 2 0
3建国記念の日0211  0
4春分の日23  INT(20.8431+0.242194*(★年-1980))-INT((★年-1980)/4)0
5昭和の日0429  0
6憲法記念日053  5
7みどりの日054  5
8こどもの日055  0
9海の日17 3 0
10敬老の日19 3 0
11秋分の日29  INT(23.2488+0.242194*(★年-1980))-INT((★年-1980)/4)0
12体育の日110 2 0
13文化の日0113  0
14勤労感謝の日01123  0
15天皇誕生日01223  0
-------------------------------------------

祝日計算の心臓部↓
-------------------------------------------
Select Case RS(0)!祝日区分
Case 0
wkDay = RS(0)!日
Case 1
wkWeek = Weekday(DateSerial(mYear, RS(0)!月, 0), 3)
If wkWeek = 7 Then wkWeek = 0 ' エクセルと統一する為
wkDay = (7 * RS(0)!週) - wkWeek
Case 2
wkDay = Eval(Replace(RS(0)!式, "★年", mYear))
End Select
-------------------------------------------

-------------------------------------------
Public Sub Crt_Doniti(mYear As Integer)
'================================
' 土日情報
'================================
Dim DB As DAO.Database, RS As DAO.Recordset
Dim wkDay As Integer, m As Integer, i As Long, wkWeek As Long, wkDate As Date, WeekFlg As Integer


Set DB = OpenDatabase(DB_jinji, False, False, pDB_Jinji)
Set RS = DB.OpenRecordset("Select * From お休み管理用のテーブル", dbOpenDynaset)

WeekFlg = 2 ' 最初の土曜日
For m = 1 To 12

Set_SanDay:
wkWeek = Weekday(DateSerial(mYear, m, 0), WeekFlg)

Select Case wkWeek
Case 6: wkDay = 7
Case 7: wkDay = 6
Case Else: wkDay = 6 - wkWeek
End Select

For i = wkDay To Day(DateSerial(mYear, m + 1, 0)) Step 7

wkDate = DateSerial(mYear, m, i)
wkWeek = Weekday(wkDate, 2)

RS.FindFirst "日付=#" & wkDate & "#"
If RS.NoMatch Then

RS.AddNew
' (略)
RS.Update
End If

Next

' 最初の日曜日
If WeekFlg = 2 Then
WeekFlg = 3
GoTo Set_SanDay
Else
WeekFlg = 2
End If

Next

End Sub
-------------------------------------------

拍手