<Excel 隣のシートを参照して逃げる>
こんにちは、 メルマガ発行中の三流プログラマーKen3です。 今回は、 意外な解決方法のメールを貰ったので、 チョット発行してみます。 いつものセリフで、そんなたいしたことじゃないので今回もご安心を。 /* * 1. いつもの前置き */ 前回の Excel セルに名前を付けて使用する で、 セルに名前を付けて、 Sub Macro1() Range("単価") = 20 End Sub とか使えるよ、使ってね。 と やりました。 応用すると、変更の少ないプログラム書けるよ なんて言ってましたね。 In message "[VBAで楽しく No.013] - Excel セルに名前を付けてみる", >AccessからExcelファイルを開いて、データをセット >セット位置は、 >ID・・・・・・セルB4 >Name・・・・・セルC4 >Address ・・・セルB6 >TEL ・・・・・セルD7 >にセットする。 詳細は、 /vba/backno/vba013.html から参照可能です。 In message "[VBAで楽しく No.013] - Excel セルに名前を付けてみる", >一行目にタイトル行を追加したい >と >客先から依頼が来ました。 > >そしたら、アナタの修正手順は?どんな感じですか? > >Excel TYPE.xlsを開いて、一行挿入して、タイトル入力後に上書き保存、 >Access側のセット処理は、 > oApp.Range("B4").Value = Me![ID] > oApp.Range("C4").Value = Me![Name] > oApp.Range("B6").Value = Me![Address] > oApp.Range("D7").Value = Me![TEL] >を > oApp.Range("B5").Value = Me![ID] > oApp.Range("C5").Value = Me![Name] > oApp.Range("B7").Value = Me![Address] > oApp.Range("D8").Value = Me![TEL] >と >セット位置を+1すれば修正完了でしょ。 >チョロイ修正でしたね。 上記の単純にAccess側で、データセットのセル位置を修正する方法 と 下記のExcel側でセルに名前を付けておき、Access側は無修正 勝手にExcelファイルを自由に修正できるよ。 In message "[VBAで楽しく No.013] - Excel セルに名前を付けてみる", >Excelでセルに名前を付けてると、 >一行挿入しても、名前の位置は相対的に移動するので、 >Access側の > '*2 Range(セルに付けた名前).Value ="XXXX" でデータをセットする > oApp.Range("ID").Value = Me![ID] > oApp.Range("氏名").Value = Me![Name] > oApp.Range("住所").Value = Me![Address] > oApp.Range("電話番号").Value = Me![TEL] >は、変更無しでそのままでOKなんですよ。(これホント!) なんて、書いてました。 /* * 2.ある読者から意外な方法のメールをいただく。 */ Access側は無修正 勝手にExcelファイルを自由に修正できるよ。 に対して、 ある読者から意外な方法のメールをいただきました。 なんて、いつものようにヒッパッタケド、 たぶんみんな知ってる方法で、 シートを隣にコピーして、 タイトルやフォーマットを変更する。 変更された位置に隣の元シートを参照する式を入れる。 =Sheet1!$B$4 みたいに、隣を参照する。 このファイルを保存して次回から使うとOKなんだってさ。 (テストファイルどうもです、参考になりました、盲点?かなぁ。 あと、メルマガ上でお礼を言われると恥ずかしいかな?それともうれしいかなぁ?) へぇ〜 この方法でも、 Access側が、B4にデータをセットしても、 隣から=Sheet1!$B$4と参照するからOKなんですね。 *まぁ、必要無いシートが残ってしまうけどね。(最後の抵抗、、、) データの流れは、 Accessでボタンが押される。 フォームの値を開いたExcelシートB4にセットされる。 と、同時に隣のシートで=Sheet1!$B$4と参照するから なるほどねぇ、これもプログラムを修正しない手かぁ。 この方法を送ってくれた 自称三流事務員さんは、 Excelで作業をしていると、 A社向けフォーマット、B社向け・・・F社向け と 同じ項目を違う書式で印刷しているので、 =シート!セル番地(=Sheet1!$B$4) でいつも小細工してるんだって。 すごい、使える一流事務員さんだよ じなくって、 Excelの豊富な機能を使って工夫して処理することも重要かなぁ。。。 と ふと思いました。 掲示板 : http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi やメールで気軽に意見やこんな方法など書いてくれるとうれしいです *何も出ないけど(笑)、中にはキビシイ書き込みも掲示板にあったけど、 がんばってやっていきますか。 /* * 3.勝手にプログラムの話へ */ 今までの流れをふまえ、プログラム系の話に強引に持って行く。 Accessフォームの値をExcelにセットする 処理を少し工夫して下記のようにしてみる。 In message "[VBAで楽しく No.013] - Excel セルに名前を付けてみる", >AccessからExcelファイルを開いて、データをセット >セット位置は、 >ID・・・・・・セルB4 >Name・・・・・セルC4 >Address ・・・セルB6 >TEL ・・・・・セルD7 >にセットする。 これを、 ID・・・・・・シート名DATAのセルA1番地 Name・・・・・シート名DATAのセルA2番地 Address ・・・シート名DATAのセルA3番地 TEL ・・・・・シート名DATAのセルA4番地 に変更する。 Excel側では、実際の表を =DATA!A1 =DATA!A2 =DATA!A3 =DATA!A4 と参照設定して表を作成する。 これなら、Accessからのデータセット処理も変更無く、 Excel側では自由にフォーマットが作成でき、 また、複数のXX社向けフォーマットにも対応可能となる。 客先からフォーマット変更を頼まれても、 イヤな顔をしないで、対応できますね。 (おいおい、それは別問題でどんな時もイヤな顔するのはマズイって) また、客先の人が少しできる人なら、 データはAccessからセットされるので、 自由にシートを追加して、活用して下さい。 なんて、少しカッコつけた会話が可能かなぁ。 /* * 4.終わりの挨拶 */ 今回は、Excel使いの事務員さんから 別な角度のメールをいただいたので、 少し書いてみました。 プログラム同様、いろいろな方法があるんだなぁ と 思いました。 拾い読みして、 1つでも何かの参考となれば幸いです。 発想力を磨こうとあらためて思った、三流プログラマーKen3でした。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]