FC2ブログ

スポンサーサイト 


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--/--

Category: スポンサー広告

TB: --  /  CM: --

top △

Excel VBA をやってみた その16 


過去記事に 大量なデータはどうする やら Excel VBA をやってみた その6 があったと思います。
要は、CSV ファイルを対象に ADO 接続して、SQL で必要なものを抽出しようというもの・・・
(Excelシートを対象に・・・Excel VBA をやってみた その7 があったり・・・)

今回の対象CSVのフォーマットは以下の様な感じで・・・・
ID,日時(yyyy/m/d h:mm),備考1,備考2
0001,2015/03/25 10:25,AAAA,BBBB
0001,2015/03/25 12:01,CCCC,DDDD
0001,2015/03/25 17:30,EE,FFF
0002,2015/03/26 9:15,KK,LL
0002,2015/03/26 12:10,MMMM,NNN
0002,2015/03/26 14:54,OOOOO,PPP
0002,2015/03/26 22:01,QQ,RRRR
・・・

この中から、同一IDで、同一日の最小/最大部分のみを抽出
0001,2015/03/25 10:25,AAAA,BBBB
0001,2015/03/25 17:30,EE,FFF
0002,2015/03/26 9:15,KK,LL
0002,2015/03/26 22:01,QQ,RRRR
・・・

で、この結果を
・ID毎のBook もしくは ID毎のシートに・・・・

実現の仕方には色々あると思います。
・ExcelにCSVファイルを展開して Filter 等の操作しながら結果を求める
・Access に1度データを取り込んで結果を吐き出す
・今記事の様に、CSV自体はExcel展開せずに最終形のExcel環境で操作できるようにする

考える際、1番いやだったのが
・項目名部分に「日時(yyyy/m/d h:mm)」というものが存在する
・ID部分を文字列として扱いたい

そこで、冒頭での記事では使わなかった「schema.ini」を利用する事に・・・
CSVファイルと同じフォルダ内の「schema.ini」に以下の様に記述しておくと
[CSVファイル名]
ColNameHeader=True
CharacterSet=932
Format=CSVDelimited
Col1=ID Char Width 255
Col2=日時 Date
Col3=備考1 Char Width 255
Col4=備考2 Char Width 255

CSVファイル内の項目名部分を置換えつつ、データの型を指定する事が出来ます。
この場合、CSV内の項目名「日時(yyyy/m/d h:mm)」は「日時」として扱えるようになります。
この「schema.ini」を使った方法は、Excel だけでなく Access 環境でも使えます。

今回の処理対象は1つのCSVファイルだけなので、Access に取り込んでから・・・
これは、優先順は低いかな・・・
複数のCSVを取り込んでから総合的に・・・なら最優先かも・・・かも・・・
続きを読んでみようかな ---≫
スポンサーサイト

2015/05/26

Category: サンプルかな

TB: --  /  CM: 0

top △

貸出台帳もどきの雰囲気? 


1.貸し出しの時に、使用者名・所属・TEL・借用日・返却予定日を記入し、借りる備品をリストから選択(この時複数選択する)

2.返却の時に、使用者名を選択すると借用中リストを表示し、返却した備品を一つずつ選択、または一括返却ボタンで一括返却する。

3.貸し出し・返却の履歴を残す。
※備品の破損・紛失の際に、借用者の履歴が分かるようにしたい。

このようなQAを見かけました。
初心者という事なんですが、やりたいものを作る・・・・初心者云々は関係ないように思います。

そこで、1.、2. だけを雰囲気作ってみた。
ただ、、やりたいものと同じなのかはわからないけど・・・

メインとなるフォームは「F1」単票フォームに、サブフォーム2つ組み込み
サブフォームは横に配置して、
左側:貸出中の一覧表示
右側:貸出受付みたいなもの

kEnt211_7.jpg

起動して、顧客を選択していない状態では、左側に貸出中の一覧を表示

kEnt211_5.jpg

顧客を選択すると、左側には選択した顧客に絞った貸出中一覧表示に

kEnt211_6.jpg

返却チェックを入れると「返却」ボタンが表示
返却するのなら、そのままボタンをクリック
新規に貸し出すものがあるのなら、物を選んで「貸出」ボタンクリック
「貸出」ボタンをクリックするまでは、仮押さえっていうイメージで・・・
以下は新規に登録する時の画像になりますが、
左:顧客を選択して、中:貸出するものを選んで、右:「貸出」ボタンクリック後

kEnt211_3.jpg  kEnt211_4.jpg  kEnt211_5.jpg

中の画像で、貸出中のもの・仮押さえのものは選択一覧には表示されない様に・・・
(左画像内の一覧から、仮押さえしたもの以外が表示されていると思います)

選択する部分は、コンボボックスになっています。
顧客選択・受付部分の品物選択の2つは、部分一致で絞り込み表示する様に・・・

左側:「務」を入れてみる 右側:「D」を入れてみる

kEnt211_8.jpg  kEnt211_9.jpg

メイン・サブフォームの連動は、リンク親/子フィールドは使わないで連携してみました。
というのは、顧客を選び直した・・・このタイミングで中の処理を切り替えたかったので・・・

なお、動きを実現するにあたって、hatena さんの記事で紹介されたものをアレンジして使ってます。
非連結のチェックボックスでレコードを選択する とか コンボボックスのリストを入力値で制限する とか・・・
続きを読んでみようかな ---≫

2015/03/11

Category: サンプルかな

TB: --  /  CM: 0

top △

Excelのハイパーリンク情報をインポートする 


ハイパーリンクについては、過去記事「ハイパーリンクって、、、セキュリティは」でも扱っていました。
私自体はハイパーリンク型は使わないのですが、データを取り込む元の状態を維持したいとかなると・・・
特に、Excel でハイパーリンク設定されているものをインポートしつつ、ハイパーリンクとして機能させるには・・・
ということで、やってみたものになります。
ま、きっかけは回答した事・・・・ですけど。

今回の添付ファイルには、Excelファイル「kEnt209.xls」とアクセスファイルの2つが入っています。
Excel ファイルには2つのシートがあって、
「Sheet1」が取り込む元となるもの(図左)
「Sheet2」は「Sheet1」の B4 からリンク( Sheet2!A1 )(図右)

kEnt209_Excel_1.jpg  kEnt209_Excel_2.jpg

この「Sheet2」はブログの記事一覧にもなっているので・・・
C列はハイパーリンクとしていませんが、1度編集状態にしてから Enter すればリンクが張られるようなので、簡単に記事に飛べると思います。

確認用フォームは以下

kEnt209_1.jpg

確認内容は、
1)回答したもの Samp1
2)DoCmd.TransferSpreadsheet を使った Samp2
3)Excel ファイル内でリンクしていたものを参照できるように Samp3
4)3)のやり方をチョッと変更してみたのが Samp4

これをやってみてわかった事は、
・DoCmd.TransferSpreadsheet では、表示されている文字列だけ
 (ハイパーリンクとしては機能しない)
・Excel の空白( Empty値 )をレコードセットでフィールドに代入すると Null になる
続きを読んでみようかな ---≫

2015/02/26

Category: サンプルかな

TB: --  /  CM: 0

top △

取り込みながらのテーブル分割と関連付け 


本題に入る前に・・・

チョッと気になる所があって・・・
前にも記述してましたが、ログからは、どこをクリックしたのか・・・が、わかります
記事の更新が1か月無いと広告表示になりますが、
その後からカウンターのクリックが発生してくるのは何故???
これを追ってみていたのですが、誰がクリックした・・・ログには無いようで・・・
・・・・実害はなさそうなので、今後は広告表示させない様に記事を書いていこうかと・・・

では本題です

Excel に以下の様なデータがあって、

kEnt200.jpg

効率良く(?)テーブル分割して、データを取り込むやり方について、チョッと模索してみる。
Excel シートの項目(1行目)には、
「圏」「地方1」「地方2」「都道府県番号」「都道府県名」の5項目があって、
「圏」「地方1」「地方2」の3つについては、それぞれ別のテーブルにしてみましょうか。

「圏」用のテーブル「T圏」では、
 「圏ID」(長整数:主キー)「圏名称」(テキスト)
 この「圏名称」が Excel から入手するもの

「地方1」用のテーブル「T地方1」では、
 「地方1ID」(長整数:主キー)「地方名称」(テキスト)
 この「地方名称」が Excel から入手するもの

「地方2」用のテーブル「T地方2」では、
 「地方2ID」(長整数:主キー)「地方名称」(テキスト)
 この「地方名称」が Excel から入手するもの

メインとするテーブルに「T都道府県」
 「都道府県ID」(長整数:主キー)
 「圏ID」「地方M」「地方S」(長整数)
 「都道府県名称」(テキスト)
 この「都道府県ID」、「都道府県名称」の2つが Excel から入手するもの
 「圏ID」「地方M」「地方S」は、「T圏」「T地方1」「T地方2」をルックアップする様に

各テーブルの関係は以下のようにしてみました。

kEnt200_1.jpg  kEnt200_2.jpg

テーブル「T地方1」「T地方2」に、
テーブル「T圏」を参照させるフィールドがあっても良いのかと思いますが・・・
(今回は「圏」「地方1」「地方2」の3つは単独で)
ただ、変更は簡単にできるように考えてみます。

上記取り込み用のテーブルは、事前に作っておく事が前提になりますけど・・・

サンプルファイルは、前記事「検索用途コンボの4階層連携 その2」にあります。
続きを読んでみようかな ---≫

2014/08/23

Category: サンプルかな

TB: --  /  CM: 0

top △

検索用途コンボの4階層連携 その2 


前記事「検索用途コンボの4階層連携」について記述していました。
元は、仕様・環境がわからないものに回答したのがベースになっていたのですが、
どうも同じ方が環境を少し具体的にしたもので質問されていたようです。
http://hatena-access.progoo.com/bbs/hatena-access_tree_pr_2961.html」ですが・・・
そこで、提示のあった Excel ファイルから

kEnt199.jpg

・読み込みながらテーブル分割

kEnt199_1.jpg

・Excel ファイルを1つのテーブルにインポート後、1つのテーブルを見ながらコンボ連携

kEnt199_2.jpg

というものを作成し回答時に添付したわけですが・・・・
上記2つの方法では、どうしてもコンボの4階層連携にはならなかったのです。
というのは、
「勘定科目コード」の説明・名称が「勘定科目」なら、この2つがペアでコンボの表示は1つ。
同様に「分類コード(機材番号)」と「分類項目」がペアでコンボの表示は1つ・・・
と、考えていたんですね

そこで、今回の追加サンプルとして、1つのテーブルを見ながら
「勘定科目」「勘定科目コード」「分類項目」「分類コード(機材番号)」
「コード(機材番号)」「枝番(機材番号)」の6つを、コンボ6つで選べるように・・・
なお、この選ぶ時の動きはコンボ同士を連携させるのはもちろんですが
・操作順はどこからでも
・順序良く徐々に絞り込んでいく
2通りを・・・

今回のサンプルファイルには、
・前記事分+サンプルのフォームとして作っていなかった後半記述のフォーム「F_T52」
・Excel ファイルを読み込みつつテーブル分割(標準モジュール:Module1 使用)
 テーブル「T1」「T1A」「T1B」「T1C」「T1D」とフォーム「F_T1」
・Excel ファイルを1つのテーブルにインポート「T_Excel」
 その確認用フォーム「F_Excel」
※ ここまでの内容が以下回答に添付したものと同じ
 「http://hatena-access.progoo.com/bbs/hatena-access_tree_pr_2961.html
・1つのテーブル「T_Excel」を対象に、6コンボ連携
 (操作順なし:フォーム「F_Excel2」)
 (操作順あり:フォーム「F_Excel3」)
・次の記事用
 標準モジュール:「Module2」「Module3」
 テーブル「T圏」「T地方1」「T地方2」「T都道府県」の4つ
※ 取込用 Excel ファイル kEnt199.xls
 Sheet1:本記事用 (提示あったものを使わせて頂きました)
 Sheet2:次の記事用
続きを読んでみようかな ---≫

2014/07/12

Category: サンプルかな

TB: --  /  CM: 0

top △

検索用途コンボの4階層連携 


複数のコンボボックスを連携させる。
つまり、基本となるコンボで選ばれた内容によって、次、次のコンボの表示を変更する。

過去記事「帳票 + 3つのコンボ変則連携 + α」で入力とか・・・
また、単なる3つの連携では、http://oshiete.goo.ne.jp/qa/7990927.html で回答してました。

今回のものは、4つのコンボが連携しつつ絞込み表示するものになります。
コンボボックスを4つを連動させてデータを絞り込み表示さ… に回答したそのものなんですけど・・・

まず、テーブル構成のイメージを初めに・・・

kEnt198.jpg

単純/簡単に考えると上記イメージになるのですが、実際のところわかりません。
今回のサンプルは、回答時に作っていたものが主になります。(ほとんど変更なし)
フォームとしては、以下の様な感じで・・・

kEnt198_1.jpg  kEnt198_2.jpg
続きを読んでみようかな ---≫

2014/07/06

Category: サンプルかな

TB: --  /  CM: 6

top △

営業日のカウント 


決まり切った法則のある休日設定の会社であれば、計算式で求めても良いのかな???
でも、テーブルに持っておいた方が、結構融通が利く様に思います。
例えば、
ある日を境に、土日休日が、金土休日に変わったとか・・・・
その際にコードを変更するんですかね・・・・

以下のテーブルがあったとします。

テーブル名「★★」
日付休日
2014/03/270
2014/03/280
2014/03/291
2014/03/301
2014/03/310
2014/04/010
2014/04/020
2014/04/030
2014/04/040
2014/04/051
2014/04/061
2014/04/070
2014/04/080
2014/04/090
2014/04/100
2014/04/110
2014/04/121
2014/04/131
2014/04/140
2014/04/150

※ 休日=1 のものが休息日になります。(逆に言うと、休日=0 が出勤(営業)日になりますね)

こういったものを作って、参照する様にしておけば・・・
休日が変わったとか・・・
テーブルの内容を変更するだけで、すぐに対応できますね・・・

このテーブルがある時、
・「納品日」を決めて
・それなりの準備日数が必要で・・・(準備は営業日にやる)

とした場合、準備着手日は何日に???

さて、ここからですが
納品日=4/9、準備日数=3 とした場合
・納品日から準備日数を引いた日付 4/6
・この 4/6 ~ 4/9 までに 休日=1 が何日あるか( 4/6 の1日ですね)
なので、求めたいのは 4/6 - 1 の 4/5 になるのか・・・・ にはならないですね
4/5 は 休日=1 なので、実際には 4/4 が欲しいですね
4/4 を求める時には、4/5 を含む過去直近の 休日=0 の日を求めれば一応求まります。

では、納品日=4/9、準備日数=4 とするとどうなるのでしょう
4日前は 4/5、4/5 ~ 4/9 間の 休日=1 は 2日
4/5 から 2 日前は 4/3
4/3 を含む過去直近の 休日=0 の日は 4/3
う~ん・・・なんか大丈夫そうな計算なのかな・・・ と思うのはまだ早いと・・・

データを変えてみます
日付休日
2013/12/221
2013/12/231
2013/12/240
2013/12/250
2013/12/260
2013/12/270
2013/12/281
2013/12/291
2013/12/301
2013/12/311
2014/01/011
2014/01/021
2014/01/031
2014/01/041
2014/01/051
2014/01/060
2014/01/070
2014/01/080

納品日=1/7、準備日数=3 とした場合、期待するのは 12/26 だと思いますが
1/7 -> 1/4、1/4 ~ 1/7 の休日は 2 日で 1/2、直近の営業日は 12/27
納品日=1/7、準備日数=4 とした場合、期待するのは 12/25 だと思いますが
1/7 -> 1/3、1/3 ~ 1/7 の休日は 3 日で 12/31、直近の営業日は 12/27

上記では年末年始を例にしてみましたが、
何日間、休日=1 が続くのかわからない時には、使えない方法なのかな???

で、考えてみたのは
・「納品日」「準備日数」を引数に、ユーザ定義関数内で処理して対象日を返す
処理としては、
・「納品日」を基準に、休日=0 のものを必要数抽出しておいて
・「準備日数」分、移動したレコードの値(日付)を返す

休日=1 のものは元々除外した中で処理するので、単純に移動するだけ・・・・
この方法は単純だし、楽だと思うんだけどなぁ~~
続きを読んでみようかな ---≫

2014/04/06

Category: サンプルかな

TB: --  /  CM: 0

top △

フォームを増殖させる 


副題:Collection より Dictionary が好き

「フォームを増殖させる」方法のサンプルを作成するにあたり、
「ドラクエ」云々が最近のニュースであったので、Ⅷでの錬金をサンプルデータに使ってみます。

※ サンプルデータは雰囲気です
 Web 等で攻略サイトの方を信じてください

以下の様な、見るだけフォームがあったとします。

kEnt190.jpg

出現するアイテムが左側のリストボックスに表示されます。
そのアイテムは、上側オプショングループでの種類に属する事になります。
オプショングループを選択し直すと、左側リストボックス内の表示が切り替わります。
リストボックス内のアイテムを選択すると、
・どこで売っているものなのか等・・・ 右側のリストボックスに表示されます。
・また、選択したアイテムを使った「錬金」情報があれば、下側サブフォームコントロールに
 表示される事になります。

kEnt190_1.jpg

上記画面で、錬金情報の「ブロンズナイフ」の情報は・・・ というと
・左側リストボックスから、「ブロンズナイフ」を選択すれば、それに関する情報で表示されます。

kEnt190_2.jpg

さて、ここからですが・・・
・初めの、「どうのつるぎ」情報を表示しつつ、
・「ブロンズナイフ」の情報を同じフォームを使って、別フォームとして表示したい・・・・・

つまり、以下の様な画面の推移になります。

kEnt190_31.jpg ⇒ kEnt190_32.jpg ⇒ kEnt190_33.jpg

・「どうのつるぎ」を選択
・「錬金」内の「ブロンズナイフ」をダブルクリック
・「錬金」内の「石のぼうし」をダブルクリック

その後、再度「ブロンズナイフ」をダブルクリックしたら、
・「ブロンズナイフ」のフォームは既に表示しているので、前面に移動させるだけ・・・

kEnt190_34.jpg

増殖させたフォームでの操作に制限はありません。
・オプショングループでの種類を選択し直したり
・異なるアイテムを選択し直したり
・・・自由です。
ただ、自分が何で増殖されたのか・・・ これを変更することはできません。
例えば、上記で「ブロンズナイフ」で増殖されたフォームを操作して違う表示にしていても、
操作の過程(ダブルクリック)で「ブロンズナイフ」の表示が必要になったら、
「ブロンズナイフ」の情報に戻された状態で表示される事になります。
自分が何で増殖されたのかは、フォームの標題部分でわかると思います。

なお、この増殖させたフォームの終わり方は、右上の「×」で閉じますが
・増殖させたフォームであれば、そのフォームだけ
・元々のフォームであれば、増殖させたフォーム全部閉じるようにしました。

上記の画面の推移では、見易い様にフォームを配置し直していますが、ポンポン重なって増殖します。
これを確認するフォームは「F1」になります。

そこで、フォーム増殖したものは何・・・ っていう管理用フォームも表示しましょうか・・・
これを確認するフォームは「F2」になります。

・「どうのつるぎ」を選択
・「錬金」内の「ブロンズナイフ」をダブルクリック
すると以下の様な画面になります。

kEnt190_41.jpg ⇒ kEnt190_42.jpg

表示される「フォーム選択」フォームを横に移動しておいて、増殖を繰り返していくと以下の様な感じに

kEnt190_43.jpg

「フォーム選択」で選ぶと、そのフォームが最前面に表示されるようになります。

この「フォーム選択」を「×」で閉じると、増殖させたフォーム全部を閉じるようにしました。
つまり、元々のフォーム「F2」だけが表示されるように・・・
また、フォーム「F2」を表示して、「×」で閉じた時には、
全フォーム(増殖したフォーム全部+「フォーム選択」フォーム)を閉じます。

この「フォーム選択」フォームが「F2_Menu」
単票フォームにコマンドボタンを16個配置しておいて、使う分を表示しましょう・・・・
16個以上の増殖フォームがあったら表示できる分だけ表示しましょう・・・・
(表示できないだけで、フォームの管理はやってます)

表示個数を制限するのもなぁ~ ということでフォーム「F3_Menu」
帳票フォームにしておいて、フォームのレコードセットには
・内部でテーブルとは関係ない ADO のインメモリレコードセットを作成し、
 それをフォームのレコードセットに使いましょう・・・・
※ この「F3_Menu」は、動きはしますが 2000 ではまともに表示されません
 (バージョンの違いという事で・・・:2000 の mdb を例えば 2007 で動かすとまともです)

kEnt190_44.jpg  kEnt190_45.jpg

副題にも上げていましたが、増殖させたフォームの管理に Dictionary を用います。

※ この記事の目的は、フォームを増殖させる方法です
  サンプルデータは、それを説明する為のデータにすぎませんので・・・
続きを読んでみようかな ---≫

2014/02/03

Category: サンプルかな

TB: --  /  CM: 0

top △

クロス集計 てんこ盛り 


クロス集計の記事は過去に結構あったかと思います。
クロス集計の基本的な考え方・Excelへの整形出力・フォームへの表示・・・・
・・・ 云々、てんこ盛り・・・の内容でいきます。

クロス集計の基本的な考え方は以下の様だと思っています。
kEnt189_Q1.jpg

また、発展その1として、列数を増やす方法として
kEnt189_Q2.jpg  kEnt189_Q3.jpg  kEnt189_Q4.jpg
kEnt189_Q5.jpg  kEnt189_Q6.jpg

また、発展その2として、合計を最終行に追加する方法として
kEnt189_Q7.jpg  kEnt189_Q8.jpg  kEnt189_Q9.jpg

この方法を変形したものが、クロス集計での(平均)行付加方法の模索 でもあります。

事の発端は、クロス集計クエリで列見出し2行する方法 に回答したこと・・・
この、hatena さんの Microsoft Access 掲示板 では、サンプルファイルを添付できるので・・・
説明ベタな私には好都合・・・
さらには、間違った回答しても hatena さんが目を光らせている・・・ 安心して回答できます・・・
説明ベタな方は、利用されてみてはいかがでしょうか・・・・

先に言っておきますが、今回のサンプルファイルの内容は、上記掲示板で回答したものが主です。
最後に添付していたファイルの内容に、
・日付の表示順を変更できるようにしたフォーム「F3」
 kEnt189_F3_1.jpg  kEnt189_F3_2.jpg  kEnt189_F3_3.jpg
・合計をクエリで求めておくのではなく、フォームフッタで合計表示してみる「F4」
 (「F4」のタブ部分作成用の記述「Module2」)
 kEnt189_F4_1.jpg  kEnt189_F4_2.jpg  kEnt189_F4_3.jpg
を追加しただけです。

※ それまでの内容を掻い摘んで・・・・ できているのか?

テーブル「T_商品」
商品コード商品契約数量契約金額
A100 300,000 
B40 16,000 
C50 6,250 

テーブル「T_発注」
ID商品コード販売日販売数販売金額
1A2013/10/31515,000 
2B2013/10/3131,200 
3C2013/10/316750 
4A2013/11/20721,000 
5B2013/11/2093,600 
6A2013/12/25515,000 
7C2014/01/284500 
8A2013/10/3139,000 
9A2013/09/09412,000 
11B2013/10/102800 

この2つのテーブルから、クロス集計で「販売数」「販売金額」を合計した表示がしたい・・・

前述した、列数を増やす方法でのテーブルを追加する方法で2通り提示
・「販売数」「販売金額」を行を分けて表示する (クエリ「QT1」)
・「販売数」「販売金額」を列を増やして列側に並べて表示 (クエリ「QT2」)

上記クエリ「QT1」「QT2」それぞれを、Excel に出力する際に
・加工しない
・加工する
指定/実行するフォームが「F1」
kEnt189_F1.jpg
kEnt189_F1_1.jpg  kEnt189_F1_3.jpg
kEnt189_F1_2.jpg  kEnt189_F1_4.jpg
※ クロス集計の Excel 出力例?は、過去記事 クロス集計のExcel出力 にもあります。

列を増やすクロス集計最終行に合計を付加したクエリ「QT3」
(前述した、クロス集計の、発展その1・発展その2の複合バージョン)
それの変形「QT4」
この辺りは、掲示板を見ていただければと・・・・

クロス集計をフォーム表示する際の1案
hatena さん記事 帳票フォームで表示項目が多いとき、ページ切り替えで を使ったフォーム「F2」
kEnt189_F2_1.jpg  kEnt189_F2_2.jpg  kEnt189_F2_3.jpg
そして、「F2」を作るまでに使った、標準モジュール「Module1」、フォーム「F_TAB」「F_部品」

これらについて、以降記述していきます。
続きを読んでみようかな ---≫

2014/01/04

Category: サンプルかな

TB: --  /  CM: 0

top △

Excelへの出力 まとめ(シーズン1) 


Excelへの直出力は、過去記事でいくつか取り上げていましたが、チョッとこの辺で・・・
まとめ的なものを書いておこうかと

直に出力する際に、Excel の書き方で覚えておいた方が良いものを私流に挙げるとすると
・ CopyFromRecordset ★
・ Offset ★
・ Resize ★
・ FormulaR1C1 ★
・ NumberFormatLocal ★
・ Borders ★
・ Visible / SaveAs / DisplayAlerts ★
ここからは、必要に応じて
・ Interior.ColorIndex / Font.ColorIndex ★
・ HorizontalAlignment / VerticalAlignment ★
・ CurrentRegion / UsedRange / SpecialCells
・ ColumnWidth / RowHeight / AutoFit
・ EntireColumn / EntireRow
・ WorksheetFunction.Transpose
・ Merge / Insert / Delete
・ FormatConditions
・ Locked / Protect ★
・ Version ★
・ ・・・

今回は上記 ★ を使ったものになります。
出力指定用のフォームは以下のようになってます。

kEnt188D  kEnt188  kEnt188_2000

※ 右側 2000 では、オプションボタンのラベルがズレちゃいますね
 (動作自体はまともですが・・・ 2007 → 2000 変換後の注意箇所ですね)

「支店」を選択してから、「Excel出力」をクリックすると、
アクセスファイルと同じところに「kEnt188.xls」を作成します。

kEnt188Excel1  kEnt188Excel2

※ 常に上書きしますが、上書きに失敗すると作ったものを表示します。
 それをどうするかは、操作者次第という事で・・・・

※ 連続で出力を確認したい場合、出来上がった「kEnt188.xls」を表示してから、
 いろいろと出力指定してみます。
 すると、表示するだけになるので・・・できたものをいちいち開いて確認・・・の手間が省けます。

※ DoCmd.TransferSpreadsheet acExport っていう方法もあると思いますが
・シート名はクエリ名になる
・余分な列以外の部分はそのまま
 前回出力後、余分な列部分にメモ書きした・・・とか
 その部分もきれいにしてから・・・(シートまるごと綺麗にしてから)・・・ってできないみたい
・余計な情報は付けれない
・罫線引いたり、色付けたり・・・ってできないみたい
・計算式の埋め込みは、できないよね

という事で、私は直に出力する事を良くするんですね・・・・
続きを読んでみようかな ---≫

2013/12/14

Category: サンプルかな

TB: --  /  CM: 0

top △


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。