No.2ベストアンサー
- 回答日時:
#1 です。
ちょいと長いですが。。。0. C:\images フォルダを予め作成しておく
1. [Alt]+[F11] で VBE を開く
2. [挿入]-[標準モジュール]
3. 下記のソースコードをコピペ
4. VBE を閉じる
5. 適当なセルにデータを入力し、そのセルを飛び飛びでも良いので
選択してから、[ツール]-[マクロ]-[マクロ]で実行
BMP(ビットマップ)ならこんな感じ。Jpeg や Gif でも書き出せるけど
少し複雑になります。
細かなエラー処理はしてません。
' // ソースコードはここから下
Option Explicit
' // 標準モジュール
' // Declareations --------------------------------------------------
Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" ( _
ByVal wFormat As Long) As Long
Private Declare Function OpenClipboard Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Declare Function GetClipboardData Lib "user32.dll" ( _
ByVal wFormat As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" ( _
ByRef lpPictDesc As PictDesc, _
ByRef RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, _
ByRef IPic As IPicture) As Long
' // Types ----------------------------------------------------------
Private Type PictDesc
cbSizeofStruct As Long
picType As Long
hImage As Long
Option1 As Long
Option2 As Long
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
' // Constants ------------------------------------------------------
Private Const CF_BITMAP As Long = 2
Private Const CF_PALETTE As Long = 9
' // ここがメイン処理部
Sub セルごとにビットマップで書き出し()
Dim r As Range
Dim sImgDir As String
Dim lImgCnt As Long
Dim p As IPicture
' // 画像の保存フォルダパス
sImgDir = "C:\images"
' // 終了条件:: 選択されているのがセル以外なら無視
If UCase$(TypeName(Selection)) <> "RANGE" Then Exit Sub
lImgCnt = 1
For Each r In Selection.Cells
' // ビットマップとしてクリップボードへコピー
r.CopyPicture Appearance:=xlScreen, _
Format:=xlBitmap
' // クリップボードのビットマップを Picture オブジェクトに変換
Set p = CreatePictureFromClipboard()
If Not p Is Nothing Then
' // BMPファイルを書き出す
Call SavePicture(p, sImgDir & "\image" & Format$(lImgCnt, "00000") & ".bmp")
lImgCnt = lImgCnt + 1
Set p = Nothing
End If
Next
' // フォルダを開く
Shell "explorer.exe " & Chr(34) & sImgDir & Chr(34), vbNormalFocus
End Sub
' // クリップボードのビットマップデータから Picture オブジェクトを作成
Private Function CreatePictureFromClipboard() As IPicture
Dim hBitmap As Long
Dim hPalette As Long
Dim uPic As PictDesc
Dim IID_IDispatch As GUID
Dim lRet As Long
Set CreatePictureFromClipboard = Nothing
' 終了条件:: クリップボードに該当データが無い
If IsClipboardFormatAvailable(CF_BITMAP) = 0& Then Exit Function
' 終了条件:: クリップボードからイメージハンドルが取得できない
If OpenClipboard(0&) <> 0& Then
hBitmap = GetClipboardData(CF_BITMAP)
hPalette = GetClipboardData(CF_PALETTE)
Call CloseClipboard
End If
If hBitmap = 0& Then Exit Function
With uPic
.cbSizeofStruct = Len(uPic)
.picType = 1
.hImage = hBitmap
.Option1 = hPalette
End With
With IID_IDispatch
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
lRet = OleCreatePictureIndirect(uPic, _
IID_IDispatch, _
0&, _
CreatePictureFromClipboard)
End Function
No.1
- 回答日時:
こんばんは。
> 保存したい文字を先にすべて入力しておいて、あとからセルごとに
> 保存できるとかいう方法
VBA を使えば可能ですけど、具体的にどのようにデータが並んでいる
のでしょうか?
また、「セルごと」というのは、ひとつのセルで画像1ファイル?
連続しない選択範囲ごと?
この辺を具体に補足して下さい。
この回答へのお礼
お礼日時:2007/06/15 23:54
早速のご回答ありがとうございます。
普通に文字だけを使用していて、グラフや画像などは一切貼り付けていない、単純な文字列のみを使用した形のデータです。
配置はAの列にズラーッとたて一列に並んでいます。
セルごとというのは、ひとつのセルで画像1ファイルです。
わかりにくい表現ですみませんが、こんな感じです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) EXCELマクロでandroidタブレットから取りんだJPEGファイルをうまくセルに貼り付けられない 2 2022/07/31 15:03
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
エクセル オートフィルタで絞...
-
【Excel】 セルの色での判断は...
-
セルをクリック⇒そのセルに入力...
-
excelのCOUNTIF関数で、『範囲=...
-
エクセルのセルの枠を超えて文...
-
EXCEL VBA セルに既に入...
-
セルの高さ(行高)を求めるには?
-
Excelでのコメント表示位置
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
EXCELのセルの中の半角カンマの...
-
公共建築工事 共通仮設費率 エ...
-
エクセルでオブジェクトを常に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで指定したセルのどれ...
-
【エクセル】IF関数 Aまたは...
-
対象セル内(複数)が埋まった...
-
エクセル 足して割る
-
Excelで数式内の文字色を一部だ...
-
貼り付けで複数セルに貼り付けたい
-
Excelでのコメント表示位置
-
セルをクリック⇒そのセルに入力...
-
EXCEL VBA セルに既に入...
-
excelのCOUNTIF関数で、『範囲=...
-
【Excel】 セルの色での判断は...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
(Excel)数字記入セルの数値の後...
-
Excelで、「特定のセル」に入力...
-
エクセルの一つのセルに複数の...
-
複数のセルのいずれかに数字が...
-
excelの特定のセルの隣のセル指...
-
数式を残したまま、別のセルに...
-
ハイパーリンクの参照セルのズ...
おすすめ情報