[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『棚割りソフト』(みさ)
スーパーマーケットの商品バイヤーをしています。 商品の棚割りをエクセルを使いあらかじめパックのサイズなどを全て登録しておくと 簡単に棚割りが作成できるものを作りたく相談なのですが良い知識ありましたら教えてください。
> 棚割りが作成できるもの
全く名案はありませんが、何かイメージはないのでしょうか? 簡単に検索すると、以下のようなものとか? http://www.hisakane.co.jp/tana.htm
(とおりすがり)
こちら↓の「Seek」が使えるかもしれません。
もともとは、必要な材料を切り出すのに一番効率的な 割付を検索するものですが、棚割りにも使えるかも しれません。
※はずしていたらすみません。 また、このソフトは一次元のみです。2次元、3次元 には対応してません。 (MARBIN)
>番号検索して の「番号」と言うのは何をイメージして居られるのでしょう?
例えば、新しいブックのSheet2にオートシェイプで四角を3つ書きます。 マクロの記録を実行して、作成した四角を順に選択すると 以下のようなコードが記録されます。 Sub Macro1() ActiveSheet.Shapes("Rectangle 1").Select ActiveSheet.Shapes("Rectangle 2").Select ActiveSheet.Shapes("Rectangle 3").Select End Sub
この時の「Rectangle 1」「Rectangle 2」「Rectangle 3」が 書いて居られる「番号」と言う事でしょうか? つまり、オートシェイプの名前。
この状態のシートを作って於くなら 例えば、Sheet1で以下のマクロを実行してみて下さい。
'------ Sub Test1() Dim i As Variant i = Application.InputBox("1〜3の値を指定して下さい。", Type:=1) If 0 < i And i < 4 Then Sheets("Sheet2").Shapes("Rectangle " & i).Copy ActiveSheet.Paste Else MsgBox "入力した値が不正です。" End If End Sub '------
こんな感じで、Sheet2の 指定された名前のオートシェイプを 貼り付ける事が出来ます。
実際には、もっと色々な処理が 必要に成ってくるとは思いますが。。。
(HANA)
それらの部分が >実際には、もっと色々な処理 の部分なのですが。。。 (他にエラー処理とかも)
色々な事は出来ると思います。 この辺りとか、基本的な部分だと思いますので 確認しておかれても良いかもしれません。 http://www.asahi-net.or.jp/~zn3y-ngi/YNxv212.html
他にも沢山色々な事が出来ますので、やりたいことがあったら 出来ると信じてググって見られても良いと思います。
ただ、私が想像する所だと 二つ目の図形は セルの左端ではなく 一つ目の図形の隣に寄り添わせて配置するのでないかと思いますので 図形の調整(R)→位置合わせ(S)で「図形(S)」を選んでおいて くっつけたい図形の側に持っていくのが 良いのではないかと思いますが。。。
セルが小さな升目状にしてあって 隣とぴったりはくっつけないのかな。。。?
てきと〜なコードですが こんな感じ?
'------ Sub Test2() Dim i As Variant, mr As String If TypeName(Selection) <> "Range" Then MsgBox "貼り付けるセルを選択して実行してください。" Else i = Application.InputBox("1〜3の値を指定して下さい。", Type:=1) If 0 < i And i < 4 Then mr = ActiveCell.Address Sheets("Sheet2").Shapes("Rectangle " & i).Copy ActiveSheet.Paste With Selection .Top = Range(mr).Offset(1).Top - .Height .Left = Range(mr).Left End With Else MsgBox "入力した値が不正です。" End If End If End Sub '------
あ、「後で移動」とかありそうなら 図形の調整(R)→位置合わせ(S) の設定は、やっておくと便利かもしれません。
念のため、こちらもリンクしておきます。 [[20061104163708]]『指定サイズでの印刷』(たぼん)
(HANA)
もう一つ作ってみました。
'------ Sub Test3() Dim i As Variant, x As Double, y As Double i = Application.InputBox _ ("1〜3の値を指定して下さい。" & vbLf & _ "最後に「-」をつけると、左に並びます。", Type:=2) i = StrConv(i, vbNarrow) If 0 < Val(i) And Val(i) < 4 Then If TypeName(Selection) = "Range" Then With ActiveCell x = .Offset(, IIf(Right(i, 1) = "-", 1, 0)).Left y = .Offset(1).Top End With Else With Selection.ShapeRange x = .Left + IIf(Right(i, 1) = "-", 0, .Width) y = .Top + .Height End With End If Sheets("Sheet2").Shapes("Rectangle " & Val(i)).Copy ActiveSheet.Paste With Selection.ShapeRange .Left = x - IIf(Right(i, 1) = "-", .Width, 0) .Top = y - .Height End With ElseIf i <> "False" Then MsgBox "入力した値が不正です。" End If End Sub '------
実行前にセルが選択されていたら、 選択していたセルの左下と貼り付けた図形の左下を合わせます。 【新図形】ル] (左詰でセルの上に重なります) 実行前に図形が選択されていたら、 選択していた図形の右下と貼り付けた図形の左下を合わせます。 [図形]【新図形】
例えば「1-」の様に最後にマイナスをつけて入力した場合 実行前にセルが選択されていたら、 選択していたセルの右下と貼り付けた図形の右下を合わせます。 [セ【新図形】 (右詰でセルの上に重なります) 実行前に図形が選択されていたら、 選択していた図形の左下と貼り付けた図形の右下を合わせます。 【新図形】[図形]
因みに、この掲示板ですが _←ここの所に半角スペースを入れると 改行がそのまま表示されるようになります。 プレビュー画面でご確認頂ければと思います。
(HANA)
MARBIN さん
はじめまして、supermab と申します。 Seekをご紹介いただきありがとうございます m(_ _)m
みささん
これは、組合せ最適化問題の、ナップサック問題という問題と同じ問題です。 せっかく、MARBIN さんにご紹介いただいたので、棚割用のExcelブックを作ってみまし た。 棚割のことは全く判りませんので、たたき台にでもなればと思います。
ダウンロードはこちらからどうぞ↓
http://supermab.com/files/shelf.zip
棚の幅、商品名、商品の幅、価値(重みを示す)を入力してから、計算実行ボタンを 押すと、マクロが動作します。 マクロは、与えられたデータを整数混合線形計画問題に置換して 同梱してあるフリーの線形解析ライブラリlpsolve55.dll を呼んで解析いたします。
よろしければ、ご利用ください。
(supermab)
("1〜500の値を指定して下さい。" & vbLf & _ "最後に「-」をつけると、左に並びます。", Type:=2) i = StrConv(i, vbNarrow) If 0 < Val(i) And Val(i) < 500 Then If TypeName(Selection) = "Range" Then With ActiveCell x = .Offset(, IIf(Right(i, 1) = "-", 1, 0)).Left y = .Offset(1).Top End With Else With Selection.ShapeRange x = .Left + IIf(Right(i, 1) = "-", 0, .Width) y = .Top + .Height End With End If Sheets("倉庫").Shapes("Picture " & Val(i)).Copy ActiveSheet.Paste With Selection.ShapeRange .Left = x - IIf(Right(i, 1) = "-", .Width, 0) .Top = y - .Height End With ElseIf i <> "False" Then MsgBox "入力した値が不正です。" End If End Sub この部分でエラーになりますSheets("倉庫").Shapes("Picture " & Val(i)).Copy どうしたらえらーを回避できますか? 同じくこのマクロもエラーになります。
With Selection
ActiveSheet.Shapes.AddTextbox( _ Orientation:=msoTextOrientationHorizontal, _ Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select End With Dim buf As String buf = InputBox("テキスト編集を起動します。" & vbNewLine & "閲覧の方はキャンセルを押してください ") If buf = "Text Box" Then Exit Sub Selection.Characters.Text = buf
With Selection.Font .Name = "HG創英角ゴシックUB" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .ReadingOrder = xlContext .Orientation = xlHorizontal .AutoSize = False .AddIndent = False End With End Sub おしえてもらえないでしょうか?宜しくおねがいします。(みさ)
下の方は分かりませんが 上の物は、2007で試してみましたが 別に問題なく動く様です。
エラーメッセージは、どの様な物が表示されますか? 「指定したアイテムが見つかりませんでした。」 であれば、付けてある名前の数字部分が 全角数字で入力されて居ないか、確認してみてください。
(HANA)
う〜ん、こちらでは出ないので何とも言いづらいのですが。。。
メッセージは違いますが、取りあえずこんなのがありましたので http://support.microsoft.com/kb/971594/ja Excel 2007 でマクロ機能やオートメーション機能を使用すると、 "メモリ不足です。完全に表示できません" と表示されて操作ができなくなる 確認してみて下さい。
ちなみに、私の2007はSP2です。
左上のボタン(Officeボタン)を開いて 下の方に「Excelのオプション(I)」がありますので、それをクリックして 左側の矢張り下の方に「リソース」がありますので、選択すると 右側の下の方に、バージョンが表示されます。
(HANA)
同じように図を挿入してみましたが、エラーは出ず。。。
>この画像のみがエラーになつてます? と言うのは オートシェイプならOKだけど、挿入した図はNG と言う事でしょうか?それとも いくつか図を挿入しているが、一つの画像だけNG と言う事でしょうか?
面倒ですが、オートシェイプの塗りつぶしとして その画像を指定してみると どうでしょう。
解決策ではなく「何とかして動かせる方法を探す」感じに成ってしまいますが。。。
画像が外に保存してあるなら、直接読み込むコードを 検討した方が良いのかもしれません。
(HANA)
すみません。 全く分かりません。
後学の為に教えて下さい。
>色々ためしましたが の中に >>オートシェイプの塗りつぶしとしてその画像を指定 も含まれていますか?
あとは、例えば すごい軽い画像を使ってみるとか。。。
(HANA)
えっと。。。 なんかずれてますね。
まぁ、コピー出来るように成った様で良かったです。
>半角スペースを抜いたらうごきました。 これって Picture の後ろに半角スペースが二つ入っていたのを 半角スペース一つにした って事ですか?
それで動くように成ったのなら それが問題だったのかもしれませんね。。。
因みに、画像名はエクセル任せになってしまいますが HTML形式で保存すると 一緒に出来る ブック名.filesと言うフォルダの中に それぞれの画像が保存されます。
大きさを変更した図を、別の所で使用したい 等と言った場合に 知っておくと、何かの役に立つかもしれません。
それから、もう一つのコードの方は 何をしたいコードなのか 説明が有ると良いと思います。 エラーが出る場所と、エラーメッセージも合わせて。
(HANA)
ActiveSheet.Shapes.AddTextbox( _ Orientation:=msoTextOrientationHorizontal, _ Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select End With Dim buf As String buf = InputBox("テキスト編集を起動します。" & vbNewLine & "閲覧の方はキャンセルを押してください ") If buf = "Text Box" Then Exit Sub Selection.Characters.Text = buf
With Selection.Font .Name = "HG創英角ゴシックUB" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .ReadingOrder = xlContext .Orientation = xlHorizontal .AutoSize = False .AddIndent = False End With なんとなくの結果ですが.ReadingOrder = xlContextを削除したらうごきだしました。 (みさ)
そうですね。。。 たぶん、その設定が変わることは無いと思いますので 設定しなくても大丈夫だと思います。 (ずいぶん勝手なこと言いますが。)
とにかく、動くようになって良かったです。^^
HTML形式で保存 と言うのは・・・
エクセルで名前を付けて保存するときの ファイル名(N) を入れる所の下に ファイルの種類(T) を選べるように成っていますが そこで、例えば「Webページ (*.html;*.html)」 を選んで保存してみて下さい。
例えば、ファイル名を「Book1」とした場合 Book1.htm と言うファイルと一緒に Book1.files と言う【フォルダ】が出来ます。 その中に、画像がファイルとして保存されています。 重なった物は、重なった状態で保存されるので注意して下さい。
そのファイルには他のシートに画像がコピー済みと思いますので 倉庫シートを選択した状態で「選択範囲(E):シート」の方を選んで 保存してみるのが良いかもしれません。
後は、過去ログにファイル名を変更するマクロとか有るので そう言った物も活用できるかもしれません。
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.