カテゴリー: VisualBasicApplication

  • [vba]EDIソフト開発でIT経費を節約・・・

    毎日、卸業の真夏のお盆商戦を戦いながら、通販で御中元商戦をこなし、空いた時間にAccessとモバイルアプリの改良改造。

    体力気力が底をついたタイミングで、軽減税率対応プログラムの検証の仕事も・・・・

    休む暇もなく、近づいてきたのが次のXディ!?

    得意先が導入する新EDI対応サービスのテスト日!

    ケチな私、EDI対応ソフトはこれまで全て夜と休日に独学プログラミングで自作。
    だからIT外注費ゼロ!

    でも、今回は忙し過ぎて自信喪失
    猛暑の中の出荷作業で体力を消耗し過ぎたのかな?
    それともこれが老い・・・

    とにかくEDIソフト完成なせないと・・・
    取り合えず今日、最初の1歩「テーブル作り」を始めました。

    こんなスピードでテスト日に間に合うのか?

    EDIソフト開発でIT経費を節約・・・



    EDI対応ソフト、外注すると幾らかな?
    いい加減、何もかも1人でするのに限界が来てるみたい。

    10歳若ければ数日の徹夜でソフト完成させるんだが・・・・

    まぁ、何とかなるかな?
    これまで、何とかしてきたみたいに・・・
    出来なくなったら引退ね!

    今日も1人で残業(疲れた)

    ライバル卸はどう対応してるのかな?

  • [vba覚書]ファイルの有無を確認し削除(dirしてkill)

    Access VBAで、ファイルの有無を調べ、存在すれば削除するスクリプトを通販管理用Accessプログラムに追加!

    WEBから同名受注ファイルを何度もダウンロードするとWindows OSが括弧付き数字を付与し別名保存。

    C:\Users\僕\Downloads\orderlist.csv
    C:\Users\僕\Downloads\orderlist(1).csv
    C:\Users\僕\Downloads\orderlist(2).csv
    C:\Users\僕\Downloads\orderlist(3).csv
    C:\Users\僕\Downloads\orderlist(x).csv

    その為、Downloadフォルダーに括弧数字付きファイルがたくさん出来ちゃいます!
    そのファイルを削除するスクリプトを作りました。

    VBA覚書:DIRして削除(kill)

    [vb] Private Sub btnkill_Click()

    If Me![opt確認] = True Then
    ‘MsgBox "START"
    Me![opt確認] = False
    Else
    Exit Sub
    End If

    Dim myDIR As String
    Dim myFILE1 As String
    Dim i As Integer
    Dim Mycount As Integer

    Mycount = 0

    myDIR = "C:\Users\ホームディレクトリ\Downloads\"
    myFILE1 = myDIR & "orderlist.csv"

    If Dir(myFILE1) <> "" Then
    Kill myFILE1
    Mycount = Mycount + 1

    End If

    For i = 0 To 9
    myFILE1 = myDIR & "orderlist(" & i & ").csv"

    If Dir(myFILE1) <> "" Then
    ‘ MsgBox myFILE1 & " は存在します"
    Kill myFILE1
    Mycount = Mycount + 1
    End If
    Next i

    MsgBox Mycount & "個のファイルを削除しました"
    End Sub
    [/vb]

  • [お中元商戦]この夏もまた形部商事は安い客!請求額133円

    お中元商戦ど真ん中、同業者のみなさんシンドイ(=徳島弁で疲労困憊)ですか?

    私、かなりシンドイ
    ちょっと、やばいです!
    (倒れたら後よろしく)

    そんな中、Googleさんから請求書が届きました(ドキ!)
    2019年お中元商戦ど真ん中!今回のGoogle請求書も超貧相な請求額!


    請求額:133円!

    しかも、お試し期間中で最終請求額0円

    さすが形部商事、いい感じでゴミのような利用料!

    請求先クレジットカードが僕個人のものなので、ほっと一息です


    中元・御歳暮商戦、ライバルはどんな飛び道具(=業務効率化システム)を持っているのかな?

    この時期、私

    毎晩、こんな一覧表と格闘する日々

    X軸が商品一覧表、Y軸がお届け先リスト
    201711とうとう来た、いつものエクセルファイル


    貧乏な形部商事、プログラムの外注が出来ないので自作VBAプログラムを開発!
    EXCELの注文明細をRecordset化しVBAで解析、売上計上用固定長ファイルを生成しています。

    ちなみに、注文1000行の売上計上を手入力するのに何日かかると思います?

    答えは、知らない!

    半日(=200~300行入力)で、オペレーターがブチ切れ(=怒り出し)入力を止めてしまう!

    これで悟ったのは、

    注文が300行を超える場合、人に頼れない!

    売上データ生成プログラムを作るしかない!

    開発当初の2,3年は売上計上プログラムの開発・改良に取り組み。
    機能安定後は、配送効率化用「配送先分布マップ生成」プログラムを開発・改良中

    今年が11年目かな・・

    この分布地図生成プログラムに必須なのがGoogleさんの格安サービス

    下は、Google Geocode APIを使った「住所→緯度経度変換」
    プラス「Static Maps APIと使う地図HTMLファイル生成」mdbプログラム。
    僕の最強の相棒:注文EXCELを解析・請求・配送地図生成プログラム


    そして今年2019年お中元商戦も、無事売上伝票と配送先地図ができました。
    2019年お中元マップが無事に出ました!



    228箇所の住所→緯度経度変換、プラス37地図作成で133円なら安い経費です!

    Google様、ありがとうございます。
    あなたは、中小企業の守り神!


    この時期、商売繁盛を願い、
    僕のモニター両サイドに盛り塩してるんですよ

    ライバル達も、こんな感じのプログラム、内製してるのかな?

  • [it]Accessのアイコンが変わった!(ホッと一息)

    最近、MS-OFFICEのアイコンが変わったの気付いてました!?

    2018年11月、マイクロソフトがMS-OFFICEのアイコンを刷新すると発表しました。

    [Microsoft Officeのアイコンデザインが刷新される–GIGAZIEN]
    新アイコンはこんな感じ!
    MS-OFFICE新アイコン発行!


    僕、このニュースを見て

    が~ん、大・大・大ショック!

    理由分かります?

    MS-Accessのアイコンが無いんですよ!

    例え、Office365の記事としてもAccessのアイコンも新しくなるはずだから一緒に発表されるはず!(では?)

    もしかして、MS-Access無くなるの?
    と、この半年、心配で心配で・・・・

    独学Accessプログラマーの私、苦労してVBAを勉強。
    多種多様の物件ごとに専用プログラムを百個以上開発してきました。

    僕にとってもっとも有能な相棒!
    こいつが無ければ、徹夜で売上伝票を手入力する
    夜が何十回もあったはず!

    まぁ、そんな物件、Access無しで受注しませんが・・・・

    田舎の零細卸問屋、MS-Accessのおかげで業務の幅が広がってます

    リボンが大嫌いで長く使い続けた最強のバージョンMS-Access2003アイコンと嫌々インストールしたAccess2016アイコン
    MS-Access2003と2016のアイコン


    先行してアイコンが一新されたWORD・EXCEL・POWERPOINT
    心配してましたが、2ヶ月遅れでMS-Access2016のアイコンも数日前新しくなりました(良かった)
    MS-OOFICE新アイコン

    MS-Access、まだ続きそう・・・

    ホッと一息

    現在、新EDIシステムを採用すると告知されてる得意先が2件

    システム屋に外注すれば百万円オーバー必至!

    IT経費節約するには、また寝る間を削って対応ソフトを作らねば・・・・・・・

    ちょっと体力に限界を感じてる、今日このごろ

    IT投資を抑える唯一の方法は

    死ぬまで勉強と努力ですよね!
    (まじ、しんどいよ)

  • [vba]Accessソフト「GoodMorning for SQL」作成とテスト

    今どきの企業なら必ず有るのがSQLサーバ。

    御社SQLサーバの目覚めはどうですか!?

    形部商事のSQLは目覚めがすごく悪いんです!
    朝イチ、サーバ起動直後からの数分間が特に遅い!

    システム屋さん曰く

    朝イチはキャッシュが空っぽ!
    SQLサーバへの問い合わせを何度かすれば
    キャッシュがたまりスピードアップします。

    この対策用にシステム屋さんが作ってくれたのが「GoodMoring.exe」
    SQLサーバへランダム参照しキャッシュを貯めるプログラム。

    実行すると受注取込みが少しスピードアップしたかな!?
    売上入力は遅いまま・・・・

    という事で、自分でMS-Accessプログラム「GoodMorning4SQL.accdb」を作ってみました。

    そして今日、朝イチでテスト!

    作ったAccessプログラムがこれ
    20190321MS-Accessソフト「GoodMonring4SQL」作成とテスト


    やってることは超シンプル

    キャッシュに貯めておきたいデータに
    SELECT * FROM WHERE すればいいんでしょ!

    ODBC接続の「商品マスタ」「得意先マスタ」「受注テーブル」「売上テーブル」を開き
    対象レコードをDebug.Printでイミディエントウィンドに意味なく書かせるだけ!
    20190321MS-Accessソフト「GoodMonringSQL」作成とテスト

    これでスピードアップするかな?

    朝イチはSQLサーバの反応が悪く最初の2回はTimeoutエラー!!!
    20190321MS-Accessソフト「GoodMonringSQL」作成とテスト


    テスト内容:

    1. 現状把握:朝イチ、受注データ(5行分)を呼び出すのに1分超!(スゲー遅い)
    2. 実行:最初2回の実行はTimeoutエラー
    3. 実行:3回目で、4分後に正常終了。
    4. 効果確認:受注データ(8行分)を呼び出すと3秒。早い!

    僕の「GoodMoring for SQL」効果あるみたい

    余談ですが、「GoofMorning4SQL.accdb」のヒントになったのが、これ
    ハンディーターミナルアプリ用「マスタデータbulk importファイル生成」プログラム。
    20190321MS-Accessソフト「GoodMonringSQL」作成とテスト

    Android「ハンディーターミナルアプリ」用
    SQLマスターファイル生成は、とても複雑で煩雑!

    SQLサーバへ接続

    1. 最新単品別売上データのBulk importファイルを生成
    2. 最新商品マスタのBulk importファイルを生成。
    3. 最新得意先マスタのBulk importファイルを生成。
    4. 全ファイルをmax500レコードで小分保存後、UTF-8 Encode。
    5. zipにしてFTP

    max500レコードはSQLiteの仕様
    全ファイル約800個が完成するのに15分くらいかかります

    よく考えると、これ実行すれば、
    必要データ、キャッシュに貯まるじゃん!

    試しに朝イチ実行すると、SQLサーバがスピードアップ!
    それからの数ヶ月、毎朝これを実行してます。

    でも、各ステップ用にボタンがたくさんあり、全部のボタンを押すのが超面倒!

    「GoofMorning4SQL.accdb」は、マスタファイル生成の仕組みを全部削除。
    ワンボタンで、単純に4つのテーブルを参照するだけ!

    明日から、これを使ってみよう
    たくさん押してたボタンが1つで済む

    後は、クライアントPC起動時に自動実行させる仕組みが欲しい。

    Windows10に、スタートアップフォルダって残っているのかな?
    accdbファイルってwindows「サービス」に登録出来たっけ?

    最初の2、3度は必ずエラーになる。
    指定時間ではなく起動後プラス1分・3分・5分・7分、間隔を開けて複数回の自動実行って設定出来るんだろうか?

  • [vba]「MSysDbが見つかりません」mdbファイルが壊れた!

    最近、零細卸問屋を苦しめるのがEDI発注管理システムのホスティングサービス。
    高額な構築・運営費が必要なEDIシステムをローカル小売店に月額利用料で使わせるIT屋のサービス。

    いろんな得意先が、いろんなEDIサービスに加入!
    その度毎に仕様が違うので、それに合わせて専用プログラムが必要になる。

    どれくらいだろう?
    EDI対応プログラムに約50万円xEDI導入得意先数=数百万円

    零細問屋はこんなお金出せないので、全部MS-Accessで自作。
    今のとこEDI関連でのシステム外注費は0円なんですよ!

    金曜日、そのプログラムの1つが壊れた!
    プログラム使用中に、外部メモリーの抜き差しでOSクラッシュ。
    再起動後、下記のメッセージが出てそれ以外何も出来なくなりました。

    mdbファイルが壊れた!金曜日は残業・・・・


    MSysDbが見つかりませんでした。
    オブジェクトが存在していること、名前やパスなが正しいことを確認してください。
    MSysDbがローカルオブジェクトでない場合は、ネットワークの接続を確認するか、サーバ管理者へ問い合わせてください。

    何をどうやっても直らない。

    残るは最後の手段のみ!
    空mdbファイルを作り、そこから
    壊れたmdbファイルのtableをインポート。

    しかし、ガーンこの方法でもダメでした!
    万策尽きました

    mdbファイルが壊れた!金曜日は残業・・・・


    みんなが花金(=死語)なのに、僕は事務所でデータ復旧か・・・・
    「新規EDI受信ファイル」「2週間前のバックアップ」「直近2週間売上データ」の3つを並べEDIデータを手作りで最新状態に・・・・(疲れた)

    IT投資節約って、マジしんどいです。

    ちなみにこの投稿、FileMaker屋さんが喜びそうな内容。
    ネット上にFileMaker屋が書いたMS-Accessの悪口
    「mdbファイルがよく壊れ信頼性が無い」をよく見かけます。
    確かにmdbファイルは壊れやすい。
    でも、両方の開発経験があるのではっきり言い切れます。
    MS-AccessがFileMakerの何十倍も優れています。
    FileMakerでは、他社システムとの連携プログラムの細かな作り込みは出来ません。

  • [vba覚書]mdbをaccdbへ変換したら動かない!

    MS-Accessのリボンインターフェイスが大嫌いで頑なにAccess2003を使い続けた私。
    でも、「2017年」「2018年」2度のOFFICE UPDATEで自作mdbプログラムが動かなくなり、渋々Access2016へアップグレード。

    何がどこにあるかサッパリ分からないリボンインターフェイスと大きく変わった開発画面に毎日苦戦
    アップグレード後、開発スピードは半分以下!

    「いつかAccess2003に戻すかも?」と思い
    使うファイルはAccess2000-2003用mdbファイルのままでした。

    よく壊れるmdbファイル。
    先日、15年以上機能拡張を続け巨大化した僕の相棒「katabe日常業務.mdb」の追加開発中にファイルが壊れ数日分のプログラムが消えちゃいました!

    バックアップファイルで開発を再開したが・・・・

    やっぱmdb怖いな!
    最新フォーマットaccdbならきっと改良され
    mdbよりは壊れにくいはず!

    そこで「いつかAccess2003へ戻るかも」を諦めaccdbへ変換!
    20190209mdbをaccdbへ変換したら動かなくなった!


    でも、変換後いきなりエラー!

    型が一致しません

    20190209mdbをaccdbへ変換したら動かなくなった!


    原因をGoogle検索、見つけたのが下のページ。
    [OpenRecordset メソッドを実行すると “型が一致しません” というエラー メッセージが表示される–microsoft]

    原因
    Data Access Objects (DAO) ライブラリと ActiveX Data Objects (ADO) ライブラリの両方に対する参照がプロジェクトに含まれている場合、Recordset オブジェクトを宣言すると、複数の Recordset エントリが一覧に表示されることがあります。このエラーは、どちらの Recordset エントリを一覧から選択するかに関係なく、[参照設定] ダイアログ ボックスで ADO ライブラリの優先順位を DAO ライブラリよりも高くした場合に発生します。

    解決方法
    DAO と ADO の両方の Recordset オブジェクトを参照および使用する必要がある場合は、各オブジェクトを次のように明示的に宣言します。
    Dim adoRS As ADODB.Recordset
    Dim daoRS As DAO.Recordset

    僕のプログラムの場合

    DAO.を書き足すとエラーが消えました。
    なるほど、新しくすると新しいエラーと遭遇するのね!

    長い期間、日々新たな機能を追加し続けたこのファイル!
    初期はDAOで開発し、途中からADOに・・・
    使い回しが利く機能は、昔のDAOプログラムをコピペし改造

    このAccessプログラム、新旧混ざり合う混濁状態なんです。

  • [vba]Access2003を諦めて1週間・・・・

    新MS-Officeのリボンインターフェイスが大嫌いで、1人不買運動を続けていた私。

    アイコン位置がコロコロ変わるリボンにどうしても慣れることが出来ません。

    これまで、自宅PCのAccess2016でトライした新規開発はすべて途中ギブアップ!
    常に、会社PCのAccess2003で開発し直し、Access2016は週末自宅での手直に使うくらい。

    でも、2017年春のWindows10 updateでAccess2003からExcel xlsファイルが読み込めなくなり自作プログラムの一部機能が使えなくなった。
    そして、2018年春のWindows10 updateでExcel2003自体が動かなくなった!

    僕、負けました。

    マイクロソフトの嫌がらせに屈し、会社PCにもOffice2016をインストール。

    Office2003をアンインストールせずにOffice2016を入れると2バージョンが共存してるぞ!
    もしかして、1台のパソコンでAccess2003で開発、Access2016で利用することが出来るのかな?
    Office2016を使い始めて1週間


    試しに、使用中のAccess2003プログラムをAccess2003で動かすと・・
    あれ、エラーで動かない!
    Access2016なら動く!
    んんん~、Access2003はかなり不安定で使い続けるのは無理みたい・・・


    私はただ使いにくいリボンを止めアイコンに戻して欲しいだけなんです。

    さてと、Access2016で挑む新規VBA開発、僕は完成させることが出来るんだろうか・・・・・

    よく壊れたデータベースエンジン「jet」
    Access2016の新データベース「ACE=Access Connectivity Engine」にはとても興味がある。
    ACEの勉強しないとな・・・・

    でも、なんか面倒そう・・・・
    [Jet / ACE エンジン —-DXR165の備忘録 ]

  • [excel]Windows10 update2018でExcel2003が壊れた!

    2018年春のWindows10 updateを当てたらExcel2003が壊れちゃった!
    ネット検索すると、この不具合は私だけではないみたい。
    行列選択、数値入力など普通に使ってるだけで突然クラッシュしてしまう!

    201806Windows10 update2018でexcel2003がクラッシュ!


    掲示板のベストアンサーは、

    金ケチってサポート切れの古いバージョン使い続けるな!
    新しいの買え

    私が2003を使い続けてるのはリボンインターフェイスが嫌いだから。
    リボンインターフェイスは、間違ってると思っているから。
    数年でそれに気付きマイクロソフトさんがリボンを止めると思っていたから。
    でも、リボン採用の2007年から11年経つのに止める気配がない!

    僕の1人不買運動、何の意味もなかったのね!
    いよいよ、嫌でもリボンを使わないといけない状況。

    [使いこなし=慣れ=手抜き Office のリボンメニューが不評な理由]


    個人的に、1年で一番忙しいこのタイミングでAccess2003の不具合に続きExcel2003まで壊れるなんて・・・

    この時期、家に帰るのは22時近く(疲れたよ)
    通常営業が終わり、みんなが帰ってから僕だけ宿題。

    得意先から送られてくるX軸:商品情報・Y軸:お届先情報
    「お中元申込みマトリクスEXCEL」との格闘

    201711とうとう来た、いつものエクセルファイル


    複数ファイルのExcelデータ(総行数400行超)を
    自作「中元歳暮管理Accessプログラム」用に項目並べ替え、そしてインポート。

    マトリクス解析後の注文レコード数は1000行超

    この作業中、頻繁にExcelがクラッシュ!
    全然、作業が進まない!
    家にも帰れない!

    Excel2003環境を諦め、Excel2016マシンで作業しAccessプログラムにインポート。
    先週末、ようやく全ての注文ファイルの取込作業が完了!

    500枚の売上伝票、ピッキングリスト、発注表、請求書、地図の作成作業が終わりました。

    やれやれ、今年はExcel2003のクラッシュに泣かされた

    来週から家に早めに帰れるかな?
    お中元商戦IT化

    クライアントからお褒めの言葉をいただきます。

    短期間でこれだけの大量注文を依頼できる徳島の卸問屋は、
    形部商事だけなんですよ!ってさ

    これが私の励みです。

    さてと、お歳暮シーズンまでにリボンデビューしないとね!(でも嫌)
    リボンは間違ってる!間違ってるものに自分を合わせるのは嫌!

  • [vba]カタカナは全角、英数字は半角にしたい

    ハンディーターミナルの商品名の評判が悪い!

    StrConv(商品名,vbNarrow)関数で、半角に出来る文字をすべて半角化!

    そうした理由は「UCC」「AGF」「1kg」「250ml」など、すべて半角に統一させた方が文字列検索しやすいと思ったから。

    でも、問題が・・・・
    カタカナも半角になっちゃいます!
    「ヤマク食品」が「ヤマク食品」、「ハウス食品」が「ハウス食品」

    Android日本語IMEは、半角カタカナが出てこない!
    単語候補に表れたとしても、スクロールの下の方・・・

    で、作ったのがこのスクリプト「カタカナは全角、英数字は半角にする」

    1:まずは、すべてを全角にする。
    2:1文字ごとのASCIIコードを調べる
    3:全角数字、全角アルファベットであればStrConv(1文字, vbNarrow)で半角変換
    それ以外は、素通り

    完成するまで、誰も居ない事務所で2時間・・・・
    家に帰りたいよ!

    [vb] myNAME = StrConv(商品名, vbWide)

    For i = 1 To Len(myNAME)

    tmpTEXT = Mid(myNAME, i, 1)

    If Asc(tmpTEXT) <= -32127 And Asc(tmpTEXT) <= -32102 Then
    ‘大文字全角
    tmpKANA = tmpKANA & StrConv(tmpTEXT, vbNarrow)
    ElseIf Asc(tmpTEXT) <= -32160 And Asc(tmpTEXT) <= -32135 Then
    ‘小文字全角
    tmpKANA = tmpKANA & StrConv(tmpTEXT, vbNarrow)
    ElseIf Asc(tmpTEXT) <= -32177 And Asc(tmpTEXT) <= -32168 Then
    ‘全角数字
    tmpKANA = tmpKANA & StrConv(tmpTEXT, vbNarrow)
    Else
    tmpKANA = tmpKANA & tmpTEXT

    End If

    Next

    myNAME = tmpKANA
    [/vb]

    実は今日、「ハンディの商品名が変だ!変だ!」とクレームの嵐!

    昨夜ネットで拾った「カタカナ半角→全角」スクリプトを商品マスタbulk impotプログラムにコピペしたのが原因。

    そのスクリプト、最終文字がカタカナかカタカナ以外で結果が変わる不思議なプログラムみたい!

    やっぱ、パクリはデメですね!

  • [vba]EDI出荷検品端末を世代交代!

    EDI出荷検品端末の世代交代が無事完了!

    最近、零細卸問屋を苦しめるのが小売店が手軽に始められるEDIホスティングサービス!?

    システム屋ごとに仕様が違うので、契約した得意先の数だけEDI対応プログラムが必要。
    それを外注するとシステム開発費がとんでもない金額になっちゃう!

    で、お金のない形部商事は全部MS-Accessで自作。

    だからシステム開発費はゼロ円

    ただ、僕の睡眠時間が減るだけ

    僕のプログラムは、操作ボタンを大きくしタッチパネルで操作する”なんちゃってタブレット”プログラム。

    5年使ったWindows7「Acer ICONIAタブレットPC W500」の調子が悪くなり買い替えを検討中、他の部門で使われていないタブレットPCを発見!

    それを没収しEDI用にセットアップしました。
    10インチから8インチに画面が小さくなったので、すべての操作ボタンをより大きくリサイズするのにちょっと手こずりました!

    20180507EDI出荷検品システムをリニューアル


    ほんとは10インチタブレットが欲しかったのに・・・
    使いもしないものを考えなしに買うやつ、ほんと困り者

  • [vba覚書]文字列の有無はInStr

    vbaで任意文字列の有無を調べる方法

    [vb]

    If InStr(Me![品名], "大野") <> 0 And InStr(Me![品名], "卓上") <> 0 Then
    Me![Yamato荷扱1] = "ワレ物注意"
    Me![Yamato荷扱2] = "天地無用"
    End If

    If InStr(Me![品名], "大野") <> 0 And InStr(Me![品名], "ぱりぱり") <> 0 Then
    Me![Yamato荷扱1] = "ワレ物注意"
    End If

    If InStr(Me![品名], "そうめん") <> 0 Or InStr(Me![品名], "素麺") <> 0 Then
    Me![Yamato荷扱1] = "ワレ物注意"
    Me![Yamato荷扱2] = "水濡厳禁"
    End If

    [/vb]

    上のスクリプト、通販の受注商品でヤマト運輸の送状「取扱注意1と2」の記入内容を切替えるもの。

    文字列の有無はInStr

    2018年4月1日、宅配料金が大幅値上げ!
    4月から「ヤマト運輸」に乗り換えました。

    で、始めたのが直営ショップ「徳島オンラインショップ」用に作った送付状印刷vbaプログラムのカスタマイズ。
    元「ゆうパック」用プログラムに、ヤマト運輸送付状印刷ソフト「B2」CVSファイル生成機能を追加。

    商品名に
    「大野 ぱりぱり」が含まれていれば「ワレ物注意」
    「大野 卓上のり」が含まれれば「ワレ物注意」「天地無用」
    「そうめん」「素麺」の場合、「ワレ物注意」「水濡注意」


    InStr文を、必要な数だけifで並べました。(もっとスマートな方法あるのかな?)

    我ながら今回の追加機能、すごく便利!
    「指定時間」「代引」「取扱注意」を処理しながら複数枚の送状印字がスイスイ!
    MS-Accessプログラム無しのネットショップ運営、僕には想像出来な・・・・

    宅配会社を変えるみたいな時、ライバル店はどうしてるんだろう?
    ライバルもみんな自作vbaプログラムなのかな?
    それとも、あの使いにくいFileMaker?
    プログラムを外注すると粗利が吹っ飛んでしまうよな・・・
    大手はC#?

  • [vba]チョコバットとODBCエラーの関係

    昭和レトロな「オフコン」から平成風クライアントサーバ システムに切替えて3か月。

    サーバ・作業PC間のデータ連携が変わった!
    「サーバテーブルがODBC経由でAccessのローカルテーブルと同じ様に扱え、とても便利!」
    と言いたいとこですが・・・・・

    が~ん、ODBCエラーで僕のAccessが動かないよ!

    ODBCエラー
    「少数を丸めるために、データを切り捨てらえました。」

    ローカルテーブルへの追加クエリーを実行すると、このエラー!
    20180206ODBCエラーで動かない!

    データシートビューで表示させるだけでもエラー!


    「SQL Access ODBC エラー 少数を丸めるために」でGoogle検索してみると・・・

    [「少数を丸めたために、データが切り捨てられました」回避する方法—-MSコミュニティ]

    MS-Accessでは、
    小数点以下7桁以上のレコードを扱えない

    データシートビューで表示させると「#エラー」行がまばらに存在する!
    20180206ODBCエラーで動かない!

    あれ!?
    よく見るとエラー行は全て、2018年1月下旬に完成したばかりの僕の新プログラムで自動生成させたレコードばかり!

    ぼくの新プログラムは
    「通販店 (=徳島オンラインショップ) の売上を基幹業務システムに一括売上登録する」為の固定長ファイル生成システム

    エラー原因(=小数点以下7桁以上)の数値を探してみると・・・

    あぁ、見つけた!
    犯人は「チョコバット」だ!
    チョコバット好評販売中


    チョコバット60本入: 1,559円 ÷ 60本 =
    1個単価:25.398333333333333・・・・

    システム屋さんに2つのことをお願い
    1)新規登録データの納価は小数第3位以下は四捨五入。
    2)保存済み納価も小数第3位以下で四捨五入

    で、作ってもらったのがこのupdate文

    [sql]update 売上明細 set 納価 = round(納価, 3)[/sql]

    これを実行し、無事エラーが無くなりました!

    やれやれ、ホッとしました。

    独学MS-Accessプログラマーにとって、やっぱ本物「SQLサーバ」は難しい・・・・

    問題解決後、頭が冷静になったら別の解決案も浮かんだ!

    納価の桁数を固定したVIEWを作ってもよかったのね!

    MSコミュニティを読み直すとそう書いてました。
    パニクると目の前に答えがあっても気付けないんですね!

  • [vba覚書]ファイルを共有フォルダへコピーする

    VBAからネットワーク共有ホルダーへファイルをコピーしテキストエディターで開く

    まず、VBAエディタの「ツール」>「参照設定」画面で「Microsoft Script Runtime」を追加
    20180117FileSystemObjectを使うにはMicrosoft Script Runtimeを登録


    VBAスクリプトはこんな感じ
    [vb] Dim FSO As New FileSystemObject

    Set FSO = CreateObject("Scripting.FileSystemObject")
    FSO.GetFile("c:\仕事フォルダ\ファイル名.txt").Copy "\255.255.255.255\共有フォルダ\固定長ファイル名.txt"
    Set FSO = Nothing

    Call Shell("notepad.exe \\255.255.255.255\共有フォルダ\ファイル名.txt", 1)
    [/vb]

  • [vba]が~ん、AccessMDBからxlsファイルが読めない

    2017年10月11日15時頃、私のWindows10パソコンの画面に
    「更新プログラムを適応中・・・・」メッセージが表れ勝手に再起動が始まった!

    で再起動後、悲劇が起きました!
    20年近く作り貯めた僕のAccessMDBプログラムが死んだ(=動かない)

    私はMS-Accessのリボンインターフェースが大キライ!
    何度か慣れようと我慢して使ってみたが、やっぱりダメ!
    使いにくくて、イライラが止まらなくなり、毎回発狂!

    その結果、私のMDBプログラムはみんなAccess2000か2003製なんです。

    出荷作業終了後、夜いつものように売上固定長ファイル生成MDBプログラムを起動。
    得意先から送られた注文EXCELファイルを読ませると・・・・あれ読まない!

    エラーメッセージ
    外部データベース ドライバ(1)で予期しないエラーが発生しました。

    何をどうしてもMDBからXLSファイルが開けない!

    20171011が~んWidnows10以上でAccess20KからExcel2Kへ接続出来なくなった!



    では作戦変更、試しにXLSファイルをtableとしてMDBにインポートさせると・・・・

    あれ、下のエラーで直接インポートも無理みたい!

    XLSの情報にアクセスできません。ファイルが存在し、形式が正しいことを確認して・・・

    古いながらもMS製EXCELファイルを「形式が正しいことを確認してください」だって!

    20171011が~んWidnows10以上でAccess20KからExcel2Kへ接続出来なくなった!


    今日の更新で、古い古いMDB2000形式ファイルとXLS2000形式ファイルはWindows10から見捨てられたみたいです!

    これからシステム移行用のプログラム変更、御歳暮注文EXCELの売上計上処理・・・・
    やることいっぱいあるのに、なんでこのタイミンでXLSファイルを読めなくするの・・・・(泣)

    するなら、その前にAccessのリボン止めてください!

  • [vba]MS Accessは、やっぱ便利!

    MS-Offeceで1番よく使うソフトはどれですか?
    きっとエクセル、それともワードかな?

    私は、断トツでAccessです
    Access,Excel,Word,PowerPointだと、6:1:0:3くらいの割合。

    とにかく、Accessはすごく便利で役に立つソフト!

    Access無しでは、形部商事は回りません

    それを最も実感するのが毎年6月、今頃なんです。
    私の1年で1番忙しい1ヶ月間。

    毎シーズン、この時期にクライアントから30超のEXCELファイルが届きます。

    縦軸が送付先、横軸が商品名の注文数マトリクス

    これを手作業で受注入力する作業は、慣れたオペレーターでも、入力とチェックだけで1週間以上掛かる重労働!

    第一、このボリュームのIT的土方仕事を日常業務にプラスでしてくれるスタッフは居ません。

    その為、零細企業オーナーは自分で何とかするしかない

    お中元商戦IT化


    ライバル卸店は、この手の注文をどうこなしてるのかな

    形部商事では、これ専用のAccessプログラムを作りました!

    注文数マトリクスを解析し受注レコードを生成。
    その明細テーブルを元に、仕入伝票、ピッキングリスト、請求書、封筒、宅配送状、オフコン用売上一括生成用固定長ファイル作成、そして配送マップを発行出来ます

    自作プログラムで1番役立ってる自信作
    このソフトにめちゃくちゃ助けられてます!

    お中元商戦IT化


    唯一の欠点は、気の利いた操作画面が無いこと
    6年前に作った初代バージョンを毎年改良し、安定化、多機能化は実現!

    でも、基本使うのは私だけなので、操作画面の作り込みはしていません!

    見た目は、永遠に未完成なスペインの何とか寺院のようなソフトです

    今年の6月も、事務所に居残りし、夜な夜な注文数マトリクスと格闘!

    で昨日、やっとのことで受信済み全ファイルの売上処理が終わりました。

    約900レコードで、伝票枚数だと170枚くらいかな!

    今年の中元配送プロジェクトも、Access君のおかげで無事に納品伝票が完成(バンザーイ)

    私の中では大きな達成感が有るんだけど.....

    卸店の本業は商品の配達。

    納品伝票完成は、スタート地点に立てただけのことか....

    さぁ、次は配達だ

     

    ヤバイ、今年はいつもよりかなり疲れてる!

    通販の注文が増えた為か、それともオ、オ、オ、オ、老

    求人の応募来ないかな.....

     

    私が倒れても売上処理が出来るよう、歳暮商戦までに誰でも使える操作画面の作り込みをしなければな.....

    でも、毎回例外処理が発生し裏画面の処理を100%必要としない操作画面がどうして作れないんです

    ここらが、未熟な独学プログラマーの限界点みたい。

  • [vba]MS-Accessのリボンが嫌い

    私、MS-Access大好き人間。

    プログラムを外注すると最低でも数十万円から・・・・
    「ならば自作できないか?」と始めたのがMS-Accessの勉強。

    それから20年、社内で使う小規模システムは全てAccess製の自作です。

    そんな僕の前に大きな壁が!
    それは、Accessのバージョンアップ。

    慣れたver.2000なら1時間で出来ることが、ver.2013だとリボンを探すだけで半時間。

    まったく作業が進まない!
    亀と自動車ぐらい速さが変わる!

    「それでも最新版に慣れねば!」と、会社は開発速度重視でver.2003。
    自宅PCにver.2013をインストールしました。

    それからは、んんん~

    週末プログラミングがまったくはかどらない・・・
    Access2013は、怒りを覚えるぐらい使い難い!

    例えば、Access2013でフォーム別名コピーってどうやるの?
    どこ探しても見つからないよ・・・・
    20170226Acces2013フォーム別名コピー

    何もかもでイライラする!

    必要なアイコンが見つからない!
    データベースビューが無い!
    ナビゲーションウィンドが見難い!(更新日でソートすら出来ない)
    ファイルメニューで画面全体が切替わることが嫌!(統一感のある操作画面にして欲しい)

    新操作画面が採用されたver.2007以降、毎年MS-Accessの人気が落ち続けている気がします。
    そう感じる理由は、本屋のMS-Access本の数。

    2000年ごろだと徳島県南の本屋でもMS-Access本が20種類くらいあり、初心者本から業務システム開発本まで充実してました。

    でも、最近見かけるのは初心者本が3,4冊だけ!
    業務開発本は皆無!
    MS-Accessでシステム開発する人、居なくなったの?

    まぁ、こんなに使い難いとまともな開発出来ないよな・・・・

    ちなみに、Amazonで最新MS-Access2016本を調べるとたった8冊!
    MS-Access2016本を調べるとたった8冊

    土曜日の朝、この投稿を書き始めた理由・・・
    それは、Access2013で開発を始めたがまったく作業がすすまないから!
    イライラして開発意欲が失せたのでここに愚痴を書きました。

    Hyper-VでWindows2000機を作りAccess2000で開発した方が1000倍早いよ!

    お願いマイクロソフト様、MS-Accessの操作画面をver.2003風に戻してください。Windows8の失敗で、Windows10をWindows7風に戻したように!

  • 【vba】7za.exeで複数ファイルを1個のzipファイル

    App Inventor製、自作ハンディーターミナルアプリ用に作った新マスタデータインポート機能の為に、bulk importデータ生成MS-Access VBAプログラム側も改良。

    [zip利用の新マスターインポート機能]

    40個のファイルを1個のZIPファイルに出来るコマンドラインプログラムが無いかGoogle検索。

    で見つかったのが7za
    [インストールしないでzipや7z圧縮ファイルを作る方法]

    ワイルドカードが使えるのでどんなにファイルがたくさん有ってもコマンド1行で実行出来る。

    MS-Access VBAからでも簡単に実行出来そうです。

    これをハンディーターミナルアプリ用bulk importファイル作成Access VBAに組み込めば新マスターインポート機能用ファイルも作れそう!

    [vb title=”使い方としては、こんな感じかな?”] c:\Temp>7za a master.zip .\master\*.txt

    7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
    Scanning

    Creating archive master.zip

    Compressing m1.txt
    Compressing m2.txt
    Compressing m3.txt

    Everything is Ok
    [/vb] [vb title=”このコマンドを、実際のbulk importファイル生成プログラムに実装”] Shell ("cmd.exe /K c:\katabe\7za.exe a c:\katabe\MASTER.zip c:\katabe\master\AImaster*.txt")
    [/vb]

    動いた!

    追記:
    実際のVBAプログラムへ追加すると、あっさりZIPファイルが出来ました!
    で、せっかくなので出来たZIPファイルをFTPサーバへputさせられないかと試行錯誤・・・
    でも、うまく動きませんでした。
    現在、Windows10のFTPコマンドの勉強中・・・・・

    [Windows7で動いてるこの仕組み、なぜか10では途中で止まる!]

  • 【vba】TAB・改行コードを取り除く

    「お中元商戦」真ん中!
    低空飛行が続くオンラインショップにも、最近ちょっと注文が増えてます 😆

    出荷作業で、とても役立ってるのが僕がMS-Accessで作った「ゆうパック・ヤマト運輸送状印刷」プログラム。

    注文詳細ページから、お届け先・送り主・商品名情報をコピー&ペーストすれば「ゆうパック元払」「ゆうパック代引」「ヤマト運輸元払」の送状が印刷出来るんです。

    でもこのソフト、たまに郵便番号の後半が消えちゃう不具合が有るんです!?
    (印字プレビューだとこんな感じ・・・・)
    タブ・改行コードを取り除く

    ちょっと時間が空いたので、このトラブルの原因追究!

    まず、注文詳細ページの郵便番号をコピー
    タブ・改行コードを取り除く

    そして、テキストエディターへ貼付け。
    これを何度か繰り返すと、たまに下図のような状態になることが判明。

    どうやら、マウスを郵便番号左隅より左へドラッグするとWEBページの制御文字(タブや改行)まで拾ってしまうようです!
    タブ・改行コードを取り除く

    で作ったのがこのVBAスクリプト

    実際に動かしてみると・・・・・、何かいい感じで動いてる!
    郵便番号に、改行+TAB記号が誤って混ざっても自動消去してくれてます!
    タブ・改行コードを取り除く

    これで問題解決!
    さぁ、これなら注文がいっぱい来てもガンガン出荷できるぞ!!

    後は、捌き切れない注文が来るだけなんだけどな・・・・・・

    ご注文、お待ちしています 😀

  • 【vba】MSXML2.DOMDocumentでエラー!!

    もうすぐ夏ですね!
    この時期、私の仕事が極端に増え、猛烈にストレスが貯まるんです!

    実際、今日の私は疲労の為かなり弱っています:-(

    その理由が、複数社から届く大量のドリンク注文のExcelデータ処理。
    縦軸がお届け先情報、横軸が商品リストのマトリクス表。

    この物件を受注した初年度の1ファイル目、取り合えず慣れた事務員に手入力を依頼。

    すると、1ファイル入力に丸一日!
    入力後、「こんな大変な仕事2度としたくない。今度やれと言うなら辞める」と怒られました!

    そこで作ったのが、Excelのマトリクス表をAccessのテーブルに変換するVBAプログラム。

    それ以降、1年に2回、夏冬にあるこの物件の売上データ作成担当は私です。

    複数社から届くExcelシートは、毎年微妙にレイアウトが変わるので、それに合わせてプログラム変更。
    私一人で1000行超の売上データを出荷作業の合間に作ってるんです:-(

    大変そうでしょう!?
    実際、大変なんですよ!

    一括データ生成プログラムってうまく動けばいいのですが、処理対象のExcelデータのレイアウトが毎回変わるので、ファイル毎にプログラム調整が必須。

    プログラムを書き間違えると、
    「商品名を別の列から」
    「お届け先を違う行から」
    「販売価格を別の行から」的な売上計上ミスが起きてしまいます!

    バグが有るまま売上データ1000行を一括生成してしまうと、間違い納品、間違い請求で大混乱!

    商品交換に追われ、請求し直し、そして信用を失っちゃいます。
    毎年この時期、胃痛がし、悪夢を見ます:-(

    で本題、初代プログラム完成から8年。
    追加機能も増やしながら毎年バージョンアップ。
    オフコン一括売上処理用固定長ファイル生成、発注表・ピッキングリスト・請求書・宅配送状印刷、そして配送先地図作成機能など・・・

    あると便利になる追加機能を作りこんできました。

    その中、僕のお気に入りが配送先地図作成機能!(不安定でエラー続発の機能なんですが・・)

    配送先地図作成機能

    実務でも好評で、配送先の場所・分布・商品体積の把握、未配送・配送済みの確認に使っています。
    配送先地図作成機能

    Google Static Maps APIを使ったこの機能、毎年初回の実行はエラーで必ず動かないんです!
    その理由は、突然変更されるGoogle Map APIの仕様。

    [Google Maps API ウェブ向け Static Maps API]

    で、また2016年にも止まりました!
    でも、今年のエラーは今までのものと違うぞ・・・・:-o

    MSXML2.DOMCocument:コンパイルエラー:ユーザー定義型は定義されていません。

    配送先地図作成機能

    やれやれ・・・では、いつものトラブル解消方法、Googleで「MSXML2.DOMCocument エラー」を検索!

    で、このページを見つけました。
    [MSXMLを使ったExcel VBAがWindows 8.1で動かない時の対処方法]

    Windows8.1からMSXML2.DOMCocumentが廃止されてv6.0用のDOMDocument60だけになったそうな・・・・
    僕のマシンはWindows10なので、確認すると確かにDOMDocument60以外すべて廃止されてます!

    配送先地図作成機能

    解決方法が分かったので早速プログラム変更

    「Dim doc As MSXML2.DOMDocument」を
    「Dim doc As MSXML2.DOMDocument60」と書き直したら無事動きました!

    バンザイヽ(^。^)ノ

    ■関係ないですが:

    MS-Accessと同じジャンルで売られ、よくAccessと比較される素人開発者向データベースソフトFileMakerの話。

    私、FileMaker12と13の開発経験が2年ほどありますが、開発がすご〜くし難いので勉強を止めました!
    FileMaker14、15とバージョンアップされる度に、少しは改善されたかなと機能チェックしていますが、使えない開発周りは全く改善されてるように見えません!

    その上で、驚くのが
    「すでにMS-Accessはライバルでない!最新版FileMakerは完全に超えている」的な
    書き込みが増えてること!?

    へぇ〜、そうなの:roll:

    FileMaker開発屋さんに、縦軸が送付先、横軸が商品リストのマトリクス表の受注処理システムの開発を依頼しても、きっと彼らは作れないと思います:-x

    FileMakerは非常に狭い制限の中ならGUIで簡単にデータベース開発できるソフト。
    でも、その前提から外れた情報処理は、ほぼ無力です!

    MS-AccessとFileMakerは、ライバルではありません。
    MS-Accessは、後にも先にもFileMakerよりずっと格上(=複雑なことが出来る)開発環境だと私は思っています。